Archiv nach Schlagworten: Atmel

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

Kostenlose VID/PID für USB dank GPL

Wer USB Geräte entwickeln will, egal ob privat oder kommerziell, braucht eine Vendor ID und eine Product ID. Wenn man fertige ICs wie den FT232R verwendet kann die IDs des Herstellers verwenden, wenn man damit zufrieden ist. Auch Microchip bietet eine kostenlose Möglichkeit zur Nutzung von deren VID und PID. Allerdings nur mit deren Mikrocontrollern und begrenzt auf 10000 Exemplare.

Wer jedoch eigene IDs möchte muss tief in die Tasche greifen, denn der Handel mit kleinen PID Gruppen wurde vom USB Implementers Forum (USB IF) unterbunden. Will man eine eigene VID und die Lizenz für die Nutzung des USB Logos darf 4000 US-Dollar berappen… pro Jahr. Dafür erhält man dann 65000 PIDs. Wer’s braucht…

Atmel bietet noch eine dritte Alternative. Wer den V-USB Treiber nutzt, erhält kostenlos eine VID/PID Kombination, sofern das Gerät die Richtlinien der GPL erfüllt. Dafür muss man neben den Sourcen auch alle Schaltpläne und weitere notwendige Informationen auf einer Webseite veröffentlichen und die Firma darüber informieren. Soll die Software nicht unter der GPL veröffentlicht werden kann man für den privaten Gebrauch eine VID-PID Kombination für 9,90€ erwerben.

Der V-USB Treiber ist jedoch kein Hardware USB Chip sondern eine Softwarelösung, die auf Atmels AVR Controllern läuft und bietet daher nur USB 1.1 und maximal FullSpeed. Sofern man nicht gerade einen Massenspeicher basteln will oder einen Livestream von einer Kamera übertragen will sollte das allerdings ausreichen.

Für den privaten Gebrauch kann man sich natürlich jederzeit eine eigene, zufällige VID/PID erstellen. Man muss jedoch bedenken, dass diese Nummer für ein anderes Gerät verwendet werden könnte und das Betriebssystem die falschen Treiber läd.

AVR Studio und WinAVR unter Linux: es läuft

Ich habe mir jetzt einmal die Mühe gemacht und die Version 1.1.43 von wine aus diesem PPA zu installieren. Anschließend habe ich das AVR Studio 4.18 einschließlich SP1 und die aktuelle Version von WinAVR heruntergeladen.

Ich habe alles installieren können und siehe da, es läuft. Was allerdings (noch) nicht funktioniert ist die Programmierung über den AVRISP mkII. Ob man das noch einrichten kann weiß ich zur Zeit nicht. Hier muss man zur Not auf avrdude zurückgreifen.

Weiterhin habe ich festgestellt, dass das AVR Studio schon im Leerlauf etwa 12% CPU Leistung benötigt (auf einem C2D E4300 mit 1,8GHz). Also nicht unbedingt geeignet für den mobilen Betrieb mit einem Laptop.

Ich habe jetzt nicht alle Funktionen getestet. Ich habe lediglich die Installation und das Compilieren mit WinAVR ausprobiert.

Da die Programmierung mittels AVRISP mkII nicht funktioniert bleibt der einzig plausible Grund für die Installation vom AVR Studio unter Linux der Simulator.

Wenn man im Project Wizzard ein neues Projekt anlegt und einen AVR Controller auswählt gibt es jedoch einen kleinen Bug. In den Project Options wird der Controller Typ falsch eingetragen. Hinter dem Namen werden zusätzliche Zeichen eingefügt, die man entfernen muss. Ich weiß jetzt nicht, ob dies an wine liegt oder ein genereller Bug im AVR Studio ist.

PS: Der Simulator scheint nicht zu funktionieren. Beim Versuch, ein Programm zu debuggen, hängt sich das AVR Studio komplett auf

AVR32 Studio 2.4

Atmel hat das AVR32 Studio in Version 2.4 veröffentlicht. Es ist für Linux und Windows erhältlich.

Alle Neuerungen findet man in den Release Notes

Bugfix Update avrdude 5.10

In die Version 5.9 hat sich ein Bug eingeschlichen. Offensichtlich werden Intel HEX Dateien mit mehr als 128kB nicht korrekt verarbeitet.

Daher wird empfohlen, ein Update durchzuführen. Weitere Informationen hier

Angekündigt: ATtiny2313A und ATtiny4313

Endlich tut sich etwas bei den ATtiny2313. Gestern hat Atmel ein neues Datenblatt veröffentlicht.

Der ATtiny2313 ist ein kleiner, universeller Controller ohne AD Wandler. Leider gab es diesen bisher nur mit 2kB Flash. Mit dem Datenblatt kündigt Atmel zum einen den Wechsel auf die neuen A-Typen an. Gleichzeitig gibt es eine Version mit 4kByte Flash und je 256 Byte Eeprom und SRAM.

Die neuen Controller arbeiten mit einer Spannung von 1,8-5,5V und von 0-20MHz.

  • 0-4MHz @ 1,8-5,5V
  • 0-10MHz @ 2,7-5,5V
  • 0-20MHz @ 4,5-5,5V

Die Migration Note listet die Unterschiede zwischen dem ATtiny2313 und dem ATtiny2313A auf. Neben leichten Unterschieden in den Spannungsleveln der Resetleitung haben sich auch einige Register geändert oder sind neu hinzugekommen. Die Signatur der ATtiny2313 ist jedoch unverändert.

