15.1.15:
Ein neues Leben für das LP
Mikrocontroller von Ralf Beesner
Wie oben angedeutet, funktioniert das Flashen mit dem LP
Mikrocontroller und den Original-Tools (
LPMicroISP.exe
und LPMicros.exe)
im ISP-Modus nur an echten seriellen Schnittstellen brauchbar. Mit
Seriell-USB-Wandlern geht es entweder sehr langsam (mit einigen
Wandlern, die mit einem FTDI-Chip bestückt sind) oder gar nicht.
Erläuterung: LPMicros.exe hat zwei Modi; zunächst muss man im
ISP-Modus den Bootloader im problematischen ISP-Modus auf den
Microcontroller übertragen; ist der erst einmal auf dem Mikrocontroller
vorhanden, wird dann im unproblematischen seriellen Modus programmiert.
Den Grund für die Probleme habe ich nicht wirklich verstanden,
aber es scheint damit zusammenzuhängen, dass im ISP-Modus "Bitbanging"
genutzt wird (also das "Wackeln" an den Pins des USB-Seriell-Wandlers).
Dabei muss jeder Flankenwechsel in ein neues USB-Paket verpackt werden
und zudem die Datenübertragungsrichtung ständig umgeschaltet werden,
weil der zu programmierende Mikrocontroller die Bits am MISO-Ausgang
wieder herausschiebt und das Flash-Programm die herausgeschobenen Bits
prüft. Die Übertragung wird so stark ausgebremst, dass Timeouts
auftreten.
Der
"Cheepit-Sparrow"
beweist jedoch, dass die Datenübertragung auch funktioniert, wenn
dieser "Rückmeldekanal" gar nicht ausgewertet wird.
Obwohl der Sparrow ja eigentlich die PC-Soundkarte als
Programmiertool nutzt und die Programmiersoftware im Webbrowser läuft,
eignet sich die Sparrow-Hardware auch für einen Anschluss an die
serielle Schnittstelle eines Rechners. Burkhard hatte daher das
Programmiertool LPMicros.exe
abgewandelt,
so dass man den Sparrow offline (also ohne Internetverbindung) über
serielle Schnittstellen und Seriell-USB-Wandler flashen kann.
Interessanterweise funktioniert das auch mit "hoffnungslosen
Fällen" unter den Seriell-USB-Wandlern, weil es beim Sparrow keinen
"ISP-Rückmeldekanal" gibt, der den Seriell-USB-Wandler ausbremst. Die
Sparrow-Hardware invertiert jedoch die Programmierpegel; wäre das nicht
der Fall, könnte man mit dem Tool Sparrow_RS232.exe auch die Attinies
der LP Mikrocontroller-Hardware flashen.
Burkhard hat jedoch eine Experimentalversion veröffentlicht,
die mit invertierten Pegeln arbeitet und daher keinen Hardware-Inverter
benötigt:
SparrowRS232
invertiert.
Sie ist etwas unscheinbar (und das Prinzipschaltbild auf dem ersten
Kartenreiter ist noch nicht angepasst), aber diese Version kann die LP
Mikrocontroller-Hardware mit so ziemlich jedem Seriell-USB-Wandler
flashen! Zu beachten ist lediglich, dass das Programm wegen des
fehlenden "Rückkanals" nicht feststellen kann, ob wirklich ein
Mikrocontroller angschlossen ist und erfolgreich programmiert wird; der
Fortschrittsbalken läuft immer los.
Das funktioniert nicht gerade rasend schnell, aber in
erträglicher Zeit und recht zuverlässig. Das Programm bringt einen
praktischen Reload-Modus mit, der mit einem Knopfdruck ein geändertes
Hex-File erneut lädt und in den Microcontroller überträgt, und ein
Terminal ist auch eingebaut.
Man kann das Tool aber auch einmalig nutzen, um den Bootloader
init.hex auf den ATtiny 13 zu übertragen und dann mit LPMicros.exe
weiterzumachen - z.B., um die Experimente des LP Mikrocontroller
nachzuvollziehen. Man umgeht so den Modus "Initialisieren - Bootloader
und Fuses übertragen" von LPMicros.exe, der nicht mit den "störrischen"
Seriell-USB-Wandlern funktioniert.