Ktorý jednočip zvoliť ? PIC, ATmel...
Moderátor: Moderátoři
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).
-
- Příspěvky: 2551
- Registrován: 13 zář 2005, 02:00
Zaoberať sa jednotlivými mikroprocesormi a ich programovaním má zmysel len pri sériovej výrobe, alebo pri nejakých veľmi špecifických požiadavkách, ako je napríklad veľmi nízka spotreba atď.. Pri projektoch v jednotkách kusov je na prvom mieste Arduino. 99% projektov je riešiteľných pomocou Arduino. Riešiť niečo iným procesorom, len preto, aby som ušetril zopár centov, je strata času.
Ďalšia vec, ktorej by som sa vyhol, sú monochromatické matricové displeje (také tie so zeleným či oranžovým podsvietením). Za porovnateľnú cenu sa totiž dá kúpiť farebný dotykový Nextion, ktorý ma nižšie nároky ha HW aj SW. Šetrí to čas a teda aj peniaze. A výsledný produkt vyzerá oveľa atraktívnejšie.
Taktiež neodporúčam Arduino Due. Ak nestačí Arduino Uno, tak treba použiť viac kusov Arduino, alebo potom už sa oplatí Raspberry Pi. Prípadne kombinácia Raspberry Pi s Arduino.
Ďalšia vec, ktorej by som sa vyhol, sú monochromatické matricové displeje (také tie so zeleným či oranžovým podsvietením). Za porovnateľnú cenu sa totiž dá kúpiť farebný dotykový Nextion, ktorý ma nižšie nároky ha HW aj SW. Šetrí to čas a teda aj peniaze. A výsledný produkt vyzerá oveľa atraktívnejšie.
Taktiež neodporúčam Arduino Due. Ak nestačí Arduino Uno, tak treba použiť viac kusov Arduino, alebo potom už sa oplatí Raspberry Pi. Prípadne kombinácia Raspberry Pi s Arduino.
Tak to bych chtěl vidět Nextion 2.4" za cca těch 110,- co stojí 2,4" TFT. Navíc každý se hodí na něco úplně jiného. Např. už jenom kvůli spotřebě ...samec píše:Ďalšia vec, ktorej by som sa vyhol, sú monochromatické matricové displeje (také tie so zeleným či oranžovým podsvietením). Za porovnateľnú cenu sa totiž dá kúpiť farebný dotykový Nextion, ktorý ma nižšie nároky ha HW aj SW. Šetrí to čas a teda aj peniaze.
Tak je to už asi dávno, čo som hľadal nejaký displej pre Arduino, lebo výber a ceny si pamätám asi takto:
https://www.gme.sk/lcd-i2c-display-20x4
V českom gme je ponuka úplne iná.
Nuž asi už aj v Ulambatare je lepšie ako na Slovensku.
https://www.gme.sk/lcd-i2c-display-20x4
V českom gme je ponuka úplne iná.
Nuž asi už aj v Ulambatare je lepšie ako na Slovensku.
Určitě to není cílové použití (pokud ta ledka nemá blikat nějak specificky), ale něčím se začít musí. A s každým procesorem se začíná právě blikáním ledkou. Zatím co jsem se seznamoval i pracovně s několika procesory, vždy jeden z prvních examplů bylo něco jako led blinking. Ono to vypadá sice naprosto primitivně (přinejmenším zvenčí), ale už jenom to, že za tím může být několik různých technik jak udělat tu prodlevu mezi rozsvícením a zhasnutím (kýbl nopů, časovač, event manager ...) a že ta ledka může být rozsvícená nejen přímým zápisem na port, ale i od nějakých periferií, v přerušení...masar píše:Arduino na blikání ledky? A proč ne už zrovna RaspBerry? Si se zbláznil?
Já jsem ve svém popisu úplně pominul několik procesorů, se kterými jsem se seznamoval ať už ve škole (8086, 80196, 8051) nebo v zaměstnání (56807, omap107), ale to je něco úplně jiného. To se koupí vývojová sada (vývojová deska, programátor, potřebný software) za pár desítek tisíc případně rovnou celý systém za milion, to se nic nebastlí (teda aspoň ne pokud jde o procesor, samozřejmě to, co má ten procesor řídit se vyrobit musí). Je to úplně jiné programování i když jak v čem. No ale i tady se musí začínat s ledkou (a případně osciloskopem), těžko připojíte nějaký signál rovnou na spínání tranzistoru, když si nejste jistý, že ho máte plně pod kontrolou, to by taky mohlo skončit velkým třeskem.
Nevím jestli být tak tvrdý k arduinu, na výuku programování opravdu neni jeho vývojové prostředí tím nejlepším, třeba protože v něm jde jenom slepovat hotové moduly (pokud chce člověk zasáhnout do toho modulu (naposledy jsem to potřeboval, když jsem si chtěl upravit několik písmenek na displeji na který jsou generována softwareově), musí to udělat ručně, klidně i v textovém editoru arduina, ale neni to jako v avr studiu, že bych poklepal na identifikátor funkce a rovnou se mi otevřelo místo, kde se nachází (klidně i v knihovně) a já tam mohl zasáhnout, ne musí se to hledat něke utopené). Programování je samozřejmě především vhodným slepováním hotových kousků s nějakou logikou, ale ne vždy se vystačí s tím, co je hotové (to se ještě dá řešit doplněním do základního programu, knihovna se z toho dá udělat později kdykoliv), nebo hůř to hotové potřebuje nějakou drobnou úpravu (a v tom případě nastává detektivní práce na téma, kde a jak je to definované). Ale zase hardware, ať už jde o základ nebo o další moduly, alespoň pokud jde o klony je velmi levný, pro začátečníka, který má hluboko do kapsy naprosto ideální.
Já nevím,záleží co chceš dělat pokud si jen hrát tak to arduino,pokud do toho chceš jít hlouběji tak arduino určitě ne. Za tenhle názor mě dneska někteří nebudoi mít moc rádi ale pokud se chceš MCU učit programovat tak pro začátek bych ti poradil sice tomu věnovat víc času a úsilí a zkusit napsat aspoň několik jednoduchých věcí v asembleru to pomůže zjistit jak ty mcu vlastně makaj a dá to větší vhled,no a kterej MCU ? To je těžký ale asi takovej se kterým ti někdo v okolí dokáže poradit ja začínal s PIC od základu sám a třeba jen rozblikat ledku mi chvilku trvalo,zase na psaní větších programů v asm PIC moc nedoporučuju protože to bankování je šílený.. Zase na druhou stranu se mi líbí že MPlab má simulátor a kupu věcí se v něm dá odzkoušet aniž bys musel mít připojenej nějakej HW jestli to má i nějakej vývojovej nástroj pro AVR to nevím tam mě vždycky děsily ty pojistky.Jinak vyšší jazyk pro mcu asi C zase podle toho co... na PICy je plná verze kompilátoru placená a ta free udajně przní kod na AVR je komplator zdarma.Ještě ti nabídnu alternativu v podobě MSP430 od Texas instruments tam je vývojový prostředí s C kompilerem taky free ale zas TI málokterej čip dělá v DIP pouzdru a většinou jsou pouze na 3.3V
- weed_smoker
- Příspěvky: 2675
- Registrován: 02 pro 2011, 01:00
- Bydliště: Jaroměř
Taky jde o to,který procesory jsou do budoucna perspektivní,aby se dal navyknutej programovací jazyk používat co nejdýl.Pokud se k tomu jednou vrátím,tak asi AVR a ASSEMBLER (začínal jsem na x51).Pokud se tím mám zabývat,koupil bych si po "tyči" od každý verze a zkoušel je používat,nakonec bych používal 2-3 typy.Pokud bych se tomu měl věnovat vážně a "cpát to doma do všeho",tak už bych koupil univerzální profi programátor s paralelním režimem a ZIF paticí (třeba ELNEC,DATAMAN nebo Xeltek).
Arduino je na hraní,to raspberry je spíš běžnej spotřebič třídy III (přehrávač,internetový relé,plc) s normální životností jako třeba PC.Ani jedno z toho není,narozdíl od MCU,vhodný k vestavbě do vlastního zařízení(a vůbec ne do něčeho,co bude v náročnějším prostředí).
Arduino je na hraní,to raspberry je spíš běžnej spotřebič třídy III (přehrávač,internetový relé,plc) s normální životností jako třeba PC.Ani jedno z toho není,narozdíl od MCU,vhodný k vestavbě do vlastního zařízení(a vůbec ne do něčeho,co bude v náročnějším prostředí).
Nejenom na hraní s celou rodinou ATMELů je dobrý ATATMEL-ICE, bez krabičky a snadno vyrobitelné bižuterie kolem je to za rozumné peníze. Dá se s tím programovat a ladit od tinyAVR přes XMEGA až po ARM.