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




Letzte Kommentare