Wann die neuen Mikrocontroller verfügbar sein werden steht noch nicht fest. Wie immer wird es aber wohl einige Monate dauern, bis die Mikrocontroller in Stückzahlen erhältlich sein werden.

Die neuen A-Typen der Atmel AVR Mikrocontroller

Seit einiger Zeit gibt es neue Datenblätter für die AVR Mikrocontroller von Atmel, vor allem für die Klassiker wie ATmega32. Die neuen Typen wurden um ein “A” nach der Typennummer ergänzt. Also beispielsweise ATmega32A. Gleichzeitig fällt die Zahl für die Taktfrequenz weg. Ein neuer ATmega32 im DIP Gehäuse heißt daher jetzt vollständig ATmega32A-PU.

Der Grund liegt darin, dass Atmel den Fertigungsprozess optimiert hat und die AVR in einer feineren Struktur fertigt, so dass mehr Die‘s auf einen Wafer passen, wodurch die Fertigungskosten gesenkt werden können.

Gleichzeitig sinkt der Strombedarf. So braucht der ATmega32A bei 3V und 1MHz nur 0,6mA im Active Mode. Ein ATmega32L braucht bei gleichen Bedinungen 1,1mA. Ebenso sinkt der Strombedarf im Idle Mode.

Ein weiterer Vorteil der A-Typen ist, dass sie über den vollen Spannungsbereich arbeiten können. Es gibt also keine Unterscheidung mehr zwischen normaler Version und Low Voltage Version wie beim ATmega32 und ATmega32L. Der ATmega32A arbeitet von 2,7-5,5V und einem Takt von 0-16MHz. Die Einschränkung eines redizierten Taktes bei reduzierter Spannung existiert jedoch weiterhin. Bei 3,3V Versorgungsspannung sind weiterhin maximal 8MHz spezifiziert.

Die Erweiterung “A” ist jedoch nicht bei allen Mikrocontrollern vorhanden. Typen wie der ATmega328P-PU fehlt der Zusatz, obwohl sie ebenfalls mit dem neuen Die ausgestattet sind. Dies liegt daran, dass es keinen Vorgänger gibt. Hier hätte Atmel der Übersichtlichkeit zuliebe ebenfalls den Zusatz anhängen können.

Erste Mikrocontroller wie der ATtiny13A oder der ATmega32A sind bereits verfügbar und auch günstiger als die alten Typen. Mittelfristig wird Atmel wohl die komplette Palette umstellen. Die neuen Typen sind voll kompatibel zu ihren Vorgängern. Die Migration Note am Beispiel des ATmega32 zeigt die Unterschiede und listet den Stromverbrauch der alten und neuen Typen detaillierter auf.

Auch für Bastler hat es einen Vorteil: es reduziert den Lagerbedarf. Wenn man vorher für unterschiedliche Anwendungen einen Standard Typ und einen Low Voltage Typ auf Lager haben musste reicht jetzt nur ein Mikrocontroller.

AVR Studio 4.18 SP1

AVR Studio

AVR Studio

Servicepack für das AVR Studio 4.18.

Part support
The following new parts have been added to AVR Studio since 4.18:
- ATxmega16D4, ATxmega32D4, ATxmega64D3, ATxmega128D3, ATxmega256D3

New Features
AVR ISP mkII command line SW support for XMEGA device family

Neue Xmega Datenblätter

ATxmega128A3

ATxmega128A3

Auf der Webseite von Atmel sind zwei neue Xmega Datenblätter zu finden. ATxmega256D3/192D3/128D3/64D3 und ATxmega128D4/64D4/32D4/16D4

Ein erster Blick in die Datenblätter lässt vermuten, dass es sich um LowCost Varianten der ATxmega32A4 und ATxmega128A3 handeln könnte.

Statt fünf bzw sechs USARTs finden sich nur zwei bzw drei. Ebenso gibt es weniger 16 Bit Timer. Die AD Wandler wandeln statt mit schnellen 2Msps nur mit 200ksps. Der DAC fehlt komplett, ebenso wie die AES/DES Crypto Engine. Beim ATxmega_D4 wurde wohl auch auf JTAG verzichtet.

Immerhin hat Atmel nicht am Speicher gespart. Der ATxmega128D3 enthält wie der ATxmega128A3 neben 128kByte Flash 8kByte RAM und 2kByte Eeprom.

Ziel scheint wohl eine deutliche Reduzierung der DIE Größe und damit eine Kostenreduzierung zu erzielen. Neuerungen gibt es keine.

Xmega Multi Bootloader xmmbl

Derzeit arbeite ich an einem Bootloader für die Xmega Controller. Dazu modifiziere ich die AppNote AVR1605.

Warum noch ein Bootloader? Der Bootloader soll nicht nur an einem fest definierten USART auf eingehende Daten lauschen sondern auf beliebig vielen, also im Extremfall alle acht USARTs vom ATxmega128A1. Außerdem soll der Bootloader auch andere Xmega außer dem ATxmega128A1 unterstützen.

Eine erste Version funktioniert bereits. Bisher jedoch nur mit einem USART. Außerdem springt der Bootloader derzeit nach einem Reset nicht automatisch in die Applikation sondern wartet, bis Daten über die serielle Schnittstelle eintreffen (was derzeit auch so beabsichtigt ist). Die finale Version soll verschiedene Startup Verhalten bekommen.