avr-gcc räumt in Header Dateien auf

Atmel aktualisiert seit geraumer Zeit die Fertigungstechnik, wodurch zum Beispiel aus einem ATmega8 ein ATmega8A wird. Einzige Unterschiede sind geringere Kosten, geringerer Stromverbrauch und, besonders wichtig, der Wegfall von getrennten Versionen für Low Voltage und Standardausführung. Die neuen Typen sind 100% Pin- und Code kompatibel. Sie verwenden auch die selbe Signatur.

Natürlich gibt es für die neuen Typen auch neue Header Dateien (unter Ubuntu zu finden unter /usr/lib/avr/include/avr). Die Dateien für die neuen A Typen wurden aber deutlich aufgeräumt und auch um einige Informationen ergänzt.

In der Datei iom16.h hieß es beispielsweise bei den Interrupts noch

/* External Interrupt Request 0 */
#define INT0_vect			_VECTOR(1)
#define SIG_INTERRUPT0			_VECTOR(1)

In der Datei iom16a.h entfallen die alten Interrupt Bezeichnungen. Dafür wurde eine Definition für die Vektornummer hinzugefügt

#define INT0_vect_num  1
#define INT0_vect      _VECTOR(1)  /* External Interrupt Request 0 */

Damit entfällt schonmal das Rätselraten, welche der Vektoren denn jetzt die richtigen sind. Es gibt aber auch neue Definitionen, beispielsweise für die Sonderfunktionen der IO Ports.

#define RXD_DDR   DDRD
#define RXD_PORT  PORTD
#define RXD_PIN   PIND
#define RXD_BIT   0

#define TXD_DDR   DDRD
#define TXD_PORT  PORTD
#define TXD_PIN   PIND
#define TXD_BIT   1

Das vereinfacht die Konfiguration der Ports.

Wer also ein neues Projekt mit einem ATmega8, ATmega16 oder ATmega32 startet sollte darüber nachdenken, eventuell die Header Files für die jeweiligen A Typen zu verwenden

Tags: , ,

Comments are closed.


Switch to our mobile site