Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: AVR 02. 07. 2014, 12:58:31
-
Zdravím všechny, potřeboval bych drobnou radu.
Nedávno jsem si koupil Arduino, abych se naučil programovat MCU AVR (v C/C++). Stáhnul jsem si nějaké tutoriály a yzkoušel jsem si první prográmek s blikající LED. Vše sice funguje, ale zmátlo mě, že zde nejsou žádné knihovny. Navíc jsem si stáhnul datasheet pro AVR a příklady v něm uvedené vypadají odlišně, předpokládám tedy, že se nejedná o klasické programování v C/C++. Toto také potvrzuje informace nalezená na Google upozorňující, že programovací jazyk pro Arduino není čisté C, ale prý se jedná o jiný programovací jazyk s analogickou syntaxí. Poradíte mi jako začátečníkovi, jak (pokud to je možné) programovat Arduino pomocí čistého C/C++ včetně knihoven a dalších detailů (kvůli přímému přístupu k registrům a získání podrobných zkušeností s vlastním MCU)?
Díky za odpovědi.
-
Jdou použít Eclipse a gnu-toolchain. (Hledej info o avr-dude).
Základní info zde:
http://playground.arduino.cc/Code/Eclipse
-
Díky za odpověď, jdu to vyzkoušet.
-
Zdravim. Ja pouzivam ke kompilaci a linkovani avr-gcc cimz mi vznikne ELF, ktery pomoci avr-objdump prevedu na Intel HEX binarni image a ten nahraju pomoci avrdude. Opakuji vlastne, co rikal kolega predemnou, to jen kdybyste se rozhodl pro vyvoj bez IDE. Obecne se da rict, ze muzete psat v cem chcete, jakmile mate ELF, nebo HEX, mate vyhrano.
Dodam jeste, ze jako zakladni knihovnu pro vyvoj pouzivam AVR libc, jejiz dokumentaci lze nalezt zde: http://www.nongnu.org/avr-libc/user-manual/modules.html (http://www.nongnu.org/avr-libc/user-manual/modules.html)
-
Jo jeste dodam, ze primy pristup k registrum v C na AVR platforme neni zadna veda, pokud pouzijete AVR libc, tak staci zahrnout do zdrojaku
#include <avr/io.h>
(dokumentace zde: http://www.nongnu.org/avr-libc/user-manual/group__avr__io.html (http://www.nongnu.org/avr-libc/user-manual/group__avr__io.html))
a pak uz muzete pouzivat jmena z datasheetu, priklad:
PORTA = 0xff;
unsigned char input = PINA;
PORTA = PORTD;
atd...
-
ale prý se jedná o jiný programovací jazyk s analogickou syntaxí. Poradíte mi jako začátečníkovi, jak (pokud to je možné)
Tohle nechápu, proč se pořád dokola opakuje.
Arduino "jazyk" je normální C++, akorát je k tomu knihovna, různý makra a největší rozdíl je v tom, že Arduino IDE automaticky přibaluje knihovny podle includovaných hlaviček. Pokud jsou tam nějaké rozdíly, tak nevím jaké :)
Zdrojáky "Arduino jazyka" se s patřičným Makefilem dají překládat normálním avr-gcc. Viz např. http://playground.arduino.cc/OpenBSD/CLI
-
Díky Dwordovi za podrobnější informace, určitě se mi budou hodit. Váš návod je skvělý.
-
ale prý se jedná o jiný programovací jazyk s analogickou syntaxí. Poradíte mi jako začátečníkovi, jak (pokud to je možné)
Tohle nechápu, proč se pořád dokola opakuje.
Arduino "jazyk" je normální C++, akorát je k tomu knihovna, různý makra a největší rozdíl je v tom, že Arduino IDE automaticky přibaluje knihovny podle includovaných hlaviček. Pokud jsou tam nějaké rozdíly, tak nevím jaké :)
Zdrojáky "Arduino jazyka" se s patřičným Makefilem dají překládat normálním avr-gcc. Viz např. http://playground.arduino.cc/OpenBSD/CLI
Možná díky tomuto:
http://www.root.cz/clanky/arduino-jak-pro-nej-zacit-programovat/
A když si rozkliknete odkaz na jazyk Wiring ve článku zjistíte, že na jeho stránkách jsou ukázkové příklady pro Arduino identické s těmi na stránkách arduino.cc (http://arduino.cc)
-
Možná díky tomuto:
http://www.root.cz/clanky/arduino-jak-pro-nej-zacit-programovat/
A když si rozkliknete odkaz na jazyk Wiring ve článku zjistíte, že na jeho stránkách jsou ukázkové příklady pro Arduino identické s těmi na stránkách arduino.cc (http://arduino.cc)
Jinak přesnější informace vždycky ocením. Jak říkám, jsem skoro čerstvý začátečník.
-
ja teda pro arduino v tom jejich wiringu pouzival normalni C++. Funguje tam vsechno, vcetne sablon a abstraktnich trid (virtualni metody, virtualni dedicnost) ,jediny co nefunguje jsou vyjimky.
-
ja teda pro arduino v tom jejich wiringu pouzival normalni C++. Funguje tam vsechno, vcetne sablon a abstraktnich trid (virtualni metody, virtualni dedicnost) ,jediny co nefunguje jsou vyjimky.
Rozhodně bude obrovské plus, když budu moci kombinovat "Wiring" s ostatními knihovnami (vzdálená budoucnost). Wiring je jednoduchý a líbí se mi, ale na některé věci je zkrátka jednoduchý až moc.
-
Možná díky tomuto:
http://www.root.cz/clanky/arduino-jak-pro-nej-zacit-programovat/
A když si rozkliknete odkaz na jazyk Wiring ve článku zjistíte, že na jeho stránkách jsou ukázkové příklady pro Arduino identické s těmi na stránkách arduino.cc (http://arduino.cc)
To je jenom zopakovaná tatáž informace. A ten ukázkový kód je přece normální C/C++ s nějakými knihovními funkcemi a makry. Tohle mi doteď nikdo nevysvětlil :)
Nicméně jako začátečník nad tím vůbec dumat nemusíš, jenom je dobré vědět, že když si napíšeš nějaký kód v Arduino IDE, tak se dá překládat i normálním způsobem (makefily atd.) a můžeš ho i postupně předělat na čistější C, pokud by Arduino knihovny byly už příliš nabobtnalé (což se ti stane rychle, ony dost nabobtnalý jsou :)
Rozhodně bude obrovské plus, když budu moci kombinovat "Wiring" s ostatními knihovnami (vzdálená budoucnost). Wiring je jednoduchý a líbí se mi, ale na některé věci je zkrátka jednoduchý až moc.
Není "jednoduchý". Je to prostě C++, akorát se z něho (směrem k uživateli) používá jenom malý subset. Můžeš si klidně zkusit do Arduino IDE okna zadat nějaký šílený C++ kód a mělo by se to bez problémů přeložit.
-
Jen drobná poznámka.
Originální "Arduino IDE" mi přišlo dost nepoužitelné a Eclipse případně Atmel Studio zbytečně složité, takže používám PsPad, který mám nakonfigurovaný tak, že mi na Ctrl+F9 (+ nějaké .bat) program přeloží, natáhne do Arduina a spustí Putty na COMu1. Přijde mi to přiměřené k tomu co se u Arduina programuje. Alespoň pro začátek.
Zkoušel jsem Atmel Studio abych mohl debuggrovat, ale to se mi na první pokus rozchodit nepodařilo a pak jsme to vzdal.
-
Díky Dwordovi za podrobnější informace, určitě se mi budou hodit. Váš návod je skvělý.
No problemo, rado se stalo. AVR znalosti sirim rad, tak se klidne ptejte. Pripadne mi tady nechte e-mail / steam / jabber, mate-li zajem.
-
Díky Dwordovi za podrobnější informace, určitě se mi budou hodit. Váš návod je skvělý.
No problemo, rado se stalo. AVR znalosti sirim rad, tak se klidne ptejte. Pripadne mi tady nechte e-mail / steam / jabber, mate-li zajem.
Díky za nabídku, tohle by snad mělo do začátku stačit. Kdybych se ale někde zasekl, určitě dám tady na fóru vědět.
-
Jen drobná poznámka.
Originální "Arduino IDE" mi přišlo dost nepoužitelné a Eclipse případně Atmel Studio zbytečně složité, takže používám PsPad, který mám nakonfigurovaný tak, že mi na Ctrl+F9 (+ nějaké .bat) program přeloží, natáhne do Arduina a spustí Putty na COMu1. Přijde mi to přiměřené k tomu co se u Arduina programuje. Alespoň pro začátek.
Zkoušel jsem Atmel Studio abych mohl debuggrovat, ale to se mi na první pokus rozchodit nepodařilo a pak jsme to vzdal.
PS Pad je pěkný, když jsem pracoval ve Windows, taky, jsem jej používal. Je škoda, že není taky ve verzi pro Linux...