Ktorý jednočip zvoliť ? PIC, ATmel...

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
mluno
Příspěvky: 227
Registrován: 18 dub 2011, 02:00
Bydliště: Benešov (u Prahy)

#16 Příspěvek od mluno »

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).

termit256
Příspěvky: 10071
Registrován: 06 pro 2007, 01:00

#17 Příspěvek od termit256 »

Pokud to mysli s programovanim vazne, zapomen na 2 veci. Arduino a nepajive pole.

petrfilipi
Příspěvky: 2551
Registrován: 13 zář 2005, 02:00

#18 Příspěvek od petrfilipi »

No a ještě poslední moji radu - dej si jako cíl nějaký konkrétní projekt. Třeba teploměr. Čidlo 18B20, procesor, displej. A na tohle jsou super ty vývojové desky. Máš tam vše osazené (možná na jiných pinech než v reálné aplikaci, ale to neva) a jen programuješ.

Petr Filipi

Uživatelský avatar
samec
Příspěvky: 3692
Registrován: 19 pro 2017, 01:00

#19 Příspěvek od samec »

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.

masar
Příspěvky: 12295
Registrován: 03 pro 2005, 01:00

#20 Příspěvek od masar »

Arduino na blikání ledky? A proč ne už zrovna RaspBerry? Si se zbláznil? Tady už nejde o peníze, ale o selský rozum...To, že je něco levné, ještě neznamená, že je to vhodné na všechno.
:wink:

Uživatelský avatar
samec
Příspěvky: 3692
Registrován: 19 pro 2017, 01:00

#21 Příspěvek od samec »

Až budem mať doma polkilový diamant a cena diamantov klesne na cenu železa, tak ním kľudne budem rozbíjať orechy.

masar
Příspěvky: 12295
Registrován: 03 pro 2005, 01:00

#22 Příspěvek od masar »

Ano, něco podobného jsem viděl v kinech. V jednom případě malý kluk mlátil ručním granátem o pařez (Vlčie diery) a v druhém případě to bylo ve filmu Planeta opic. V prvém případě neznalost, ve druhém idiocie.
:wink:

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#23 Příspěvek od FHonza »

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 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ě ...

Uživatelský avatar
samec
Příspěvky: 3692
Registrován: 19 pro 2017, 01:00

#24 Příspěvek od samec »

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.

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#25 Příspěvek od FHonza »

Odkaz je ale na znakový displej, Nextion rozhodně znakový displej není

Uživatelský avatar
mluno
Příspěvky: 227
Registrován: 18 dub 2011, 02:00
Bydliště: Benešov (u Prahy)

#26 Příspěvek od mluno »

masar píše:Arduino na blikání ledky? A proč ne už zrovna RaspBerry? Si se zbláznil?
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í...

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í.

Uživatelský avatar
nop
Příspěvky: 158
Registrován: 18 kvě 2007, 02:00

#27 Příspěvek od nop »

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

Uživatelský avatar
weed_smoker
Příspěvky: 2675
Registrován: 02 pro 2011, 01:00
Bydliště: Jaroměř

#28 Příspěvek od weed_smoker »

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í).

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#29 Příspěvek od FHonza »

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.

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“