Scannermodul M051
von Enrico Grämer
Seit dem letzten Artikel zum Modul ist ja nun leider einiges an Zeit vergangen. Ist eigentlich auch kein Wunder, denn wer beim letzten Clubtreffen dabei war, konnte sehen, daß es nichts zu sehen gab.
So ist das leider, wenn man vor einer Vorführung fremde Hardware ausprobiert. Deswegen ist noch eine umfangreiche Schutzbeschaltung aus Dioden und Widerständen hinzugekommen. Außerdem hat sich herausgestellt, daß das Interruptsystem des KC wesentlich komplizierter als gedacht ist. Das läßt sich allein mit der Controller-Software nicht mehr bewältigen. Deshalb kommt jetzt noch der GAL U5 hinzu.
An Bestellungen gingen bei mir 20 Stück ein; eigentlich erstaunlich - bei dem Preis! Ich schätze mal, daß es den meisten nur um die serielle Schnittstelle geht. Die Platinen konnte ich nun auch endlich bestellen und ich hoffe, daß mit Erscheinen der nächsten KC-News jeder sein Modul bekommen hat.
Aufbau des Moduls
Für alle diejenigen, die das Modul selbst zusammenbauen wollen/können, sind in diesem Beitrag noch einmal die aktuellen Schaltpläne veröffentlicht. Wie auf dem Bestückungsplan zu sehen ist, geht es auf der Leiterplatte sehr eng zu. Das höchste Bauteil ist der Quarz am Controller. Wird er stehend eingebaut, dann gibt es ein kleines Platzproblem mit dem Modulgehäuse. Man kann es lösen, wenn das Plasteteil der oberen Gehäusehälfte entsprechend bearbeitet (ausgespart) wird. Da sich an dieser Stelle gerade das Metallschild befindet, gibt es ,,optisch`` keine Beeinträchtigungen. Als Alternative kann man auch versuchen, den Quarz ,,auf der schmalen Seite liegend`` einzusetzen.
Ansteuerung des Controllers im Modul M051
Wer sich auch softwareseitig näher mit den Modul beschäftigen möchte, der findet im folgenden noch einmal eine Zusammenstellung der wichtigsten Informationen zur Verwendung des Controllers. Nicht enthalten in der folgenden Darstellung ist die Programmierung der Interruptbetriebsart, da deren Entwicklung noch nicht abgeschlossen ist. Sie wird erst in der Version 1.1 der Controllersoftware nutzbar sein. Alle mit Null belegten Bits in den Steuer- und Statusbytes sind für zukünftige Erweiterungen reserviert. Beim Schreiben sind diese Bits auf Null zu setzen, beim Lesen ist von einem unbestimmten Inhalt auszugehen.
- Strukturbyte des Moduls: 0ECh
- Wenn ein Controller vorhanden ist, dann liegt PB2 der PIO auf L-Pegel
- Basisadresse PIO: 20h
- Basisadresse Controller: 24h
- I/O-Adressen des Controllers:
24h ... SIO-Daten 25h ... I2C-Daten 26h ... SIO-Befehle 27h ... I2C-Befehle - SIO-Befehle schreiben
7 6 5 4 3 2 1 0 1. Byte: | 0 0 0 | | | | | Baudrate: 0000 ... 300 Baud | 0001 ... 600 Baud | 0010 ... 1200 Baud | 0011 ... 2400 Baud | 0100 ... 4800 Baud | 0101 ... 9600 Baud | 0110 ... 19200 Baud | 0111 ... 28800 Baud | 1000 ... 38400 Baud | 1001 ... 57600 Baud | 1010 ... 115200 Baud 1 ... nur noch Status lesen (bei Befehle lesen) 7 6 5 4 3 2 1 0 2. Byte: 0 0 0 0 | | | | | Handshake: 000 ... kein Handshake | 001 ... RTS/CTS-Handshake 1 ... 64 Byte Puffer bei Handshake aktiv - SIO-Befehle lesen
7 6 5 4 3 2 1 0 1. Byte: | 0 0 0 0 0 | | Statusbyte | | 1 ... Empfänger abgabebereit | 1 ... Sender aufnahmebereit 1 ... nur ist Status lesbar - 2./3. Byte: wie schreiben 1./2. Byte
- 4. Byte: Versionsnummer (max. 15.15 = 0FFh), z.Z. 10h = Version 1.0
- I2C-Befehle schreiben
7 6 5 4 3 2 1 0 1. Byte: 0 0 0 0 | | | | | | | 0 ... Bus 0 aktiv | | | 1 ... Bus 1 aktiv | 0 0 ... Einzelbyteübertragung | 0 1 ... Blockmodus | 1 1 ... ,,per Hand`` 0 ... 7 Bit I2C-Adresse 1 ... 10 Bit I2C-Adresse
oder1. Byte: 0 1 0 0 0 0 0 0 I2C-Gerät auf Adresse (7/10 Bit) vorhanden? - 2./3. Byte: 7/10-Bit-Adresse, L-Teil zuerst
- Rückmeldung: 01h vorhanden, 0FFh fehlt
- I2C-Befehle lesen
- 1. Byte: wie I2C-Befehle schreiben 1. Byte
- 2. Byte: Versionsnummer (max. 15.15 = 0FFh), z.Z. 10h = Version 1.0
Controllerprogrammierung
Für den verwendeten ATMEL-Controller AT89S8252 gibt es bereits eine Lösung für ein Programmiergerät, anschließbar an den KC über ein M001, einschließlich der notwendigen Software. Durch die Verwendung der seriellen Programmierschnittstelle des Controllers ist der Hardwareaufwand sehr gering. Diese Lösung wird in einer der nächsten News-Ausgaben ebenfalls vorgestellt werden. Damit steht Interessenten die Möglichkeit offen, die interne Controllersoftware weiterzuentwickeln und den eigenen Wünschen anzupassen.