AVR program írás, fejlesztés eszközei


2016-01-25

Programozói editor és AVR beszerzési forrás frissítése

Sajnos az MSC Budapest megszünt, ezért új beszerzési forrás után néztem. Az HQ Elektronika -t tudom nyugodt szívvel ajánlani, a link egyből a mikrovezérlő kínálatukra visz. Érdemes többet vásárolni náluk egyszerre, már 5db-tól is jelentős kedvezményt adnak.

Sok programozói szövegszerkesztő program van a Net-en, én a cikk megírása óta áttértem a PSPad -ra.


2008-02-01

 

Bevezető poén:
Új bolond kerül a bolondok házába. Egy ideig csak a sarokba húzódva figyel. Azt látja, hogy a többi bolond bemond egy-egy számot, mire a harsogva röhögnek.
- Miért röhögtök a számokon?
- Már nagyon régen itt vagyunk bezárva. Mindenki ismer minden viccet, ezért beszámoztuk őket és csak a számot mondjuk be.
Bemond egyet ő is.
- 33.
Erre a többi bolond ráveti magát és jól elagyabugyálja.
- A 33-mal mi bajotok van?
- Te hülye, az Fradi vicc volt!

Teljesen nem akarom most feltárni, miért úgy alakították ki a számítógépeket, a mikroprocesszorokat, miegymást ahogy, de a hozzá nem értőknek el kell mondjam, hogy a dolgok jelenlegi állása szerint, a számítástechnikai eszközök viszonylag teljes értetlenséget tanusítanak az emberek vágyaival, kívánságaival szemben. Valójában egyetlen emberi nyelvet sem képesek megérteni, csak azzal foglalkoznak, hogy 0111100011 011110110101 11111100101 10100011100 01010101 1111 1000000000 0011. Senki ne essen kétségbe, ennek most tényleg nincs semmi értelme, csak ezt sikerült bekalimpálnom illusztrációnak :). Annyi mindenesetre igaz a dologból, hogy ezek az eszközök csak számokkal képesek valamit csinálni, és arra a valamire is az utasítás számának megadásával tudjuk rávenni őket. Az sem mellékes, hogy a számítástechnikai eszközök áramkörei jelenleg kizárólag a kettes számrendszer alapján működnek (ezért írtam csak 1-eseket és 0-kat). Az emberi gondolkodástól ez persze teljesen idegen, és a komplexebb probléma megoldásra is alkalmatlan. Már a számítástechnika kezdetén is problémát jelentett ez, ezért megalkották a Assembly nyelvet (lehet hogy nem túl helyesen írom le a dolgokat), aminek az 1-esekre és 0-ákra, vagyis a gépi kódra való lefordítását már magára a számítógépre bízták. Tehát a programozó Assembly nyelven leírta az utasításait, ezt gépi adathordozóra rögzítették, majd egy fordító program segítségével lefordították gépi kódra, és végül ezt a gépi kódot töltötték be a számítógépbe és futtatták. Assembly nyelv elég sok van, mert minden processzorhoz tartozik egy-egy. Az assembly nyelv az adott processzor által végrehajtható utasításokat tartalmazza. Ma is használjuk, mert assembly-ben lehet a leggyorsabb/legrövidebb programokat írni. Továbbá speciális esetekben a futási idő hossza is fontos, ilyenkor megint assembly-hez nyúlunk.

