
Zitat von
Fighter-2
Wie fängt man nun das ganze an? :)
Erstmal müsste man ja eine Verbindung zwischen Hauptcontroller und Speichercontroller herstellen, zusätzlich dann noch zwischen Speichercontroller und Speicher! ;)
Wie wird die Komunikation den hergestellt? :) Gibt es dazu.. was zum nachlesen? ;)
Hallo Chris!
Ich kann dir nur erzählen, wie ich die Sache angehen würde. Wie du an die Sache herangehen sollst, weiß ich nicht.
Ich würde mir zwei ATmega8 nehmen. Einen davon in mein Experimentierboard von Roland Walter und einen in mein (hoffendlich bald geliefertes) Pollin Experimentierboard. Auf dem Pollin Experimentierboard ist auch ein Sockel für einen EEPROM mit drauf. -- Lass mich mal im Schaltplan nachsehen ob der per I²C angesteuert werden kann. -- Ja, passt genau. Allerdings ist Adresse des EEPROM fest auf "000" gestellt. Aber damit kann man leben. :-)
Beide Experimentierboards haben einen MAX232 an Board und können somit über RS-232 an den Computer angeschlossen werden. So übertrage ich später Meldungen zum Debuggen der Programme zum Computer. Mehr brauche ich zum Debuggen nicht.
Als Erstes würde ich mich um das Ansprechen des EEPROMs per I²C kümmern.
Also würde ich ein paar Funktionen dafür schreiben, die das Ganze kapseln.
Code:
sub ee_erase(byval slave_address as byte)
... und hier stehen die Befehle zum Löschen des EEPROMs
end sub
Code:
function ee_first_free_address(byval slave_address as byte) as word
...hier wird herausgefunden bis zu welcher Adresse das EEPROM bereits beschrieben wurde.
Die erste freie Adresse wird zurück gegeben.
end function
Code:
sub ee_write_temperature(byval slave_address as byte, byval temperature as word)
...
end sub
OK, ich halte mich kürzer. Ich würde mich also zuerst mal um die Kommunikation zwischen dem µC und dem EEPROM kümmern. Alle Prozeduren und Funktionen schreiben, die dafür notwendig sind dass das EEPROM gelöscht, ausgelesen und beschrieben werden kann.
Dann würde ich mich um die Kommunikation zwischen dem µC und dem Computer kümmern. Es muss ja per RS-232 eine Verbindung hergestellt werden können. Der Computer muss eine Anweisung erteilen und der µC muss darauf reagieren.
Es macht keinen Unterschied, ob du per RS-232 und einem MAX232 an den µC fährst oder ob du später mit dem mySmartUSB direkt an RX und TX ran fährst.
Ein Befehl sollte mit RETURN ``chr(13)`` abgeschlossen werden. Denn dann kannst du im µC mit INPUT arbeiten um die Befehle zu empfangen. Siehe: http://halvar.at/elektronik/rs232/
Du könntest also z.B. über die UART den Befehl "READ ALL" schicken. Dieser wird von INPUT ausgelesen. Dann analysiert man den Befehl. Mit SELECT CASE kannst du auf verschiedene Befehle reagieren.
Bei "READ ALL" würdest du also per I²C den EEPROM von vorne bis hinten auslesen und jedes Byte über die UART an den Computer zurück schicken.
Bei "DELETE ALL" würdest du per I²C den EEPROM von vorne bis hinten mit 0xFF vollschreiben.
Wenn das Lesen, das Schreiben und die Kommunikation mit dem Computer hinhaut, dann kannst du dich um die Kommunikation mit dem Haupt-µC kümmern. Aber bevor du den Haupt-µC umprogrammierst, würde ich den zweiten ATmega8 als Ersatz dafür verwenden und zuerst das Programm auf diesem entwickeln. Erst wenn alles läuft und die Tests erfolgreich waren, dann würde ich die Funktionen für die Übertragung der Temperaturdaten in den Haupt-µC einbauen.
Die Kommunikation zwischen dem Haupt-µC und dem Speicher-µC könnte per SPI passieren. So lange kein weiteres Gerät am SPI-Bus hängt, genügen zwei Leitungen zwischen Haupt-µC und dem Speicher-µC dafür.
Links zu SPI mit Bascom:
- http://avrhelp.mcselec.com/index.html?config_spi.htm
- http://avrhelp.mcselec.com/index.html?spiin.htm
- http://avrhelp.mcselec.com/index.html?spiout.htm
- "spi-slave.bas" im Bascom-SAMPLES-Ordner.
- http://avrhelp.mcselec.com/index.htm...i_protocol.htm
Man schickt also die Temperatur, in ein Ticket verpackt, über den SPI-Bus vom Haup-µC zum Speicher-µC. Dieser analysiert das Ticket und ruft die zugehörige Prozedur auf, die sich darum kümmert, dass der neue Messwert an die richtige Stelle im EEPROM geschrieben wird (per I²C).
Über die UART können Befehle vom Computer kommen. Wird der Befehl zum Löschen des EEPROM gegeben, dann wird dieser gelöscht. Wird der Befehl zum Auslesen des EEPROM gegeben, dann liest der Speicher-µC die Daten vom EEPROM und gibt diese über die UART an den Computer zurück.
Wenn das alles mal im Renngerät läuft und getestet wurde, dann kann man sich Gedanken darüber mache, was noch super wäre und wie man dieses Logging aufpeppen könnte.
Jetzt mache ich mir ein Mittagessen. :-)
lg
Gerold
:-)
Lesezeichen