Portál AbcLinuxu, 30. dubna 2025 14:00
V tomto blogpostu jsou popsány dvě věci - jak použít Arduino jako programátor pro rodinu AVR a jak použít programy z Arduina v ATmega8-16PU bez nutnosti bootloaderu a dalších opičin.
Arduino mám už nějaký ten pátek a musím říct, že je to skvělá věc. Stovky knihoven, jednoduché, přesto mocné a snadno pochopitelné API, zabudovaná podpora USB, příjemné, multiplatformní IDE .. co víc si přát? Jediný jeho "problém" je cena. Přeci jen stojí nemalé peníze a tak není úplně optimální ho zabudovávat do projektů na trvalo.
Naštěstí existuje způsob, jak tento problém odstranit - nepoužívat celé Arduino, ale jen samotný čip s regulátorem napětí. Je jasné že přijdete o možnost komunikace s počítačem, ale to se mi nezdá jako nevýhoda - předpokládám že na Arduinu program ozkoušíte a pak ho již funkční vpálíte do standalone ATmegy. Doma se mi už delší dobu válí pár ATmega8-16PU ještě z doby kdy stály cca 70kč, takže to budu demonstrovat na nich. Pokud je nemáte, můžete klidně použít jejich novější verzi - ATmega88, nebo něco výkonnějšího.
Celý postup se dá rozdělit do těchto kroků:
Na začátku je zapotřebí zapojit obvod podle následujícího schématu:
Dál následuje přeměna Arduina na programátor. Jedná se o velice jednoduchý krok - stačí si stáhnout mega-isp sketch. Poté co jej flashnete do Arduina se z něj stane primitivní, ale pro naše účely postačující programátor.
Protože Arduino IDE normálně používá jiné čipy, je zapotřebí mu sdělit že chceme kompilovat pro náš mikroprocesor. Ve složce arduino-00{V}/hardware/arduino (kde {V} je současná verze, v době psaní článku 22) najdete soubor boards.txt. Otevřete ho a přidejte na konec cosi jako:
atmega8noxtal.name=ATmega8-noxtal @8MHz atmega8noxtal.upload.protocol=stk500 atmega8noxtal.upload.maximum_size=7168 atmega8noxtal.upload.speed=38400 atmega8noxtal.bootloader.low_fuses=0xe4 atmega8noxtal.bootloader.high_fuses=0xc4 atmega8noxtal.bootloader.path=atmega8_noxtal atmega8noxtal.bootloader.file=ATmegaBOOT.hex atmega8noxtal.bootloader.unlock_bits=0x3F atmega8noxtal.bootloader.lock_bits=0x0F atmega8noxtal.build.mcu=atmega8 atmega8noxtal.build.f_cpu=8000000L atmega8noxtal.build.core=arduino
Povšiměte si hlavně řádek s parametry build.f_cpu a build.mcu, kam dosaďte frekvenci na které váš čip poběží (8000000L je vhodné pro interní oscilátor) a vámi používaný čip (parametr je pro avr-gcc, najdete ho v manu). Upravený soubor uložte.
Spusťte IDE. V záložce Tools/Boards se vám objevila nová deska (ATmega8-noxtal @8MHz) - vyberte jí.
Nyní si něco naprogramujte, můžete použít třeba základní sketch z File/Examples/Basics/Blink, nezapomeňte však na potřebný výstup připojit diodu. Já jsem použil toto:
#define LEDPIN 8 void setup(){ pinMode(LEDPIN, OUTPUT); } void loop(){ digitalWrite(LEDPIN, HIGH); // sets the LED on delay(1000); // waits for a second digitalWrite(LEDPIN, LOW); // sets the LED off delay(1000); // waits for a second }
Nyní program zkompilujte kliknutím na ikonu šipky v levo nahoře. Nepokoušejte se program uploadnout, nevložil by se do čipu, ale do Arduina!
Doufám že máte nainstalované avrdude, pokud ne, nainstalujte si ho.
Další část je poněkud .. nečistá. Otevřete si /tmp a najděte složku se jménem začínajícím na build. Nezavírejte během toho IDE, jinak se smaže. Otevřete si v ní konzoli a zadejte příkaz
avrdude -C /etc/avrdude.conf -p m8 -c avrisp -b 19200 -P /dev/ttyUSB0 -U flash:w:`ls *.hex`Za m8 dosaďte váš čip dle manuálu avrdude.
bystrousak@kitakitsune:/tmp/build5859820408225631991.tmp$ avrdude -C /etc/avrdude.conf -p m8 -c avrisp -b 19200 -P /dev/ttyUSB0 -U flash:w:`ls *.hex` avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.12s avrdude: Device signature = 0x1e9307 avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude: erasing chip avrdude: reading input file "AtMega8_sigle_blink.cpp.hex" avrdude: input file AtMega8_sigle_blink.cpp.hex auto detected as Intel Hex avrdude: writing flash (812 bytes): Writing | ################################################## | 100% 1.27s avrdude: 812 bytes of flash written avrdude: verifying flash memory against AtMega8_sigle_blink.cpp.hex: avrdude: load data flash data from input file AtMega8_sigle_blink.cpp.hex: avrdude: input file AtMega8_sigle_blink.cpp.hex auto detected as Intel Hex avrdude: input file AtMega8_sigle_blink.cpp.hex contains 812 bytes avrdude: reading on-chip flash data: Reading | ################################################## | 100% 1.46s avrdude: verifying ... avrdude: 812 bytes of flash verified avrdude: safemode: Fuses OK avrdude done. Thank you. bystrousak@kitakitsune:/tmp/build5859820408225631991.tmp$
Pokud se vám stane, že avrdude vypisuje cosi jako
avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.12s avrdude: Device signature = 0x000000 avrdude: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check. avrdude done. Thank you.
neklesejte na mysli a zkontrolujte zapojení drátů - tahle chyba typicky nastává pokud dráty nemají kontakt, čip je zablokovaný (teba jste v minulosti použili špatné fuse), nebo vypálený.
Jedná se o poměrně užitečnou schopnost IDE, protože kdo někdy zkusil programovat AVR v čistém C, určitě mi dá za pravdu že programovat Arduino je mnohokrát jednodušší a komfortnější. Doufám že tento blogpost pomůže těm kteří by to sami nezvládli a ukáže možnost těm, které to nenapadlo. Pokud někdo cítí tu potřebu, text je možné šířit pod licencí CC BY-NC-SA..
Na závěr bych rád poděkoval AsciiWolfovi, že mě svými dotazy donutil tohle sepsat :).
Tiskni
Sdílej:
S šesti drátama na paralelní port to jde sice taky, ale ten už dnes nemají všechny počítače, dá se celkem jednoduše zničit a navíc pokud něco opravdu testuješ a ladíš, bývá problém mít na jednom pinu zapojenou nějakou periferii a zároveň pin toho paralelního portu. Většinou to komplikuje jak programování (Par. neutáhne tu periferii), tak normální chod (uP se tahá s LPT o úrovně).
Takže pokud paralelní port, tak se hodí dát tam aspoň buffery, co se dají vstupem EN(able) přepnout do hiZ ... já používám "Altera byte blaster" kabel odsud: http://real.kiev.ua/old/avreal/en/adapters.html
digitalWrite(pin, hodnota)
je strašně špatný, *PORTB &= ~_BV(bit)
a *PORTB |= _BV(bit)
je o hodně přehlednější a intuitivnější, jasně..
BTW: Ve chvíli kdy Arduino používají desítky tisíc lidí se nestandardní píčoviny mění na standardní featury.
Aha. Takže když to shrnu, arduino vám vadí proto, že s ním lidi dělají zajímavé projekty a používají ho. Hm.Vadí mi, že spousta zajímavých projektů je vázána na naprosto zbytečný kus HW.
board.txt je nutné upravit proto, že tvůrci nepočítali s během Arduino programů na standalone ATmegách, ale v Arduinu přes bootloader.Ano, přesně tohle je ten problém. Sorry, ale já opravdu nemám chuť používat vývojové prostředky (navíc je to propojené s nějakým blbým IDE, což mi taky nevyhovuje) dělané pro určitý vývojový kit...
No "digitalWrite" je opravdu intuitivní název ja prase. Navíc ten CamelCase, teda fuj!digitalWrite(pin, hodnota)
je strašně špatný,*PORTB &= ~_BV(bit)
a*PORTB |= _BV(bit)
je o hodně přehlednější a intuitivnější, jasně..
BTW: Ve chvíli kdy Arduino používají desítky tisíc lidí se nestandardní píčoviny mění na standardní featury.Píčovina zůstane píčovinou vždycky...
Nastavit v konfiguraci jaký konkrétně chip používám, je potřeba snad u každého programátoru, ne? To vývojové prostředí je sice dělané pro konkrétní kit, ale dá se použít univerzálně - viz třeba tenhle blog.board.txt je nutné upravit proto, že tvůrci nepočítali s během Arduino programů na standalone ATmegách, ale v Arduinu přes bootloader.Ano, přesně tohle je ten problém. Sorry, ale já opravdu nemám chuť používat vývojové prostředky (navíc je to propojené s nějakým blbým IDE, což mi taky nevyhovuje) dělané pro určitý vývojový kit...
Navíc ten CamelCase, teda fuj!To je snad otázka vkusu, ne? Nebo snad existuje nějaký objektivní důvod, proč by to mělo být fuj?
Objektivní důvod je ten, že se to špatně čte (tj. je to neergonomické s tím pracovat).To není objektivní důvod ale subjektivní, protože třeba mně se to čte dobře.
... že se to špatně čte (tj. je to neergonomické s tím pracovat)Máš to něčím podložené?
A navíc míchání s normalnim_stylem je ještě dvojnásob nepřehledné.Míchaní je na přehlednosti nepřidá, v tomhle souhlasím.
Pokud daný projekt nevyužívá USB část ArduinaA i pokud používá, pořád je to obyčejný FTDI převodník, který se dá normálně postavit na koleně.
Přemýšlel jsem o spojení starých ISA karet s osmibiťákama. Problém by byl asi se šířkou sběrnice (v nejhorším posuvnej registrHehe, tak to jsme dva. Já mám dokonce někde hotový driver pro 3c509B (anžto se to dá provozovat v 8bitovém režimu) a hrále jsem si i s osmiportovou MOXA RS-232 kartou. Říkal jsem si, co takhle udělat nějaký úplně primitivní "OS", který by uměl pospojovat nejzákladnější komunikační rozhraní (RS-232, PARPORT, TCP server/klient, možná interní modem). Nějaká ATmega128*, nebo *256* by na to byla až až... Bohužel teď na to není jaksi vůbec čas....), ale jinak by to mělo jít.
RS-485 je jen diferenciální vedení ne?Jo, ale není duplexní.
Hmm mohlo by jít na konec šňůry přimontovat mikrofon a přes ADC přijímat vibrace? Jako dětský kelímkový mikrofon třeba. Akorát ta šňůra má malou šířku pásmaHehehe. Hmmm^2 z prádelní šňůry by teoreticky byla zajímavá dynamická FIFO paměť :-O.
Wow 3c509 mám snad taky. Jinak 8-bit maj i FDD řadiče to by bylo taky zajímavýNo, a proč si rovnou neudělat vlastní FDD řadič? :-P Myslím, že pokud by člověk uplatnil modernější technologie, pak by na normální disk dostal třeba klidně víc, než ~2MB. (Mám na mysli: a) použít rozdílnou hustota zápisu v různých stopách, b) lepší kódování, tj. místo MFM zkusit např. 8b/10b, nebo rovnou 64b/66b, namísto c) lepší opravu chyb, než je CRC.) Je ale otázka, jestli by na takovou věc AVR-ko stačilo.
OS by určitě šel, otázka co by ten uC s těma periferia dělalNo, už jenom pokud by uměl jenom „tupě“ přesměrovávat streamy mezi RS-232 / LP / TPC / souborem na SD/MMC kartě, by to nebylo úplně marné.
Ad RS485 to řeší software ne? Ale asi by mě to trochu zabrat dalo to jo.No a právě proto není možné použít bootloader pro běžný UART (tj. zmíněné FTDI) na RS-485.
To by se musela udělat celá mechanika, navíc ona komunikace s mechanikou je dost náročná na časování.Pročby? Na FDD rozhraní ovládáš přímo signály jako je vypnutí/zapnutí motoru, posun hlavičky, detekce "díry", takže svobody máš dost
Vadí mi, že spousta zajímavých projektů je vázána na naprosto zbytečný kus HW.WTF? Vždyť smyslem tohohle mého blogpostu bylo ukázat, že programy pro Arduino lze relativně lehce používat i na HW pro který nejsou zamýšleny. Četl jste to vůbec?
Ano, přesně tohle je ten problém. Sorry, ale já opravdu nemám chuť používat vývojové prostředky (navíc je to propojené s nějakým blbým IDE, což mi taky nevyhovuje) dělané pro určitý vývojový kit...No tak ho nepoužívejte.. Pro Arduino můžete klidně vyvíjet ve vimu a uploadovat to do něj přes konzoli. IDE je zde jen pro usnadnění.
No "digitalWrite" je opravdu intuitivní název ja prase. Navíc ten CamelCase, teda fuj!Blah blah.
Píčovina zůstane píčovinou vždycky...To záleží na tom kdo řekne že je to píčovina - pokud je to jeden člověk v diskuzi, pro ostatní se nic nemění na tom že je to feature.
Môžeš prosím napísať ako to naprogramujem cez konzolu? Lebo predsa len vim je vim, v ňom by sa mi robilo lepšie ako v tom javovom čude... ;)No, to jsem si možná trochu naběhl. Nikdy jsem to nezkoušel, ale jelikož Arduino IDE používá pro upload avrdude, určitě to možné je. Osobně mě to nezajímá, takže to zkoušet nebudu, ale po chvilce googlení jsem narazil na tohle: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1201441300. Je tam docela pěkně vidět co předat avrdude za parametry. Pokud tě to opravdu zajímá, zkus něco vygooglit nebo si prostuduj arduino forum (hlavně co se týká bootloaderu) a manuál avrdude (odkaz na něj mám v blogpostu). Teď jsem našel
avrdude.exe -V -F -C avrdude.conf -p atmega168 -c stk500v1 -P COM2 -b 57600 -U flash:w:Blink.cpp.hex -vvvv
, který je údajně funkční, ale budeš si ho muset převést na linuxový ekvivalent (jiný port, cesta k avrdude atp..).
Protože je to složité a do jisté míry neergonomické (v IDE stačí napsat kód/použít example a stisknout jedno tlačítko které ho zkompiluje a uploadne do Arduina, sériová konzole se otevírá dalším kliknutím..)?Moje zkušenost je naprosto opačná. Napsat tři písmena a nechat to doplnit [TAB]em, je daleko rychlejší, než šmátrat někde myší po nějakých hloupých tlačítkách
Chápu že vám to tak vyhovuje, ale to není důvod proč by to mělo vyhovovat každému.Kde jsem psal, že to musí vyhovovat každému? Jenom prezentuji svůj pohled na věc, ostatně úplně stejně jako vy
PS: Je zapotřebí rozlišovat Arduino a Arduino IDE.Proč? Nejsou snad obě dělány proto, aby se nejlíp dělalo právě v kombinaci obou?
Je mi skoro součin dvou prvočísel, kde rozdíl hodnot obou cifer toho součinu je 22×43?
Moje zkušenost je naprosto opačná. Napsat tři písmena a nechat to doplnit [TAB]em, je daleko rychlejší, než šmátrat někde myší po nějakých hloupých tlačítkáchJenže předtím musíš přepnout kontext, buď si odskočit z vimu (ESC:sh[enter]), přepnout screen (ctrl+a n/p) nebo jen přepnout na jinej terminál (ať už gui (alt+[tab] / pohyb myší), nebo ctrl+alt+Fx). To (kromě screenu) imho zdrží víc než kliknutí myší a to jsi ještě ani nespustil makefile. Osobně na D/Python vždy používám editor (geany, kate, vim podle chuti) + jeden nebo více gnome terminálů. U Arduina, stejně jako Javy nebo C# kvůli poměrně slušnému IDE ne, protože je to prostě pro mě komfortnější.
Jenže to je jen taková obezlička, ne plnohodnotný způsob práce (aneb není to to, na co je to dělaný).Vadí mi, že spousta zajímavých projektů je vázána na naprosto zbytečný kus HW.WTF? Vždyť smyslem tohohle mého blogpostu bylo ukázat, že programy pro Arduino lze relativně lehce používat i na HW pro který nejsou zamýšleny. Četl jste to vůbec?
Jenže to není už standardní způsob použití. Popravdě tohle mi vadí nejvíc, že se Arduino snaží být všechno, od HW, přes IDE až po podporu totálně nesouvisejících periferií. Něco jako Microsoft, ten se taky snaží pozřít všechno. Naopak linuxový/etc. přístup spočívá v tom, že do sebe kombinuje spousta různých částí (např. jádro, knihovny, atd.) a tím, že existují nějaké +- zavedené konvence, to všechno nakonec zapadne do sebe. Možná jsem jen moc velký autista, ale ten první způsob mě neuvěřitelně vytáčí a iritujeAno, přesně tohle je ten problém. Sorry, ale já opravdu nemám chuť používat vývojové prostředky (navíc je to propojené s nějakým blbým IDE, což mi taky nevyhovuje) dělané pro určitý vývojový kit...No tak ho nepoužívejte.. Pro Arduino můžete klidně vyvíjet ve vimu a uploadovat to do něj přes konzoli. IDE je zde jen pro usnadnění.
Nějaký argument by nebyl?No "digitalWrite" je opravdu intuitivní název ja prase. Navíc ten CamelCase, teda fuj!Blah blah.
Popravdě tohle mi vadí nejvíc, že se Arduino snaží být všechno, od HW, přes IDE až po podporu totálně nesouvisejících periferií. Něco jako Microsoft, ten se taky snaží pozřít všechno. Naopak linuxový/etc. přístup spočívá v tom, že do sebe kombinuje spousta různých částí (např. jádro, knihovny, atd.) a tím, že existují nějaké +- zavedené konvence, to všechno nakonec zapadne do sebe. Možná jsem jen moc velký autista, ale ten první způsob mě neuvěřitelně vytáčí a iritujeArduino hardwarový prostředek obsahující čip z rodiny ATmega, FTDI převodník, napěťový stabilizátor a pár dalších základních věcí. Uvolněný je pod CC licencí. Arduino IDE je opensource pod GPL (pokud se nepletu) a skládá z jednoduchého editoru, ukázek kódů, API (Arduino se neprogramuje v C/C++, ale Wiringu, což je prakticky C++ obohacené o nějaké to zjednodušující API), uploader založený na avrdude a sériovou konzoli. Vydali ho k Arduinu místo toho aby se studentům (Arduino byl původně školní projekt) snažili vysvětlit jak vše dělat v 5 dalších nástrojích. Různí výrobci distribuují k Arduinu tzv. shieldy, což jsou desky které se do něj zezhora napíchnou a přidají tak nějakou funkcionalitu - displej, ethernet atp.. Různí lidé publikují pro Arduino knihovny, které se postupem času stávají součástí IDE. Nějak nechápu, co je na tom celém špatného. Všechno je to opensource, dobře zdokumentované a ve světě široce používané. Arduino je chybějící článek mezi počítači a řídícími jednotkami. Je úspěšný do velké míry i díky IDE a API, protože bez něj je vše složitější a vyžaduje to dlouhý čas na studium. BTW: Tohle je docela zajímavý dokument: http://arduinothedocumentary.org/![]()
Nějaký argument by nebyl?Argument jsem uvedl níže (v jiném threadu), ale začínám mít pocit že to nemá smysl. Nemůžu se hádat o objektivitě subjektivního.
Nějak nechápu, co je na tom celém špatného. Všechno je to opensource, dobře zdokumentované a ve světě široce používané. Arduino je chybějící článek mezi počítači a řídícími jednotkami.Není. Všechno tady už bylo předtím, jen Arduino se všechno snaží seškatulkovat do jednoho prostředí. Což je špatně.
Je úspěšný do velké míry i díky IDE a API, protože bez něj je vše složitější a vyžaduje to dlouhý čas na studium.Kecy.
Není. Všechno tady už bylo předtím, jen Arduino se všechno snaží seškatulkovat do jednoho prostředí. Což je špatně.To by pak bylo špatné každé IDE.
Kecy.Osobně jsem poznal prvně Arduino a poté teprve rodinu AVR, avr-libc, 8051 asm a C bůh ví jaký proprietární C kompilátor pro 8051. Naučit se dělat s Arduinem bylo lehčí než s AVR i přesto, že ve chvíli kdy jsem šel do avr-libc jsem měl jisté znalosti mikrokontrolerů, assembleru, C/C++ (za 2 u zkoušky na VŠ, ing. Špánek na TUL). Na základě mé subjektivní zkušenosti tvrdím, že zvládnout programovat Arduino je o moc lehčí než avr-libc/procyon a za tím si stojím.
Naopak linuxový/etc. přístup spočívá v tom, že do sebe kombinuje spousta různých částí (např. jádro, knihovny, atd.)Tohle přesně Arduion dělá - SW je jen nadstavba na klasickými nástroji (avrdude, avr-libc) plus nové IDE, HW samotného kitu je minimum toho, aby se to dalo snadno připojit k počítači a začít programovat, zároveň navržené tak, aby se k tomu dalo připojit mnoho dalších modulů.
a tím, že existují nějaké +- zavedené konvenceTady už to o Arduinu neplatí, ale ony i ty staré konvence musely nějak vzniknout.
Někteří lidé dělají věci jinak, než ty. Smiř se s tím ...
BTW byla by sranda udělat programátor třeba přes VGA portNestačilo by přes zvukovku?.
Programoval jste někdy pro Arduino? Programovat pro Arduino je docela radost, připodobnil bych to k pythonu, který má taky spoustu jednoduše použitelných knihoven na všechno. Když to porovnám třeba s takovou Procyon, rozhodně bych si vybral Arduino API. Navíc to není binární volba - pokud použiju Arduino, můžu klidně přidat i Procyon.Teda nevím, ale to API mi připadá jako největší sračka (a nejvíc mě odrazuje to, že HW kit spojován s jakýmsi pofiderním API). Osobně jsem si vždy vystačil s avr-libc.
Už jenom to, že používá CamelCase je diskvalifikuje. Ve svých programech bych se rád vyznal, CamelCase je prostě hnus, špatně se to čte...Heh. Podtržítková notace se používá snad jen v C, které je tak zastaralé, že nemá ani namespace. Všechny ostatní jazyky používají pro názvy fcí/metod nějakou variantu CamelCase, z čehož imho plyne, že je lepší (jinak by to nikdo nepoužíval).
Jinak analogicky: většina lidí používá Windows...Většina laické veřejnosti používá Windows. Jinak u programování máš jednoduchý a snadno uskutečnitelný výběr a osobně znám jen pár lidí (když nepočítám tuto diskuzi) kteří nemají rádi CamelCase. Na VŠ jsem se setkával s desítkami a stovkami dalších lidí, měl možnost nahlížet do jejich zdrojáků, navíc mě programovaní baví a je to můj koníček. Zatím jsem postřehl jen to, že CamelCase nemají rádi Céčkaři, hlavně z historických důvodů. Další věc je, že mi přijde absurdní odsoudit Arduino za takovou blbost, jako CamelCase v API. Je to jak ženský co odsoudí chlapa podle toho co si zrovna vzal na sebe.
Serial.prinln()
.
šechny ostatní jazyky používají pro názvy fcí/metod nějakou variantu CamelCaseMáš docela omezený pohled. Třeba v takovém Ruby (které ani omylem nemůžeš prohlásit za zastaralý jazyk) se doporučuje používat podtržítkovou notaci. Důvod je jednoduchý, camel case se blbě čte lidem, kteří jako svoji primární abecedu nepoužívají latinku.
Ve většině z těch použitelných a používaných se používá CamelCase.To je dost odvážné tvrzení. Teda pokud to nemá být interpretováno jako "pro každý jazyk z vyjmenovaných existuje alespoň jeden projekt, který používá camel case." Osobně bych řekl, že pro spoustu z těch vypsaných jazyků se používá obojí. V C - jádro, GTK+ - zásadně podtržítka. Když zmiňuješ PHP, tak základní knihovní funkce jsou s podtržítky. Basic bych ve vlákně, které začalo nějakou poznámkou o zastaralých jazycích, možná ani nezmiňoval. V Pascalu jsem podtržítkovou notaci viděl taky, i když uznávám, že Delphi automaticky vnucují camel case. I u toho Ruby jsem viděl obojí. A tak dál... prostě tvrzení, že se camel case používá všude a proto je lepší, ti nesežeru - vychází z něčeho, co se dá až moc snadno vyvrátit.
A tak dál... prostě tvrzení, že se camel case používá všude a proto je lepší, ti nesežeru - vychází z něčeho, co se dá až moc snadno vyvrátit.Však jsem neřekl že všude, ale ve většině z těch používaných co jsem vypsal (mezi které třeba basic nespadá, protože používaný není), s těmi co jsem nevypsal nemám zkušenost, takže se k nim nevyjadřuju.
Však jsem neřekl že všude, ale ve většině z těch používaných co jsem vypsal... jenže to právě není pravda. Ve spoustě těch, které jsi vyjmenoval, se podtržítková notace používá taky a není to žádná výjimka.
C#, Java, D, Python a JavaScript - tyhle všechny (když vynechám pascal/delphi jako nepoužívaný) z toho seznamu používají ve svém API CamelCase a programátoři co v nich píšou převážně taky. C, C++ a PHP ne. 5:3 mi přijde jako většina.Tak si připočti to Ruby a máš najednou 5:4. Pak můžeš škrtnout D jako jazyk, který se (AFAIK) taky moc nepoužívá a máš 4:4 (no ok, 4.5:4 za to Delphi), což je v podstatě půl na půl. Ano, je to nad půl, ale rozhodně se to nedá označit za většinu, která následně má ukazovat na nadřazenost camel case.
..Java..Tak proto se mě v ní tak špatně psalo :-O.
... camel case se blbě čte lidem, kteří jako svoji primární abecedu nepoužívají latinku.Takle si představuju argument, ne něco ve stylu "mě se to blbě čte". Dík za zajímavou informaci.
Možná proto se mi CamelCase tak blbě čtešechny ostatní jazyky používají pro názvy fcí/metod nějakou variantu CamelCaseMáš docela omezený pohled. Třeba v takovém Ruby (které ani omylem nemůžeš prohlásit za zastaralý jazyk) se doporučuje používat podtržítkovou notaci. Důvod je jednoduchý, camel case se blbě čte lidem, kteří jako svoji primární abecedu nepoužívají latinku.
kde jsou ty časy kdy atmega8 stala 35kč a atmega16 70kč .. tehdy to byly bezkonkurenční low-cost MCU
nepoužívat celé Arduino, ale jen samotný čip s regulátorem napětíNebo i bez něj. Napájím ATmegu 168 z baterky z mobilu (3 NiMH články v sérii, ~3,7 V) a funguje to
neklesejte na mysli a zkontrolujte zapojení drátů - tahle chyba typicky nastává pokud dráty nemají kontakt, čip je zablokovaný (teba jste v minulosti použili špatné fuse), nebo vypálený.Nebo když máte špatně nastavený takt hodin.
Arduino bootloader v něm ale mám, přecijen je jednodušší připojit se při flashování firmware přes sériák než vyvádět další piny pro programátor a shánět Arduino.No, ty 4 piny není tak moc složité vyvést. Jinak k flashování není nutné použít Arduino, stačí jakýkoliv ISP programátor, při sériové komunikaci je stejně něco dalšího zapotřebí, minimálně převodník úrovní z RS232 na TTL. Jinak původní idea byla taková, že na Arduinu ten program odladím, mám k dispozici sériovou konzoli pro debugování, jakmile jsem s programem spokojen, nahradím Arduino nějakou ATmegou.
Nebo i bez něj. Napájím ATmegu 168 z baterky z mobilu (3 NiMH články v sérii, ~3,7 V) a funguje toNejspíš to bere jako 3.3V úrovně LVTTL. Jinak Atmel tuším vyrábí i nízkonapěťové čipy co jedou na 1.5V :).
No, ty 4 piny není tak moc složité vyvést.No jo, ale Arduino bootloader mi nijak nevadí (zabírá tuším necelé 2 kB paměti), tak jsem nějak nenašel důvod, proč bych si komplikoval život. Sériák tam (a je to venku ;) stejně musí být kvůli konfiguraci.
Jinak původní idea byla taková, že na Arduinu ten program odladím, mám k dispozici sériovou konzoli pro debugování, jakmile jsem s programem spokojen, nahradím Arduino nějakou ATmegou.No já to udělal úplně stejně. A - upřímně řečeno - přijde mi fascinující, že jsem se pro to naučil programovat v podstatě za pár hodin.
No já to udělal úplně stejně. A - upřímně řečeno - přijde mi fascinující, že jsem se pro to naučil programovat v podstatě za pár hodin.Jj, je to fajn.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.