Gyakran bírálják a magas szintű nyelveket, hogy sokkal hosszabb lesz a generált program, mintha assambly-ben írnánk. Ez főleg akkor igaz, ha csak néhány soros programot dobunk össze, nagyobb programnál már kevésbé számottevő a különbség. Biztos többen a szívükhöz kapnak, de annak ellenére, hogy már néhány processzorcsláddal találkoztam, és az assembly-vel már szakközép iskolás koromban megismerkedtem, nekem az assembly is idegen maradt. Ami az én szívem csücske, az a C nyelv. A C sem mai gyerek, hozzávetőleg 40 éve látta meg a napvilágot. Rögtön megdöbbentette az akkori szakmát, mert a UNIX operációs rendszert 95%-ban C-ben, míg a maradék 5% assembly-ben írták meg, az addigi közvélekedés ellenére, miszerint operációs rendszert csak Assembly-ben lehet írni. Maga a C nyelv hozzávetőleg 20 utasításból áll. Azért ne bízzuk el senki magát, olyan lehetőségek, fordulatok vannak benne, amelyek sok más nyelvben nincsenek. Persze nem kötelező az összes lehetőséget mind használni egy húsz soros programban:). A C fordító program általában nem közvetlenűl gépi kódra fordít, hanem első lépésben assembly kódot generál, majd ez fordul le gépi kódra. Én most C nyelvet sem szeretnék oktatni, konkrétan nem néztem utána, de remélem, hogy a neten mindenféle doksit megtalálnak az okulni vágyók. A legtöbb processzorhoz van C fordító. Aki megtanulja, az egy univerzálisabb tudás birtokosa lesz. C-ben lehet nagyon gusztustalanúl, és lehet szépen áttekinthetően is programozni. Ezt is lehetővé teszi. AVR család esetében több C fordító közül is válogathatunk. Nyiván ezek nem egyformák. Manapság az elérhető C fordítók nem is csak egy szál fordító programot jelentenek, hanem egy komplex fejlesztő, forodító, programletöltő, hibakereső, esetleg emulátor rendszert. Tehát a választás inkább rendszer felszereltségétől, használatának egyszerűségétől, a hozzá adott, előre elkészített minta programoktól és könyvtáraktól, a támogatott chip-pek típusától, a hozzá nyújtott támogatástól, a licence-lési feltételektől, valamint nem elhanyagolhatóan az árától függ. Ez szép kerek mondat volt. Ráadásúl minden része lényeges. Ha sikerül megemészteni, szeretném javasolni a WinAVR nevű fordítót, de talán helyesebb lenne fejlesztő rendszert írnom. Természetesen nyílt forráskódú megoldásról van szó, Jelenleg a 2008/12/05-ös verziója tölthető le, hozzávetőleg 20MByte-ra számítsunk. Ez mindenféle programot tartalmaz, példáúl az AVR DUDE program letöltőt is, Windows rendszereken futtatható verzióban. A többi részét még nem nagyon volt energiám kikutatni. Sajnos elég kevés minta programot tettek a csomagba, engem különösen a bierware licence zavar. A sör még rendbe lenne, megérdemlik a fiúk, de ezek a mintakódok nem felelnek meg az átlátható, követhető kritériumaimnak.

Beszélni kell arról is, hogy az AVR családhoz nemcsak assambly és C fordítók, hanem más nyelvek is rendelkezésünkre állnak. Talán legközkedveltebb még a BASCOM basic fordító. Tényleg nagyon rövid kis programokkal működésre bírhatjuk a berendezésünket. Szintén előnye, hogy számos gyakran használt programrészlet - rutin - eleve bele van építve. Ez szerintem a hátránya is, mert assembly-ben és C-ben, ha akarom teljesen a kezemben tudom tartani a vezérlést, az összes rutint ellenőrizhetem, vagy megírhatom magam. Persze, ha nem akarom, használhatok library-kat is, amelyek előre megírt rutinokat tartalmaznak.

Összefoglalva, ahhoz, hogy egy mikrovezérlőt rábírjunk a nekünk tetsző működésre, a következő dolgokra van szükségünk:

A WinAVR programcsomagban az összes szükséges programot megtaláljuk.

Találtam egy linket a WinAVR telepítéséről és használatáról a HobbyElektronika.hu-n magyarul, talán majd egyszer én is összeszedem magam.

Számos programozói szövegszerkesztő található a neten, nekem a legszimpatikusabb a Notepad++-t, és persze GPL.

A leghasználhatóbb terminál program a Bray's Terminal.

Letöltő programnak, a grafikus felülettel rendelkező PonyProg-ot javaslom.

AVR chip-ek meg egyéb fontos dolgok beszerzési forrása az MSC Budapest.

A tiszta forrása az alapvető programoknak, doksiknak az Atmel oldalain található.

Sok hasznos dolog található a vfx.hu lapon.

Részben vásárolni is lehet, részben hasznos dolgok is megtatálhatók az avr.tavir.hu oldalon. Ha valaki basic-ben szeretné az AVR családot programozni, itt talál magyar leírást a BASCOM-ról.

Mintaprogramok lelőhelye a WinAVR AVR-GCC Tutorial oldal.

Nagy kupac project található az AVRFreaks oldalain.

Egyébként pedig aki keres, az talál - használd a Google-t!