Chtel bych začit programovat v mikroporcesorech. Na BEN jsem si nasel knizku c pro atmel AT89S52. Bohuzel se uz tento typ neprodava nebo jsem uplne slepý. Muzete mi nekdo poslat odkaz, kde ho muzu koupit nebo spise nejaky jiny typ, ktery je jeho nahradou a teda kompatibilni s programatorem, softwarem atd.
Předem děkuji
v GME ho maji. Stale je to jeste bezne dostupne zbozi. gme.cz/cz/index.php?page=pro … 043353&p=1
Nicmene, jesli s mcu zacinas, jak pises, mozna by nebylo od veci popremyslet, jesli neni vhodnejsi se poohlednout po modernejsim jádře
Urcite by som Ti nedoporucoval zacinat s C pre 89S52. Nie ze by to neslo, ale velmi rychlo narazis na mantinely. Nebol to v BENe vypredaj ?
Skus radsej ATmega, alebo ARM7(daju sa zohnat dosticky s osadenym procesorom a pinmi v tvare DIL), alebo sa mozno najde aj nejaky vhodny PIC, ale v ich pripade Ti poradi niekto fundovanejsi.
Mne sa velmi dobre robi s Cckom s ATmega32 (ma 32kB programovej pamate, 2kB RAM, 8x10b AD, niekolko PWM, UART, WDT, EEPROM, vie sa aj sam preprogramovat, je aj v puzdre DIL40), konkretne s GCC v AVRstudiu. Oba produkty su oficialne zadara a bez obmedzeni. Ale na tuto temu tu bolo vela diskusii, tak sa skus popozerat po starsich prispevkoch a budes sa moct lepsie vo vybere zorientovat.
Jestli jsi s programováním (obecně) totální začátečník, tak bude pro tebe opravdu nejvodnější staré dobré jádro 8051. A začít na něm v ASseMbleru. Má to pár instrukcí, dá se to naučit za pár týdnů. Tyhle 8051 se v asm programují opravdu jednoduše, Cčko je pro ně akorát na obtíž.
89S52 se myslím ještě vyrábí, a není problém ho sehnat. Ani na Slovensku. Vhodná náhrada: dá se používat místo něj 89S51, má ale o něco míň funkcí (hlavně menší FLASH paměť). Lepší IO tohoto jádra je 89S53, bohužel tenkrát, když jsem si ho chtěl pořídit (když jsem ještě dělal s x51) tak nebyl k mání. Dnes je snad myslím i dokonce 89S55.
Až se naučíš pořádně s těmito IO, doporučuju AVR, taktéž od ATMElu. Mají velmi dobrý poměr cena/výkon/spotřeba, na rozdíl od PIC od mikročipu. Ty sou neskutečně předražený (můj názor).
Pokud chceš s kontroléry dělat jen hračičky jako blikátka, pípátka a další kravinky, můžeš zkusit PIC.
Pokud chceš ale programovat solidní věci, jako přehrávače mp3/wav/mod, dataloggery, čtečky karet (HDD, CDROM), atp, bude lepší začít s x51 a potom přejít na AVR.
Vím, proč to říkám, sám jsem takto začínal.
Pro x51 doporučuji ASM, nic jiného, nemá to význam. Pro x51 je ještě vhodný PAscal, nemám ale zkušenost.
Pro AVR doporučuji začít v ASM, naučit se v ASM slušně programovat, a až POTOM přejít k C. Obráceně to moc nejde, nemá to smysl. Znaslost ASM se vyplácí, jelikož člověk pak ví, co daný procesor bude dělat, co se skrývá za příkazy Cčka, a proto bude i snažší optimalizování.
Pokud tedy ses již rozhodl pro 89S5x, volba to není špatná. 8051 se používají hojně i dnes, řídí nám třeba v Praze výhybky pro tramvaje, semafory,…
Mohu doporučit velmi dobrou webovou stránku o 8051. Podle této stránky jsem se kdysi učil - naprostá spokojenost.
Udělám tu takovou menší reklamu: dhservis.cz
Ze začátku jsou halvně největší problémy, jak dostat program do jednočipu. Velice úspěšně jsem používal (a stále používám):
jan16.czela.net/index.php?id=19&n=jak-naprogramovat-mikrokontroler-rady-89s-isp
Přeji mnoho úspěchů, nenech se odradit začátkem!
ARM7 není zrovna moc dobré, pro začátečníka, který vživotě neprogramoval. C čko je pro absolutní začátečníky taky oříšek, co jsem si všiml.
Prosim, aky ma zmysel odporucit ucenie sa ASM s x51 ak je nasledne doporucena praca s AVR a tiez v ASM?
Mozno by potom bolo dobre, keby buduci programator na PC najprv programoval ZX Spectrum, lebo “sa mu to bude hodit” a ked sa to nauci, potom nech prejde na to PC.
A este (opat) k teme ASM vers. C. Znalost ASM nie je na zavadu, nie je vsak VOBEC NEVYHNUTNA pre programovanie procesora v C.
S tym ARM7 sulasim, chcelo by to omnoho viac predbezneho studia (ktore moze aj odradit), ale potom sa s tym daju robit vacsie divy
Zmysle to má v tom, jaké mám zkušenosti. Již 5 lidí jsem zaučoval programování procíků, většině se chtělo po těch lepších samozřejmě (AVR). AKorát to tak nějak vždycky ztroskotalo. (a to se AVR začínalo v C i v ASM), proto jsem je všechny odkázal na x51, všichni doposud spokojení, 2 z nich se (po cca půl roce) chystají na AVR.
Nevyhnutelnost spočívá v tom, že většina nedokáže napsat program v C tak, aby se obešel bez zpoˇždovacích smyček v hlavní smyčce programu, a když vidim ti smyčky for od 1 do 1000000, kdy smyčka neprovádí žádný příkaz {nic}, tak je mi na blití.
Tak apsoň ať to umí splácat pomocí hezké úhledné vnořené zpožďovací smyčky pomocí vkládaného ASM.
(DJNZ/BRNE)
Pro programovani v C asm znat nemusi.
Co se tyka optimalizaci, neni na tom GCC zrovna spatne. Pokud si nechas prelozit program v C a pak studujes, co to vytvorilo, rucne to upravujes a funguje to, tak to jsi teda frajer
Potreboval jsem jednou cvicit s pinama maximalni moznou rychlosti kterou mcu zvladne. Nechal jsem to prelozit pri ruznych optimalizacit a koukal, co to dela… Dospel jsem ke zjisteni, ze uz s optimalizacema o3 to ani rucne nenapises rychlejsi nez to vytvoril GCC. Jeste mi navic GCC ukazalo instrukce, o kterych jsem ani nevedel, ze existujou
Bez asm se da bezproblemu obejit, staci jen znat zpusoob prace C a vliv ruznych klicovych slov, kteryma se da lecos urychlit a poladit. Co naopak JE potreba je schopnost pochopit datasheet psanej v anj…
Pro to, aby si mohl zacit hrat s mcu mu staci z C znat jen zlomek C (par cyklu, podminky, bitove operace, volani funkci, viditelnost promennych), mit datasheet procesoru a muze se vrhnout na vec. O pointerech, kterych se zacatecnici boji, nepotrebuje mit zpocatku ani paru.
Je-li jeho cilem C na kontrolerech, pres asm a x51 by ho cekala pomerne dlouha cesta… Brzy by totiz zjistil, ze jsou to lemry a cela architektura, kterou se naucil, je mu k nicemu a zbyde mu jen ten zpusob uvazovani nutny pro praci s mcu. Ten ale nemusi cvicit na obstaroznich x51.
Co se tyka spozdovcich smycek v main… Co na to rict… Kdyz nekoho ucis programovat, mel bys ho misto takovyhle uchylnosti naucit pouzivat preruseni. Takovy snizeni spotreby uspanim procesoru neni k zahozeni Mimo jine se tu nekde povaluje programek, kterej tu smycku (v asm) vygeneruje a s pomerne slusnou presnosti (desetiny procent).
že jsou x51 obstarožní bych bejt tebou neříkal, PICy nejsou o moc lepší. Místo 12ti se dělí hodiny 4mi. DOrovnává to ale předraženost těchto obvodů. Takže to vyjde na stejno. Jen ty x51 jsou víc user friendly.
začít s AVR na ASM/C problem pro vetsinu je, nebot neni dostatek slusnych materialu pro studium v češtině. Většina začátečníků má problém ser v datasheetu vůbec orientovat. Pokud neni problémem angličtina, a studium zahraničních webů, tak problém se začátky na AVR v ASM ale ani s C nejsou problémy.
preco slovicko “uz”, ved uz nic rychlejsie tam ani nie je -Os je optimalizacia na dlzku kodu, obcas kupodivu vygeneruje i rychlesi kod, ale nemusi to byt pravidlo. A urcite sa da v ASM napisac casto uspornejsi a rychlejsi kod ako ten, co vygenerujge prekladac. O tom niet pochyb. Ved preco by potom program vygenerovany z C bol v konecnom dosledku i 2-3x vacsi a i 2-3x pomalsi ako v cistom ASM (ale len vtedy, ak to niekto naozaj vie, nie nejaky zaciatocnik, ani stredne pokrocily). Ale namaha je i o 5-10x mensia ako v tom ASM. A to uz je dovod, preco treba brat C vazne i na male (nemyslim PIC, tam sa skor divim, ze sa za ten pomer vlastnosti/cena vobec predavaju ) jednocipy.
Pisat casove slucky v cistom C je naozaj o hubu a nikomu by som to nedoporucoval. Praca s prerusenim moze byt pre zaciatocnika tazko pochopitelna a nezrozumitelna, tomu verim.
Ale ked uz ucite zaciatocnikov
DDRx = 0xff;
for( ; ; ) {
PORTx = 0xff;
{slucka}
PORTx = 0x00;
}
preco ich nenaucit miesto DJNZ/BRNE zapnut casovac, vlozit predvolbu
a testovat v cykle pretecenie toho casovaca, alebo COMPARE MATCH? Je to rovnako zlozite ako cvicit s pinmi , pripadne testovat ich stav. Naco su komu (zaciatocnikovi) v AVR cakacie cykly?
// pre ATmega 644p
#define PREDELICKA 5 // 0 - casovac vypnuty, 1 - CLK, 2 - CLK/8, …, 5 - CLK/1024
#define CASOVA_SLUCKA 20000
#define OCF1A 0x02
#define MOD_CTC 0x08
TCCR1B = MOD_CTC + PREDELICKA;
OCR1A = CASOVA_SLUCKA;
for( ; ; ) {
if (TIFR1 & OCF1A) {
TIFR1 |= OCF1A;
/*
samotna cast BLIKATKO
ak Xtal = 14.7456MHz, potom cast BLIKATKO prebehne 1x za 0.72 sekudy
*/
}
}
// program som pisal z hlavy, tak ma prosim nekamenujte, ak som spravil preklep, dakujem
Uplne suhlasim s tym, ze pre pracu v C staci vediet naozaj len zlomok z celeho C a naviac je to len zlomok oproti vedomostiam z ASM. Opat hovorim, znalost ASM nie je na zahodenie, ale ani nahodou nie je nevyhnutna.
Na co sou čekací cykly? Třeba na to, když máš obsazený všecky časovače už něčim jinym. Třeba díky PWM.
Ale i tak neni problém pověsit se na časovač
To je pravda, dá se bez nich obejít, ale to, co nebude v hlavním těle programu ti přibude v přerušení. Toho se nezbavíš.
Jinak koukám že máš n PIC stejný názor jako já
Zaciatocnik? Obsadene VSETKY casovace napr. kvoli PWM? A nerozumie preruseniu a preto si musi pisat cakaciu slucku v ASM lebo v C je to pakaren (s cim vrelo suhlasim a preto tiez nedoporucujem) a ma sa preto ucit ASM na x51?
Ja som to pochopil tak, ze ASM odporucujes zaciatocnikom preto, aby si lahko a prehladne spravili napr. blikatko a presnejsie zadefinovali periodu blikania a nie preto aby pisali kratsi a rychlejsi kod. Ale mozno so Tvoje predchadzajuce prispevky nespravne pochopil. Inak ak by sa casovac spracovaval cez prerusenie - tym by som ale zaciatocnika fakt nezatazoval - na kode sa usetri ta samotna cakacia slucka s “vyplnou” pre casove oneskorenie. Pod prerusenim staci mat iba samotny kod, ktory sa ma cas od casu realizovat. Takze pouzitim prerusenia sa programator “zbavi” kodu na testovanie podmienky ubehnutia casu (ergo prebehnutia daneho poctu cyklov, co je ekvivalent casu). Ale o velkost kodu tu myslim naozaj nejde.
Ved na ne sa snad ani iny nazor mat neda. Ale aj tak potesi, ze nie som jediny. Vsak aj zasnem nad tym mnozstvom novych konstrukcii na PICoch. A tie potom bohuzial lakaju novych ludi do rad PIC-karov. Par krat za mnou niekto prisiel, ze videl to a to a bolo to na 16F84 a on by si chcel s tymi PICkami nieso spravit, lebo je to take zaujimave. Stacilo zvacsa 22-27 minut a dotycny si u mna na zelenej luke spravil prvy projekt “blikatko” v C na ATmega. Naletoval Xtal 2xC, 5xR, 1xLED, zasunul PonyProg a uz to slo. A zaroven dostatocne pochopil rozdiel oboch platforiem vratane ceny.
Netvrdim, ze je PIC zly procesor, sam som na nich niekedy robil, ale preco pouzivat stary funkcny mobil, ked mozem mat v akciovej cene za korunu mobil s daleko viac moznostami? Dovod moze byt iba jedniny a to je zvyk a pracovne navyky. Tomu ja dobre velmi dobre rozumiem. Ale u uplneho zaciatocnika?
Potom uz moze byt na vine len slaba propagacia. A to uz je pripomienka skor do vlastnych radov
Jak to spolu souvisí? vždyť x51 PWM ani nemají
Ty doporučuju jen proto, že jsou pro pochopení a pro začátek opravdu jednoduchoučké. 2 měsíce mi trvalo než se mi do 89S51 podařilo dostat program, po té, co jsem sestrojil funkční programátor, to šlo jak po másle. Za 14 dní jse měl hotový měřič postřehu s 4x 7seg LED displejem do multiplexu, a za měsíc jsem programoval hodiny/stopky na LCDčku i s budíkem.
AVR má řek bych spíš než velkou propagaci, tak má zajímavou propagaci.
Nic podobného u mikročipu jsem neviděl: youtube.com/avrtvtube
Viem, je to haluz maju aj vlastny komix.
Ahoj, diky za vase postrehy.
Jako programator nejsem začátečník, dokonce jsem programoval v asembleru 8051 pouze na středním, takže nejaké základy mám, ale zdálo se mi to takové kostrbate. Umím programovat v C nebo v basicu, proto bych rád využil tyto znalosti.
Výše jmenovaná knížka C pro kontrolery atmel at89s52 se mi zdála po stránce začátečníka jako vhodná z důvodu popisu konstrukce programátora, testovací desky a vlastního programování.
S čím mám teda začít, jakou knížku koupit?
Budu vděčný za vaše připomínky
na zaklade mojich skusenosti ti mozem doporucit:
www. ben . cz
polozky pre AVR pre C i pre ASM
121130
121251
121139
121135
121120 doporucujem
121125
121099 doporucujem
a dalsie
Co sa procesora tyka, urcite nezacinaj s nicim mensim ako s ATmega32 (je aj v DIL40). Ten cenovy rozdiel medzi mega32 a mega16, pripadne mega8/88 je minimalny a mas dost Flasky, RAMky i EEPROMky a hlavne si mozes program debugovat priamo v procesore. Kde na to ma taky 89S52.
Ak mas v kompe este LPT, tak ti na programovanie doporucujem PonyProg. stiahnes ho zo stranky:
Je jednoduchy, podporuje vela typov, okrem AVR i EEPROM a dokonca i PIC
Ale s prevodnikmi USB/LPT Ti fungovat nebude. Je trochu pomaly. Ak sa nebojis co to investovat, kup si DRAGON (cca 1500,-Sk). Do ATmega32 podporuje i ISP i JTAG na programovanie(velmi rychle) i na debugovanie.
To debugovanie priamo v procesore moze byt pre teba zaujimave, ale urcite nie nevyhnutne. Ja by som zacal s tym PonyProgom-ak mas LPT. Pri PonyProgu pozor na to, ze ak zakliknes FUSE, znamena to, ze sa FUSE v procesore nastavi na nulu (ENABLE FUSE). Obcas sa niekto najde, co to pose** a potom sa divi. Inak to nastudovanie, ako sa procesor spravne naprogramuje ta neminie pri vyere lubovolneho procesora.
Ak nechces do toho C vela investovat (respektive nic) a nechces porusovat autorsky zakon, potom sa sustred hlavne na GCC pre AVR (WinAVR)
Je oficialne zadara bez obmedzenia, ma slusnu podporu, velmi vela materialu na webe (potrebna minimalna znalost anglictiny aspon typu if-then-else-end ) celkom dobre pouzitelny prekladac (porovnaval som s ICC, ICC vo verzii profesional dopadlo horsie ). S nejakymi osekanymi 4kB free verziami C-cka by som sa ani nezacinal, lebo co trochu vacsi projekt spotrebujes 8-12kB a potom budes zhanat nejaky crack, alebo platit za vacsiu verziu.
uplne skvely a prehladny rychlokurz pre GCC na AVR je na
mikrocontroller.net/articles … C-Tutorial
je v nemcine, ale z obrazkov, nazvov registrov a kusov kodu (ten je v C, nie v nemcine ) sa vysomari snad kazdy (otazka motivacie). Ale je to naozaj velmi pekny strucny a prehladny material. Snad by sa niekto nasiel, co by to spravne prelozil do zrozumitelnejsieho jazyka.
GCC sa da velmi pekne priamo integrovat do AVRstudia - ktore je tiez oficialne zadara. Integruje sa don i ten DRAGON. Takze potom si v jednom prostredi a len klikas po ikonkach. Ale su aj odporcovia tekehoto riesenia.
Urcite sa tu este niekto ozve s jeho skusenostami a doporuceniami, tak si len spravne (pre teba) vyber.
Vo vseobecnosti ti doporucujem
Diky za info, tak vas kluci poslechnu pujdu do AVR snad to nejak pujde. Držte mi palce
A co nejaky jednoduchý vývojový kid?
Skus googlit
ok1fmf.net/phprs/view.php?nazevc … 2007020008
hw.cz/Firemni-clanky/Koala/ART10 … s-AVR.html
atd. atd. atd.
a este sa naslo
Pokud jak řikáš máš zkušenosti s 8051 ( = 89S52, ale plus pár vylepšení), tak je dle mého názoru zbytečné, se 8051 zabývat znovu, ale C.
tim pádem se snad shodnu s ostatními, že pro tebe budou nejvodnější AVR, buďto na ASM nebo C.
Já dělám AVR v ASM, Cčko pro procíky se teprv budu “učit”, ale zatím zůstávám u ASM. Na prográmky typu pošli něco po uartu mi to zatim stačí Až se dostanu dál, uvidíme
slusnej programator lze sehnat i na pk-design.net/HtmlCz/ProgCables.html Stoji 700,- je do usb, podporuje ISP, JTAG (JTAG ICE v avr studiu).
Nejjednodušší startkit je prostě nepájivé kontaktní pole, v něm procík, a připojíš si k němu kam co třeba. Je řek bych zbytečné, kupovat něco, co lze takto lehko s výhodou nahradit.