Der UART ist bekanntlich eine schöne einfache Schnittstelle, über die man schnell ein paar Daten senden und empfangen kann. Diese haben wir auch jahrelang genutzt und werden sie sicher weiter benutzen.
Wenn es allerdings ein wenig professioneller sein darf, gibt es durchaus Alternativen. Der neueste Hit: USB
Diese haben wir lange Zeit als zu kompliziert abgetan und allenfalls einen USB<->RS232 Wandler benutzt. Hat den Vorteil, dass man keine Treiber schreiben muss.
Wie so oft aber, hat sich die Open-Source-Gemeinde da schon etwas überlegt und nach diesem Podcast war klar:
Wieder mal ein klassisches Windows-Problem.
Unter Linux gibt es da eine tolle Bibliothek namens LibUSB, die mit LibUSBWin32 auch unter Windoof funktioniert. Ganz ohne Treiber, der irgendwo im Kernel rumpfuscht.
Auch Atmel hat diese 'neue' Schnittstelle nicht verschlafen und uns mit der AT90USB-Reihe beglückt. Diese bringen neben ordentlich Flash-Programmspeicher und einer USB-Schnittstelle als Device sogar eine Host-Funktion mit (Zumindest der AT90USB1287).
Darauf gekommen bin ich, nachdem ich für die Arbeit ein günstiges Eval-Board in vertrauter Umgebung (AVR) gesucht und auch gefunden habe. Zunächst wurde nach dem Motto 'Das haben wir schon immer so gemacht' ins Auge gefasst, den USB lediglich als RS232-Adapter zu missbrauchen.
Dann habe ich den erwähnten Podcast gefunden und gemerkt, dass ich nicht einmal einen Treiber schreiben muss. Lediglich Libusb aus den Distris saugen und los gehts.
Auch für mein Device habe ich etwas sehr schönes Gefunden. An dieser Stelle noch einmal vielen Dank an Stefan Salewski für die tolle Avr-Bibliothek! Hat auf Anhieb funktioniert.
Kleines QT-Programm dazu und fertig ist die Schnittstelle.