Jak na C v Arduinu

AVR

Jak na C v Arduinu
« kdy: 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.


tc

Re:Jak na C v Arduinu
« Odpověď #1 kdy: 02. 07. 2014, 13:14:09 »
Jdou použít Eclipse a gnu-toolchain. (Hledej info o avr-dude).

Základní info zde:

http://playground.arduino.cc/Code/Eclipse

AVR

Re:Jak na C v Arduinu
« Odpověď #2 kdy: 02. 07. 2014, 13:17:48 »
Díky za odpověď, jdu to vyzkoušet.

dword

Re:Jak na C v Arduinu
« Odpověď #3 kdy: 02. 07. 2014, 15:15:15 »
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

dword

Re:Jak na C v Arduinu
« Odpověď #4 kdy: 02. 07. 2014, 15:21:54 »
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
Kód: [Vybrat]
#include <avr/io.h>

(dokumentace zde: 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...


Re:Jak na C v Arduinu
« Odpověď #5 kdy: 02. 07. 2014, 16:49:52 »
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

AVR

Re:Jak na C v Arduinu
« Odpověď #6 kdy: 02. 07. 2014, 18:01:10 »
Díky Dwordovi za podrobnější informace, určitě se mi budou hodit. Váš návod je skvělý.

AVR

Re:Jak na C v Arduinu
« Odpověď #7 kdy: 02. 07. 2014, 18:07:29 »
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

AVR

Re:Jak na C v Arduinu
« Odpověď #8 kdy: 02. 07. 2014, 18:11:43 »

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

Jinak přesnější informace vždycky ocením. Jak říkám, jsem skoro čerstvý začátečník.

novacisko

Re:Jak na C v Arduinu
« Odpověď #9 kdy: 02. 07. 2014, 18:23:02 »
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.

AVR

Re:Jak na C v Arduinu
« Odpověď #10 kdy: 02. 07. 2014, 18:32:16 »
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.

Re:Jak na C v Arduinu
« Odpověď #11 kdy: 02. 07. 2014, 19:07:36 »
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
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.

Mareg

Re:Jak na C v Arduinu
« Odpověď #12 kdy: 03. 07. 2014, 09:28:13 »
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.

dword

Re:Jak na C v Arduinu
« Odpověď #13 kdy: 03. 07. 2014, 11:29:25 »
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.

AVR

Re:Jak na C v Arduinu
« Odpověď #14 kdy: 03. 07. 2014, 21:29:39 »
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.