melde mich nach langer Abwesenheit sowohl vom c't-Bot als auch vom Forum zurück. Habe vor ca. 4 Wochen mal wieder angefangen, ein wenig an Eddie (so hab ich meinen Bot genannt) herumzuschrauben. Warum ich damit wieder anfing ist mir genauso schleierhaft wie warum ich damit Monate vorher aufgehört habe... Jedenfalls erzähle ich mal ein bißchen, was es neues gibt.
Hardwaretechnisch habe ich erstmal das Display ersatzlos entfernt. An seine Stelle trat eine Lochrasterplatine, die einerseits mit der Hauptplatine über die UART-Erweiterung (J4) und andererseits über die Displayschnittstelle (ST4) verbunden ist. Ich habe damals noch einen SpeakJet von Sander Electronic ergattern können, den ich zusammen mit einer LM386-Verstärkerschaltung aufgebaut habe. Den Mini-Lautsprecher habe ich mit Heißkleber unter die Lochrasterplatine geklebt. Zum SpeakJet gleich nochmal mehr. Ich habe dazu noch eine RJ11-Buchse (4-Draht Telefonbuchse) aufgelötet, die die USART (Rx / Tx / CTS) des Mega32 für die Kommunikation mit dem PC freilegt. Die Tx-Leitung wird auch vom SpeakJet benutzt, und damit der nicht jedesmal lospiept, wenn Eddie mit dem PC quatscht, schalte ich ihn über ERW1 und einen Transistor frei. Hauptsächlich will ich den RJ11-Anschluss zum Firmwareupdate mittels Bootloader benutzen.
An der Displayschnittstelle, genauer gesagt an Pin 14, dem nach dem Displaypatch völlig unbenutzten Pin, hängt ein Funkmodul von Circuit Design, wovon wir in der Firma noch ein paar unbenutzte Muster hatten. Somit habe ich noch ein Shift-Register frei. Ich kann über den Jumper der Displaybeleuchtung dieses Funkmodul an- und abschalten. Da es ein reines Sendemodul ist, benutze ich es zur permanenten Übermittlung von Telemetriedaten an den PC. Ich habe mir dazu ein Gegenstück um den USB-2-Bot-Adapter gebaut. Dieser steckt als Modul auf einer Platine, auf der ebenfalls eine RJ11-Buchse und der Funkempfänger sitzen. Diese teilen sich den Rx-Anschluss des FT232, deshalb habe ich noch einen Multiplexer (74HC4053) verbaut, der über das DTR-Signal zwischen elektrischem und Funkempfang umschaltet. Grundgedanke war der, dass ich ohne ISP-Adapter und auch mit meinem PowerBook den Bot programmieren kann.
Softwareseitig habe ich angefangen, ein komplett neues Programm zu schreiben. Hauptsächlich weil low-level-µC-Programmierung mein Interesse geweckt hat. Ich habe also zuerst die Motorsteuerung angefangen und auf Timer 1 16kHz als PWM-Frequenz verwendet. Kein Schnurren, kein Stottern, saubere Motorendrehzahlen. Timer 0 habe ich für den Empfang von RC6-Fernbedienungskommandos verwendet. Timer 2 ist "multi purpose" und steht momentan auf 9600Hz. Bei jedem zweiten Takt, sprich mit 4800Hz, bekommt das Funkmodul ein Bit zu senden. Und zwar aus einem Ringpuffer, der ständig alle Sensoren- und Aktorendaten enthält (oder mal enthalten soll). So lasse ich zur Zeit das Bild des Maussensors ständig auslesen und über die Funkstrecke senden, habe also während Eddies Fahrt durchs Wohnzimmer vor Augen, was er unter der Grundplatte sieht. Der selbe Interrupt liest die Sensorendaten ein, steuert also nicht-blockierend die AD-Wandler, und setzt die Enable-Leitungen immer so, dass ein Sensor aus- und ein anderer eingeschaltet wird. Dadurch erhoffe ich mir weniger Spannungsschwankungen. Später soll dieser Interrupt auch noch die Servo-PWM erzeugen. Die Mainloop braucht sich jetzt nur noch um das Verhalten zu kümmern. An der Stelle habe ich noch nichts getan, allerdings teste ich gerade die Sensoren. Dafür lasse ich zwei Oszillatoren des SpeakJet Tonfrequenzen entsprechend den Sensordaten erzeugen. Im Klartext, Eddie pfeift immer gleichzeitig zwei Töne (rechter und linker Sensor), und zwar tiefe, wenn seine Abstandssensoren kein Hindernis sehen, und immer höher werdende, je näher er einem Hindernis kommt.
Mein Statusbericht ist wohl etwas länger geworden... Wünsche viel Spaß beim Lesen gehabt zu haben!

Gruß memnoch