Skus trebars
smileymicros.com/
na
www.avrfreaks.net
su mrte odkazov na podobne projekty. Len teraz na tej stranke nieco prestavovali a neviem sa dostat k starsim clankom.
Myslim ale, ze Arduino bude asi lacnejsie.
citat:
“Pokud Vás někdy zaujal některý z mnoha projektů používajících mikroprocesory, ale neumíte pájet nebo si jen prostě netroufáte postavit si vlastní desku, určitě Vás zaujme italský open-source projekt Arduino. Arduino je prototypovací platforma, fungující na mikroprocesoru Atmel ATmega168 (starší verze ATmega8), která poskytne začátečníkovi veškerý komfort, který si jen může přát. Arduino jednoduše připojíte k počítači pomocí USB díky čipu FTDI FT232RL a už můžete začít programovat ve speciálním jazyce Wiring/Processing, který strukturou vychází z jazyka C. Díky Arduinu se nemusíte učit ani Assembler ani C, abyste si mohli postavit třeba vlastního robota.”
Sam som pred casom stal pred problemom, v com programovat AVR. Na zaklade roznych rozhodovacich a prioritnych procesov som postupoval nasledovne:
- programovaci jazyk
k dispozicii su rozne ako napriklad ASM, BASCOM, rozne C, nejaky ten PASCAL a tak podobne, rozne speudo jazyky pre graficke programovanie, aj Atmel ma na nieco take odkaz na svojej stranke.
Ako zaciatocnik som mal trochu strach z C, lebo chyry okolo neho ma dost odradzali (peklo ukazatelov, atd…). Hladal som nieco velmi jednoduche, co sa bude dat zvladnut rychlo. Faktom vsak je, ze v C je napisane a dostupne priam gargantuovske mnozstvo kodu. Kedze viem, ze vyvoj ide dopredu a o 10-20 rokov bude AVR niekde v tych oblastiach ako je dnes x51, rozhodol som sa na programovanie pouzivat nieco, co je relativne najmenej zavisle na roznych platformach a je to dostupne aj na jednocipoch a to preto, aby som v buducnosti vlastne rutiny mohol pouzivat bez toho, aby som musel neustale nieco prepisovat do niecoho ineho, napriklad ak sa rozhodnem niekde pouzit ARM. To sa tyka pripadnej prace s inym typom procesora, ktory sa aktualne vyskytne, napr. 51, HC08, PIC atd. Tu jednoznacne vyhrava C, lebo taky BASCOM sa jednoducho nechyta.
Nakupil som si Heroutove knihy a zacal som pomaly programovat konzolove aplikacie na PC. Po par mesiacoch tukania som dosiel k zaveru, ze ucit sa C na PC v mojom pripade - ak chcem programovat hlavne jednocipy - je volovina. Pre pracu v C na PC je treba hlavne ovladat pristup k suborom a standartne konzolove opracie. To na jednocipoch nie je, na rozdiel od PC je tam plno LEDiek a tlacitok, ktore treba co najskor rozpohybovat .
Smelo som teda naintalovat AVR studio - je zdarma na strankach Atmelu, obsahuje aj simulator ( existuje este projekt Eclipse, ze vraj ma nejake veci naviac ale neskusal som.)
a kupil ICC od ImageCraftu.
Praca v C bola zrazu velmi jednoducha, LEDka mi blikala SKUTOCNE do 10 minut po spusteni AVRstudia.
V samotnom manuali k procesorom AVR su priklady kodu v C pre tu ktoru cinnost.
V C mi na zaciatku robilo najviac problemov zatvorkovanie, kym si moje oci zvykli rychlo identifikovat zlozene zatvorky miesto slov then a end, ktore na tychto miestach pouzivaju ine jazyky.
Musim upozornit na jeden dolezity fakt. Jazyk C nikoho nenuti pouzivat krkolomne a horsie na prvy pohlad analyzovatelne vyrazy ako napriklad
++a &= b–.
Volakedy to snad malo zmysel podkladat prekladacu takeho sakypaky, ale dnes su prekladace omnoho inteligentnejsie a vedia si kod sami optimalizovat, takze kludne mozete pisat kod “rozvlacnym” ale zato prehladnym sposobom napriklad ako BASIC.
V dnesnych ucebniciach programovania sa dokonca pred krkolomnymi vyrazmi dorazne varuje. Vznika tym neprehladny kod (po mesiaci, dvoch i pre samotneho tvorcu) a hladanie chyb je omnoho tazsie.
Ak bude v dosledku rozvlacneho zapisu zdrojaku vysledny kod o 20% dlhsi a pomalsi, vobec to neprekaza. AVR robi instrukciu na takt, takze pri 16MHz je k dispozicii takmer 16000000 instrukcii za sekundu.
Jasne, ze som na zaciatku robil chyby a po kratkej uvahe som z nich obvinoval prekladac, VZDY vsak bola nakoniec chyba medzi stolickou a klavesnicou.
Neskor som narazil na projekt WinAVR, ziadne casove obmedzenie pouzivania alebo obmedzenie na dlzku kodu.
winavr.sourceforge.net/
co je vlasnte GCC pre AVR. Porovnal som vygenerovany kod ICC a GCC a ked som zistl, ze GCC vygenerovalo kod cca o 20% mensi, nebolo nad cim vahat. GCC je zdarma, takze nemusim prenasat HW kluc z roboty domov a naopak. Zaroven moze vela ludi robit na nejakom projekte bez toho aby museli mat vsetci nakupene HW kluce. GCC vyvija a testuje velka komunita profesionalnych programatorov desiatky rokov, takze myslim zastavenie projektu pre “opotrebovanie” tvorcov hrozi z uvedenych projektov najmenej.
Na zaciatku bol moj zdrojovy text pisany v C tak, ze obsahoval priame vazby na HW procesora. Je to prehladne, ale prenositelnost takeho kodu je dost problematicka. Uz len vyskusat, ktory kompilator lepsie “kompiluje” je na upravu zdrojaku take narocne, ze sa na to clovek radsej vykasle. Casom som si vsak osvojil techniku pouzivania makier tak, ze vytvorim hlavickovy subor obsahujuci makra pre ten ktory procesor alebo aj hw design a v samotnom C len napisem meno makra pre danu cinnost.
napriklad v hlavickovom subore je pre ATmega8:
#define ZAKAZ_PRERUSENIA cli()
#define POVOLENIE_PRERUSENIA sei()
v C subore napisem
…
ZAKAZ_PRERUSENIA