Napsal: 15 dub 2019, 15:10
Atmel AVR je dle mého názoru lepší volbou. I když s PICy mám jen minimální zkušenosti (skončil jsem na tom, že jsou pomalé a složité a ten jednoduchý programátor taky neni moc user friendly a funguje jen na některých počítačích protože používal nějaké zjednodušení). Tedy s PICy jsem skoncoval stylem přišel jsem, viděl jsem, zkusil jse, odcházím. No ono za to spíš mohlo to, že se mi tehdy nahromadily studijní povinnosti a nebyl čas na nějkaké bastlení.
Když jsem se po 10 letech k bastlení vrátil, narazil jsem na jednu konstrukci, která využívala AVR. Z jednoduchého záměru, postavit si něco, co je v podstatě hotové včetně návodu, jak dostat program do AVRka se vyklubala zábava na delší dobu. (Jako obvykle nic neni tak jednoduché, jak se na první pohled zdá, použitý mikrokontrolér se už neprodával, namísto něj byl jiný, který bylo potřeba přepnout do kompatibilního režimu (a tedy překlouskat jeho datasheet, abych věděl jak), programoval se taky trochu jinak a tak jsem objevil ponny prog). Po úspěšném dokončení této konstrukce jsem si chtěl otestovat něco dalšího. Měl jsem totiž způsob, jak do MCU dostat program. Tak první takový pokus byl udělat program kde by byl jenom nop a skok na něj (napsal jsem to tehdy přímo ve strojovém kódu), to prošlo, tak dalším krokem bylo blikání ledkou, což jsem dělal v AVR studiu verze 4, tedy v assembleru.
Tyto věci se většinou programují v céčku, na což jsem později také přešel. Pascal je také možný, ale to už neni takový rozdíl. V assembleru si člověk musí hlídat všechno sám, pascal a céčko (ty rozdíly zase tak velké nejsou) zajistí spoustu věcí za programátora, což zase je někdy na úkor efektivity, takže aspoň u mikrokontrolérů není dobré ztratit ponětí o tom, jak se program přeloží, tedy to spojení s assemblerem (narozdíl od programování v počítači, kde je to většinou naprosto lhostejné).
Syntax céčka mi nepřijde zase tak odlišná. Až na nějaké drobné výjimky (třeba neexistují vnořené funkce nebo lze proměnné definovat klidně uvnitř programu) je logika naprosto stejná, pouze zapsaná jinými symboly (hodně se plete třeba porovnání = a == to první je v pascalu porovnání v céčku přiřazení (ekvivalent :=)). Doporučuju učebnici od Herouta http://shop.ben.cz/cz/110120-ucebnice-j ... 1-dil.aspx z té se dá céčko slušně naučit.
Arduino je výborné tím, že zejména jeho čínské klony jsou velmi levné, ale hlavně jsou dostupné doplňkové moduly. Pokud jde o uno, to se sežene kolem stovky, ale tam mega328 neni zase tak nepředstavitelný v kontaktním poli, mega2560 je už horší, tam je hotový celek výhodou (to snad ani v THT verzi neexistuje). Do kontaktního pole se dá sehnat nejvejš mega1284 (128kB paměti 40 vývodů, jinak dost podobné jako mega644). Na nějaké drobnosti stačí tiny13 (stojí 30 korun) a tiny2313. Já jsem to vzal od tiny2313 přes mega48, mega8, mega16, mega32, mega644 až k mega1284, možná ještě pár dalších po cestě. Arduinu jsem dlouho vzdoroval, ale když jsem zjistil, že komplet destička stojí míň než samotný šváb, tak jsem vzdorovat přestal.
Co teda mi vůbec nevyhovuje je arduino IDE. Samozřejmě ho z nutnosti a lenosti se skřípěním zubů používám. I když raději používám právě AVR studio, dokonce jsem u jednoho projektu si dal jako callback po úspěšném překladu nahrání do arduina nebo AVR s bootloaderem. V tom AVR studiu mám přecejenom lepší pocit, že to mám v ruce. Ono upravit knihovny tak, aby fungovaly v AVR studiu neni úplně triviální (byť jednodušší, než je vytvářet sám), takže si vždy chvíli počkám, jestli se určitá knihovna osvědčí, abych to s jinou nemusel absolvovat znova.
Co poradit, to záleží na záměru. Pokud chceš dosáhnout rychle cíle, asi nejlepší volbou je arduino. Osobně bych na to šel spíš oklikou a tedy první věcí by bylo pořídit si kromě kontaktního pole (dalo by se i pájet na univerzálním tišťáku) nějaké to jednoduché AVR a zkusit začít klidně v assembleru dostat ho pod kontrolu. On ten assembler člověka donutí se s tím MCU důkladně seznámit a přechod na vyšší jazyk je pak celkem jednoduchý. A pokud chce člověk využívat nějaké vestavené priferie typu časovačů nebo A/D převodníků, stejně si musí datasheet důkladně pročíst (i při použití hotových kusů kódu), no a nebo věřit tomu, že to komunita kolem arduina naprogramovala dobře.
Program do AVR se dá dostat třeba bootloaderem, ale stejně tam musí někdo naládovat ten bootloader. A na programování AVR se mi osvědčil SPI programátor na paralelní port v kombinaci s PonnyProg ( http://www.lancos.com/prog.html ). Paralelní port sice neni dneska už běžný, ale pořád se dá sehnat rozšiřovací karta s LPT porty (horší je to s windows7 a novějšími, kde se musí nějak něco upravovat (možná stahovat nějaký alternativní ponny prog), už je to dýl tak nevim přesně, ale v linuxu to je zatím bez probémů, ostatně v linuxu funguje i virtuální sériový port arduina bez nutnosti něco doinstalovávat).
Když jsem se po 10 letech k bastlení vrátil, narazil jsem na jednu konstrukci, která využívala AVR. Z jednoduchého záměru, postavit si něco, co je v podstatě hotové včetně návodu, jak dostat program do AVRka se vyklubala zábava na delší dobu. (Jako obvykle nic neni tak jednoduché, jak se na první pohled zdá, použitý mikrokontrolér se už neprodával, namísto něj byl jiný, který bylo potřeba přepnout do kompatibilního režimu (a tedy překlouskat jeho datasheet, abych věděl jak), programoval se taky trochu jinak a tak jsem objevil ponny prog). Po úspěšném dokončení této konstrukce jsem si chtěl otestovat něco dalšího. Měl jsem totiž způsob, jak do MCU dostat program. Tak první takový pokus byl udělat program kde by byl jenom nop a skok na něj (napsal jsem to tehdy přímo ve strojovém kódu), to prošlo, tak dalším krokem bylo blikání ledkou, což jsem dělal v AVR studiu verze 4, tedy v assembleru.
Tyto věci se většinou programují v céčku, na což jsem později také přešel. Pascal je také možný, ale to už neni takový rozdíl. V assembleru si člověk musí hlídat všechno sám, pascal a céčko (ty rozdíly zase tak velké nejsou) zajistí spoustu věcí za programátora, což zase je někdy na úkor efektivity, takže aspoň u mikrokontrolérů není dobré ztratit ponětí o tom, jak se program přeloží, tedy to spojení s assemblerem (narozdíl od programování v počítači, kde je to většinou naprosto lhostejné).
Syntax céčka mi nepřijde zase tak odlišná. Až na nějaké drobné výjimky (třeba neexistují vnořené funkce nebo lze proměnné definovat klidně uvnitř programu) je logika naprosto stejná, pouze zapsaná jinými symboly (hodně se plete třeba porovnání = a == to první je v pascalu porovnání v céčku přiřazení (ekvivalent :=)). Doporučuju učebnici od Herouta http://shop.ben.cz/cz/110120-ucebnice-j ... 1-dil.aspx z té se dá céčko slušně naučit.
Arduino je výborné tím, že zejména jeho čínské klony jsou velmi levné, ale hlavně jsou dostupné doplňkové moduly. Pokud jde o uno, to se sežene kolem stovky, ale tam mega328 neni zase tak nepředstavitelný v kontaktním poli, mega2560 je už horší, tam je hotový celek výhodou (to snad ani v THT verzi neexistuje). Do kontaktního pole se dá sehnat nejvejš mega1284 (128kB paměti 40 vývodů, jinak dost podobné jako mega644). Na nějaké drobnosti stačí tiny13 (stojí 30 korun) a tiny2313. Já jsem to vzal od tiny2313 přes mega48, mega8, mega16, mega32, mega644 až k mega1284, možná ještě pár dalších po cestě. Arduinu jsem dlouho vzdoroval, ale když jsem zjistil, že komplet destička stojí míň než samotný šváb, tak jsem vzdorovat přestal.
Co teda mi vůbec nevyhovuje je arduino IDE. Samozřejmě ho z nutnosti a lenosti se skřípěním zubů používám. I když raději používám právě AVR studio, dokonce jsem u jednoho projektu si dal jako callback po úspěšném překladu nahrání do arduina nebo AVR s bootloaderem. V tom AVR studiu mám přecejenom lepší pocit, že to mám v ruce. Ono upravit knihovny tak, aby fungovaly v AVR studiu neni úplně triviální (byť jednodušší, než je vytvářet sám), takže si vždy chvíli počkám, jestli se určitá knihovna osvědčí, abych to s jinou nemusel absolvovat znova.
Co poradit, to záleží na záměru. Pokud chceš dosáhnout rychle cíle, asi nejlepší volbou je arduino. Osobně bych na to šel spíš oklikou a tedy první věcí by bylo pořídit si kromě kontaktního pole (dalo by se i pájet na univerzálním tišťáku) nějaké to jednoduché AVR a zkusit začít klidně v assembleru dostat ho pod kontrolu. On ten assembler člověka donutí se s tím MCU důkladně seznámit a přechod na vyšší jazyk je pak celkem jednoduchý. A pokud chce člověk využívat nějaké vestavené priferie typu časovačů nebo A/D převodníků, stejně si musí datasheet důkladně pročíst (i při použití hotových kusů kódu), no a nebo věřit tomu, že to komunita kolem arduina naprogramovala dobře.
Program do AVR se dá dostat třeba bootloaderem, ale stejně tam musí někdo naládovat ten bootloader. A na programování AVR se mi osvědčil SPI programátor na paralelní port v kombinaci s PonnyProg ( http://www.lancos.com/prog.html ). Paralelní port sice neni dneska už běžný, ale pořád se dá sehnat rozšiřovací karta s LPT porty (horší je to s windows7 a novějšími, kde se musí nějak něco upravovat (možná stahovat nějaký alternativní ponny prog), už je to dýl tak nevim přesně, ale v linuxu to je zatím bez probémů, ostatně v linuxu funguje i virtuální sériový port arduina bez nutnosti něco doinstalovávat).