Es soll eine Mikrokontrollerschaltung entstehen, die, ähnlich einer Webkamera, Standbilder auf einer Funkbake überträgt.
Die gesendeten Bilder werden als SSTV-Signal ausgestrahlt. Die Bilder kommen von einer Kamera, die auf dem
Unnenberg-Turm aufgestellt wird.
Die vorläufige Planung sieht so aus: Auf dem Unnenberg-Turm wird eine analoge Kamera installiert. Ein
Videowebserver stellt die Bilder in das lokale Netzwerk. Das erste Board holt ein aktuelles Standbild
vom Webserver ab (leider als JPEG-Bild) und sendet es über den SPI-Link an das zweite Board. Dieses
wandelt das JPEG-Bild in ein Bitmap um, extrahiert also die Farbinformationen für jeden Pixel und reduziert
gleichzeitig die Bildgröße. Dann wird es das Bild, zusammen mit einigen Steuersignalen, als SSTV-Signal
an eine Funkanlage weiterleiten.
Ethernetboard
HTTP-Anfrage zum Webserver
Extraktion eines JPEG-Bildes aus dem kontinuierlichen Datenstrom
Linearphasiger Filter zum Ausgleich der Quantisierungseffekte, wahrscheinlich Besselfilter
Atmega32, 5x 512Kb statischer RAM
SPI-Link
Die beiden Prozessoren kommunizieren über das Serial Periphal Interface.
Das Linkmodul benutzt die byte-orientierte Übertragung der SPI-Einheiten beider Atmegas um eine paketorientierte
Übermittlung zu ermöglichen. Dabei ist die Hauptfunktion des SPI-Link-Moduls die Synchronisierung der Kommunikation.
Dazu werden zwei Wartesignale und die Slave-Select-Funktion der SPI-Einheiten verwendet. Zur Sicherung der korrekten
Übertragung erfolgt ein Fehlererkennung über eine CRC16-Prüfsumme.
Bei der Kommunikation per SPI gibt es einen Master, das Ethernetboard, und einen Slave, das JPEG-Board. Die eigentliche
Schnittstelle besteht aus vier Leitungen: "Master Out Slave In", "Master In Slave Out", Takt und "Slave Select" (invertiert).
Über die Slave-Select-Leitung aktiviert der Master die SPI-Einheit im Slave. Der Master generiert nun ein Taktsignal.
Dabei werden 8 Bits vom Master in den Slave und umgekehrt übertragen. Beide Seiten benutzen im Prinzip jeweils ein Schieberegister.
Hinzu kommen 2 weitere Leitungen, nämlich "Wait" und "Wait2". Über die erste teilt der Slave dem Master mit, ob er
bereit für die nächste Übertragung ist. Ist diese auf Null gesetzt, kann der Master jederzeit einen Transfer starten.
Über die "Wait2"-Leitung synchronisiert der Slave seine Prüfantwort mit dem Master. Vor der Übertragung des ersten Prüfbytes
sollte Wait2 auf Null liegen, kurz nach der Übertragung auf Eins gehen. Der Master überwacht diesen Zustandswechsel, um
sicherzustellen, dass der Slave alle Datenbytes erhalten hat. Nach der Übertragung des zweiten Prüfbytes überprüft der
Slave die empfangenen Daten mit den Prüfinformationen des Masters. Wenn er bereit zum Antworten ist, setzt er Wait2 auf Null
und der Master startet den Austausch der Antworten.
Zustandsautomat - Datenübertragung
Zur Übertragung kommen zwei Automaten zum Einsatz, einer auf jeder, die über ein sehr einfaches
"Protokoll" miteinander sprechen. Jeder hat drei für den anderen sichtbare Zustände:
Ready - beide: Ich bin bereit
Waiting - JPEG-Board: Warte auf "Connected"-Antwort
Der Zwischenspeicher hat eine Größe von 32 Bytes, die auch immer komplett übertragen werden (mit dem SPI-Link).
Das erste Byte enthält stets den eigenen Zustand. Die anderen Bytes haben nur im Zustand Xfer eine Bedeutung. Dann gibt
das zweite Byte die Datenmenge in der Übertragung an und der Rest sind die Daten.
Wenn der Gegenüber nicht im erwarteten Zustand ist, weil irgendein Fehler aufgetreten ist, oder wenn z.B. das
uIP-Framework einen Fehler meldet, wechselt jeder Automat in den Anfangszustand. Bei der nächsten Übertragung
wechselt dann auch der andere Automat, da der Automat mit Fehler sich nicht im erwarteten Zustand befindet.
Eine Besonderheit gibt es im Xfer-Zustand. Sendet das JPEG-Board eine Datenlänge, die größer als die Zwischenspeichergröße
ist, so wird das Paket verworfen und der Automat des Ethernetboards wechselt zum Bereitschaftszustand.
Intern besitzen die Automaten ggf. weitere Zustände, die aber keinen SPI-Transfer anstrengen und somit unsichtbar
für den anderen Automaten sind. Z.B. der Establishing-Zustand des Ethernetboards.
Tipps
Kleine Dinge, die mir während der Entwicklung aufgefallen sind, und auf die beim Nachbauen hilfreich sind.
Der Programmierer sollte nach der Übertragung abgezogen werden, zumindest beim SPI-Slave (JPEG-Board)
Während der Testphase den uC ständig senden zulassen, und dann den anderen zu programmieren, ist nicht gut!