Kecy. Mam doma jak Arduino, tak nekolik ATmega8 + programator a slozitost se neda srovnavat. Tam kde staci zapojit USB kabel od arduina musite v pripade ATmega stahnout avr-gcc, software pro programator a minimalne hodinu se ucit jak to vlastne dat dohromady v podobe napr. makefile. Kde v arduinu pouziju digitalWrite, tak v avr-libc musim binarne pracovat s portama a nakonec po nekolika hodinach z toho dostanu pitomy blikani ledkou.
Za arduino da clovek cca 700–800kc a ziska tak pekny kus HW spolu s fungujicim softwarem a perfektni dokumentaci. Nejlevnejsi programator ATmega (kdo dneska ma paraelni port proboha?) stoji cca 500, za nepajive pole (muzete pouzit i karton, ale to proste neni ono) dalsi 300, k tomu musite sehnat spravny kabel od programatoru, dratky a par odporu, jen aby jste se nekolik hodin patlal s nastavovanim kompilatoru. Pokud nemate nekoho znaleho kdo by mohl v pripade nouze pomoct, je atmega + programator pro zacatecnika perfektni nocni mura.
btw: arduino se da pouzit i jako programator ostatnich avr (http://code.google.com/p/mega-isp)
Ono taky záleží, co s tím chcete dělat. Jako na hraní – souhlas. Vývoj aplikací s AVR – to už je jiná káva. Je to podobné, jako s přechodem od starter kitu k vývoji vlastního zařízení. Rozdíl je dle mého názoru v tom, že tak jednoduchá věc, jako AVR, snad ani starter kit nepotřebuje.
Jenže…
Na Arduinu se skoro nic nenaučíte. Je to taková hezká hračka pro dnešní povrchní lidi – prostě je to dělané tak, aby to zvládl i Pepa, který je dnes na průmyslovce, ale před lety by prolezl sotva učňák. Tím nekritizuji autory – cíl projektu splnili dokonale.
Pokud budete pracovat přímo s AVR, naučíte se něco o mikrokontrolérech, budete vědět, jak to opravdu pracuje. To už výšezmínění Pepové zpravidla nezvládnou – potřebují dnes nejen Arduino, ale už i přizpůsobit výuku na kdysi výběrových školách jejich mentálním schopnostem :-(
Jak to ze se nic nenaucite? Naucite se logicke mysleni, castecne Cpp, praci s portama, komunikaci pomoci ruznych protokolu etc.. Rozhodne je to podle me vhodna pomucka ktera nastartuje neci zajem a muze byt iniciatorem snahy dozvedet se vice.
btw1; Nevidim jediny duvod proc by nemohl programovat i Pepa .. programovani ma byt snad vysadou nejchytrejsich?
btw2; To ze je to jednoduche ma byt nevyhoda? To jako ze kazdy ma umet assembler? Myslim ze nedokazete prekousnout ze cislicova technika se dnes stava stale vice beznou veci se kterou pracuji i lide kteri by se k ni drive nemohli dostat. Znate portal http://hackaday.com/ Kazdy den se tam obevuji nove a nove zajmave veci o kterych si troufam tvrdit ze by nevznikly, kdyby prace se slozitou elektronikou nebyla cim dal jednodussi.
„programovani ma byt snad vysadou nejchytrejsich?“
Kéž by to tak bylo! Uvědomte si, že tihleti mentální retardi se pak hrnou do programování různých bankovních aplikací, nemocničních přístrojů apod. a to už zavání sakra velkým průserem. Před 20 lety by takovým lidem řekli „sorry, ale nemáš na to, nadělal bys víc škody, než užitku“.
Popisované vývojové prostředí pro Arduino ovšem není nijak pokročilé. Na hraní s piny a sběrnicemi stačí, ale už ne na rozumný návrhu skutečných jednočipových řešení. Neumí rozumně používat přerušení, neumí rozumné čekání na událost, a tak většina navržených aplikací používá nekonečnou smyčku. Takže například napsat program, který pravidelně čte data na vstupech, zpracuje je a pošle zpracovaný výstup na displej, je s ním téměř nemožné. O část událostí na vstupech přijdete.
Ale to celkem nevadí. Pokročilý uživatel sáhne po avr-gcc, které je v pozadí vývojového prostředí, nebo po assembleru. Znamené to ovšem zahodit všechny předpřipravené knihovny, a ovladač pro displej přepsat.
Pak ještě může (podle verze Arduina, kterou má) narazit na omezení hardware. Příkon uspaného procesoru je tak malý, že použitý stabilizátor může mít problémy udržet napětí.
Poslední problém se týká způsobu návrhu shields a statického propojení pinů. Vše se zdá krásné až do okamžiku, kdy potřebujete speciální funkci některého z pinů, které shodou okolností obsadil některý shield pro obyčejné I/O. Pak není cesty, jak propojení změnit, pro danou konstrukci obsadit jiné piny.
Již delší dobu přemýšlím o inteligentnějším řešení. Třeba kdyby existovaly standardizované konektory pro připojení SPI, UART, I2C k podobným deskám. Třeba pomocí kabelů a konektorů, jejichž provedení by reflektovalo specifika dané sběrnice (např. samostatná CS linka pro každou SPI periférii). Takový konektor by obsadil jediné možné piny dané sběrnice, a pak by si nějakým způsobem „ukousnul“ potřebné obecné GPIO linky.