Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: AVR 02. 07. 2014, 12:58:31

Název: Jak na C v Arduinu
Přispěvatel: 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.
Název: Re:Jak na C v Arduinu
Přispěvatel: tc 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
Název: Re:Jak na C v Arduinu
Přispěvatel: AVR 02. 07. 2014, 13:17:48
Díky za odpověď, jdu to vyzkoušet.
Název: Re:Jak na C v Arduinu
Přispěvatel: dword 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 (http://www.nongnu.org/avr-libc/user-manual/modules.html)
Název: Re:Jak na C v Arduinu
Přispěvatel: dword 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 (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...
Název: Re:Jak na C v Arduinu
Přispěvatel: Mirek Prýmek 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
Název: Re:Jak na C v Arduinu
Přispěvatel: AVR 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ý.
Název: Re:Jak na C v Arduinu
Přispěvatel: AVR 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 (http://arduino.cc)
Název: Re:Jak na C v Arduinu
Přispěvatel: AVR 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 (http://arduino.cc)

Jinak přesnější informace vždycky ocením. Jak říkám, jsem skoro čerstvý začátečník.
Název: Re:Jak na C v Arduinu
Přispěvatel: novacisko 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.
Název: Re:Jak na C v Arduinu
Přispěvatel: AVR 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.
Název: Re:Jak na C v Arduinu
Přispěvatel: Mirek Prýmek 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 (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.
Název: Re:Jak na C v Arduinu
Přispěvatel: Mareg 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.
Název: Re:Jak na C v Arduinu
Přispěvatel: dword 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.
Název: Re:Jak na C v Arduinu
Přispěvatel: AVR 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.
Název: Re:Jak na C v Arduinu
Přispěvatel: AVR 03. 07. 2014, 21:33:17
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...