Wichtiges zu myAVR C++

Wie bereits erläutert ist das myAVR C++ Framework für den WinAVR Compiler entwickelt. Aus Unzufriedenheit mit dem einen oder anderen dort gesetzten Standard gibt es ein paar kleine Erweiterungen, über die man gern diskutieren kann. Ausgewählte Erweiterungen werden hier kurz vorgestellt, da sie hier im Tutorial durchaus eine Rolle spielen. Die Erweiterungen sind problemlos über eine Includedatei, zum Beispiel auch im AVR Studio, einsetzbar.

Als Erstes ein paar Typdeklarationen die ausschließlich die Schreibweise oft verwendeter Basistypen betreffen.

#define uint8    uint8_t
#define int8     int8_t
#define uint16   uint16_t
#define int16    int16_t
...

Für den einfachen Zugriff auf die DigitalPorts wurden Strukturdefinitionen im Framework erstellt die es erlauben in einer Schreibweise auf die Ports zuzugreifen, die typisch für eine moderne Programmiersprache ist. Dabei beginnen die Namen klein und Teilbezeichnungen werden mit Großbuchstaben hervorgehoben. Der Zugriff auf Strukturelemente erfolgt mit dem Punkt-Operator. Die bisherige Schreibweise der Portzugriffe ist jedoch nach wie vor möglich.

Folgende Schreibweise ergibt sich daraus:

// Schreibweise der Ports 
ddrB pinB portB ...
 
// schreiben eines Data Directin Rerister Bits
ddrB.bit0  = 1;
 
// schreiben eines PORT-Bits
portB.bit0 = 1;
 
// löschen eines Data Directin Rerister Bits
ddrB.bit0  = 0;
 
// löschen eines Port-Bits
portB.bit0 = 0;
 
// auswerten (einlesen) eines Port Input Bits
if ( pinD.bit2 == 0 ) ...
 
//usw...

Es ist zu beachten, dass in SiSy für die entsprechenden Elemente (z.B. kleines Programm) die Spracheinstellungen auf AVR C++ stehen müssen und in jedem Fall der richtige Zielcontroller und die Taktfrequenz im Dialog korrekt angegeben wurden. SiSy setzt dann die entsprechenden Compilerschalter und sorgt dafür, dass alle nötigen Includes, Makros, Programmrahmen und Bibliotheken automatisch eingebunden werden.

Zum vergrößern einfach die Bilder anklicken.

Nächstes Thema