Hallo zusammen !
Für Test- und Debuggingzwecke hatte ich immer wieder den Bedarf einer einfachen, universell nutzbaren Anzeige. Von der Größe her völlig ausreichend für mich und auch preislich im Rahmen war da eine LCD-Anzeige wie diese hier :
http://www.reichelt.de/Hintergrund-...8AAAIAACcaJpIaa09a03323f39f3e79d89f88043eac8e
Allerdings "verbraucht" die mindestens 6 Ports und die Routinen zu deren Ansteuerung sind auch relativ aufwendig (Initialisierung, Timing, ect.).
Ich bin recht häufig mit den kleinen ATTINYs (13er und 24er) unterwegs. Die Anzeige muss deshalb mit wenigen Ports auskommen und darf keinen großen Softwareaufwand und kein exaktes Timing erfordern.
Herausgekommen ist ein kleines Zusatzmodul für die oben erwähnte LCD-Anzeige (siehe Bilder links oberhalb des LCD). Dieses übernimmt die Ansteuerung der Anzeige, so dass sich der Datensender darum nicht kümmern muss. Die Daten werden synchron seriell an das Modul übertragen, womit senderseitg nur 2 Ports benötigt werden und ein exaktes Timing nicht erforderlich ist. Der Sender übermittelt einfach die anzuzeigenden Daten im ASCII-Format.
Nach dem Einschalten signalisiert das Modul im Display die Empfangsbereitschaft des Moduls (siehe Bild "Bereit-Anzeige). Ein einzelner Startimpuls (Clock) markiert den Beginn der Übertragung, dann folgen bis zu 32 Bytes an Daten bitweise mit jeweils einem Clockimpuls (Details siehe Schaltplan). Die Ausgabe der ASCII-Zeichen im Display erfolgt, nach Empfang des 32. Bytes oder nach dem Erreichen des Timeout. Danach ist das Modul sofort wieder empfangsbereit. Die empfangenen Daten bleiben im Display bis der Sender neue schickt oder die Anzeige löscht. Der Timeout ist mit dem Jumper einstellbar auf 16ms (geschlossen) oder 80ms (offen).
Welche Anzeigemöglichkeiten gibt es ?
1) beide Zeilen der Anzeige mit beliebigem Text füllen - 32 Bytes vor Timeout übertragen
2) nur einen Teil des Displays mit Text füllen - weniger als 32 Bytes übertragen und den Timeout abwarten
3) Display löschen - nur den Startimpuls senden und den Timeout abwarten
Ich verwende den Anzeigebaustein überwiegend bei Testaufbauten auf dem Steckbrett (siehe Bild "Beispieltext"). Mittlerweile nutze ich ihn auch als Anzeigebaustein im Zusammenhang mit kleinen Zusatzmodulen wie einem RC5(e)-Decoder (siehe Bild "Anzeige mit RC5-Decoder").
Der Schaltungsaufwand ist kaum der Rede wert. Der Quartz sorgt für ausreichend hohe Empfangsgeschwindigkeit des Moduls bei Sendertaktfrequenzen bis 10 MHz. Bei schnelleren Sendern muss ggf. die Senderoutine etwas gebremst werden (z.B. mit ein paar weiteren NOP's in der Clock-Subroutine). Der Timeout sollte bei Sendern mit Taktfrequenz < 1 MHz auf 80ms, anderenfalls auf 16ms eingestellt werden.
Quellcode und HEX-File gibt's anbei, wie auch Senderoutinen in ASM (in der Sektion "Anzeige" wird die Funktion demonstriert). Das Protokoll ist simpel, es in C oder BASCOM zu implementieren sollte kein Problem sein.
Gruß
Pirx
Für Test- und Debuggingzwecke hatte ich immer wieder den Bedarf einer einfachen, universell nutzbaren Anzeige. Von der Größe her völlig ausreichend für mich und auch preislich im Rahmen war da eine LCD-Anzeige wie diese hier :
http://www.reichelt.de/Hintergrund-...8AAAIAACcaJpIaa09a03323f39f3e79d89f88043eac8e
Allerdings "verbraucht" die mindestens 6 Ports und die Routinen zu deren Ansteuerung sind auch relativ aufwendig (Initialisierung, Timing, ect.).
Ich bin recht häufig mit den kleinen ATTINYs (13er und 24er) unterwegs. Die Anzeige muss deshalb mit wenigen Ports auskommen und darf keinen großen Softwareaufwand und kein exaktes Timing erfordern.
Herausgekommen ist ein kleines Zusatzmodul für die oben erwähnte LCD-Anzeige (siehe Bilder links oberhalb des LCD). Dieses übernimmt die Ansteuerung der Anzeige, so dass sich der Datensender darum nicht kümmern muss. Die Daten werden synchron seriell an das Modul übertragen, womit senderseitg nur 2 Ports benötigt werden und ein exaktes Timing nicht erforderlich ist. Der Sender übermittelt einfach die anzuzeigenden Daten im ASCII-Format.
Nach dem Einschalten signalisiert das Modul im Display die Empfangsbereitschaft des Moduls (siehe Bild "Bereit-Anzeige). Ein einzelner Startimpuls (Clock) markiert den Beginn der Übertragung, dann folgen bis zu 32 Bytes an Daten bitweise mit jeweils einem Clockimpuls (Details siehe Schaltplan). Die Ausgabe der ASCII-Zeichen im Display erfolgt, nach Empfang des 32. Bytes oder nach dem Erreichen des Timeout. Danach ist das Modul sofort wieder empfangsbereit. Die empfangenen Daten bleiben im Display bis der Sender neue schickt oder die Anzeige löscht. Der Timeout ist mit dem Jumper einstellbar auf 16ms (geschlossen) oder 80ms (offen).
Welche Anzeigemöglichkeiten gibt es ?
1) beide Zeilen der Anzeige mit beliebigem Text füllen - 32 Bytes vor Timeout übertragen
2) nur einen Teil des Displays mit Text füllen - weniger als 32 Bytes übertragen und den Timeout abwarten
3) Display löschen - nur den Startimpuls senden und den Timeout abwarten
Ich verwende den Anzeigebaustein überwiegend bei Testaufbauten auf dem Steckbrett (siehe Bild "Beispieltext"). Mittlerweile nutze ich ihn auch als Anzeigebaustein im Zusammenhang mit kleinen Zusatzmodulen wie einem RC5(e)-Decoder (siehe Bild "Anzeige mit RC5-Decoder").
Der Schaltungsaufwand ist kaum der Rede wert. Der Quartz sorgt für ausreichend hohe Empfangsgeschwindigkeit des Moduls bei Sendertaktfrequenzen bis 10 MHz. Bei schnelleren Sendern muss ggf. die Senderoutine etwas gebremst werden (z.B. mit ein paar weiteren NOP's in der Clock-Subroutine). Der Timeout sollte bei Sendern mit Taktfrequenz < 1 MHz auf 80ms, anderenfalls auf 16ms eingestellt werden.
Quellcode und HEX-File gibt's anbei, wie auch Senderoutinen in ASM (in der Sektion "Anzeige" wird die Funktion demonstriert). Das Protokoll ist simpel, es in C oder BASCOM zu implementieren sollte kein Problem sein.
Gruß
Pirx