Hallo,
ich habe wieder etwas Zeit in dieses Projekt investiert und bin ein gutes Stück weiter gekommen. Die LED's, Tasten und das LCD haben recht schnell funktioniert. Dummerweise war der Flash des Tiny4313 mit den I2C LCD-Routinen schon über 50% gefüllt. Aber ich habe erst mal weiter gemacht.
Als nächstes habe ich festgestellt, dass das Bluetooth-Modul doch mit 5V läuft und nicht mit 3,3V. Grml! Ich hatte das Modul schon mal im Einsatz und die Pegelwandler noch in Erinngerung und dachte deshalb es läuft mit 3,3V. Ein Blick in den alten Schaltplan hat ergeben, dass der Atmel mit 3,3V gelaufen ist und das Bluetooth-Modul mit 5V. Also Spannungsregler raus und ich konnte mit dem Bluetooth-Modul kommunizieren.
Ich habe zunächst einen Kopplungs-Prozess implementiert. Wenn man eine Taste beim einschalten gedrückt hält geht der BT_STK500 (so nenne ich das ganze Teil) in den Kopplungsmodus und sucht alle verfügbaren Bluetooth-Geräte. Diese können dann auf dem LCD durchgesehen werden. Mit einer Taste springt man zum nächsten Gerät, mit der zweiten Taste bestätigt man die Auswahl und die Kopplung wird vorgenommen und im EEPROM vermerkt.
Jetzt war der Flash des Tiny4313 aber bereits zu 97% gefüllt. Das wird so nichts habe ich mir gedacht. In der Schublade lag noch ein ATmega162 rum. Also habe ich schnell einen Adapter mit einem 20poligen und einem 40poligen Sockel und etwas Flachband erstellt. Die IO-Pings konnte ich 1:1 übernehmen. ISP und sogar USART-Schnittstelle lagen auf den gleichen IO-Ports. Es musste deshalb auch erstaunlich wenig Code angepasst werden. Lediglich die Register und Bits der EEPROM-Verwaltung und des USART mussten leicht umbenannt werden.
Ich habe noch festgestellt, dass ich den falschen Quarz gewählt habe. Das Bluetooth-Modul kann eine maximale Datenübertragung über Bluetooth von 230400 Baud. Mit meinem 8MHz-Quarz bedeutet das einen UBR-Wert von 34,7 was wohl zu weit von 35 und zu weit von 34 weg ist. Zumindest ist die Kommunikation mit dieser Baud-Rate nur mit vielen Fehlern möglich. Auf meiner Bestellliste steht also ein 14.745.600 Hz Quarz, damit ich endlich auf die volle Geschwindikgeit umstellen kann. Der ATmega verträgt laut Datenblatt maximal 16MHz, also bin ich mit den 14 MHz bestens bedient.
In der Software ging es trotzdem weiter: Wenn keine Taste beim starten gedrückt wird und eine Kopplung im EEPROM vermerkt ist geht der BT_STK500 in den READY-Modus und wartet auf eine eingehende Verbindung über die COM-Schnittstelle. Diese wird dann angenommen. Die Trennung von der Gegenstelle und die Trennung mittels Tastendruck am BT_STK500 sind bereits auch implementiert.
Das ist jetzt der Stand der Dinge. Ich habe auch mal kurz mein AVR-Studio auf STK500 umkonfiguriert und als COM-Port den gekoppelten Bluetooth-Port angegeben. Die Verbindung wird aufgebaut und es werden vom BT_STK500 auch Daten empfangen. Natürlich gehts hier nicht mehr weiter, weil ich noch nicht weiß, was ich antworten muss.
Jetzt fehlt mir nur noch den Quellcode für den AVR1200 auf dem STK500. Die Protokoll-Beschreibung des STK500 hätte ich zwar, aber die Umsetzung würde ich mir gerne mit Hilfe des Quellcodes etwas vereinfachen. Da hier leider noch kein Tipp gekommen ist werde ich dafür mal einen extra Thread aufmachen.
Zum Abschluss noch ein Foto vom aktuellen Aufbau:
Viele Grüße
Andreas
Lesezeichen