|
|
SerPar.a51 |
|
|
|
Programmbeschreibung |
|
|
|
|
|
|
|
|
|
|
|
beabsichtigte Wirkung Dieses Programm ist ein Beispiel dafür, wie MC80515 / MC80535 Mikrocontrollersysteme, einem zweiten Computer funktionale Fähigkeiten bereitstellen können. Im vorliegenden Fall spielt sich der Datenaustausch zwischen beiden Systemen über eine serielle Schnittstellenverbindung mit den nachfolgend genannten Einstellungen ab. Baud 9600, 8 Datenbits, no Parity, 1 Stopbit, no Handshake.
Funktionalitäten von SerPar.A51 Das Programm arbeitet wie gesagt auf einem MC80515 Mikrocontrollersystem und wartet darauf, dass ihm von einem fremden Rechner, über die serielle Schnittstelle ein Kommando gesendet wird. Tritt dieser Fall ein, und versteht SerPar.A51 das Kommando, wird es das Kommando ausführen und dem nachfragenden Rechner eine Antwort zurücksenden. Folgende Anweisungen kann ein fremder Rechner über SerPar.A51 auf dem 80515 /MC80535-System anstossen.
.. digitale Ein- oder Ausgaben an den MC80535-Toren lesen oder veranlassen .. Digital-/Analogwandlungen an 3 DA-Ausgängen anweisen .. Analog-/Digitalwandlungen an 8 AD-Eingängen lesen .. eine angeschlossene Funkuhr in Bezug auf Zeit und Datum lesen
Hierzu stehen die virtuellen Tore A-F und 0-7 bereit, deren Zuordnung zu den realen Ports des MC80515 aus nachfolgender Tabelle entnommen werden kann .. |
|
|
|
|
|
|
Tor A |
P4.0 - P4.7 1 |
1 * digitales Ein- oder Ausgabetor mit 8 Bit Breite |
|
Tor B |
P6.0 - P6.7 1 |
1 * digitales Eingabetor mit 8 Bit Breite oder .. |
|
Tor 0-7 |
P6.0 - P6.7 1 |
8 * analoge Eingabetore mit je 8 Bit Genauigkeit |
|
Tor C |
P5.0 - P5.7 |
2 * digitale Ein- oder Ausgabetore mit je 4 Bit Breite |
|
Tor D |
P1.1 |
1 * analoges Ausgangstor, pulsweitenmoduliert mit je 8Bit oder 16Bit Genauigkeit |
|
Tor E |
P1.2 |
1 * analoges Ausgangstor, pulsweitenmoduliert wie D |
|
Tor F |
P1.3 |
1 * analoges Ausgangstor, pulsweitenmoduliert wie D |
|
|
|
|
|
Pin |
|
Fest belegte Anschlüsse am MC80535-Rechner |
|
P1.6 |
|
Ausgabe des 1MHz Systemtaktes (1:5) |
|
P1.7 |
|
Eingang zum Anschluss eines DCF77-Empfängers |
|
P1.0 |
|
Anzeige der DCF-Bereitschaft |
|
P1.4 |
|
Fehler beim DCF-Empfang 100/200ms |
|
P1.5 |
|
Fehler beim DCF-Empfang 1/2 s |
|
|
|
|
|
|
Modi 0-3 des Programms Serpar.A51 Der Seriell-Parallel-Wandler arbeitet mit einem Übertragungsprotokoll von 9600 Baud. Daraus ergibt sich, dass maximal 960 Zeichen pro Sekunde und Richtungen auf der seriellen Schnittstelle übertragen werden können. Abhängig von der Anzahl der pro Befehl zu übertragenden Zeichen, vermindert sich die Menge der Befehle, die pro Sekunde vom nachfragenden Rechner, an das Wandlerprogramm gegeben werden können. Deswegen wurden in dem Programm verschiedene Arbeitsweisen (Modi) vorgesehen. Im Modus 0 sind die Befehle kurz, dadurch können viele Anweisungen pro Sekunde gesendet werden, jedoch lassen sich nicht alle Möglichkeiten des Wandlers ausschöpfen. Im Modus 1 sind die Befehle länger, ihre Anzahl pro Sekunde wird geringer, aber es lässt sich mehr befehlen und im Modus 3 (HauRuck-Modus) wird mit der maximalen Geschwindigkeit gearbeitet, allerdings nur an zwei digitalen Toren. Der Modus 2 ist bisher nicht belegt.
Kontrollregister: Um in die verschiedenen Modi umschalten zu können, wurde ein Kontrollregister eingeführt. Es beinhaltet Flaggen, die Informationen über den eingeschalteten Modus und die Einstellungen der virtuellen Tore bereitstellen. Das Kontrollregister ist 8Bit breit und seine Flagge beinhalten folgende Informationen .. |
|
|
|
|
|
|
Bit 7 |
Bit 6 |
Bit 5 |
Bit 4 |
Bit 3 |
Bit 2 |
Bit 1 |
Bit 0 |
|
Status |
ModusA2 |
ModusA1 |
TorA 0-8 |
TorC 4-7 |
Modus B |
Modus DA |
TorCO-3 |
|
|
|
|
|
Status: |
x |
momentan keine Bedeutung |
|
ModusA2: |
Modus A2 |
Modus A1 |
Wirkung |
|
ModusA1 |
0 |
0 |
Modus 0 eingeschaltet (Startzustand) |
|
|
0 |
1 |
Modus 1 eingeschaltet |
|
|
1 |
0 |
Modus 2 eingeschaltet (z.Zt nicht belegt) |
|
|
1 |
1 |
Modus 3 eingeschaltet |
|
TorA 0-8 |
0 |
(P4.0-P4.7) |
alle 8 Bits des Tores sind Ausgänge |
|
|
1 |
(P4.0-P4.7) |
alle 8 Bits des Tores sind Eingänge |
|
TorC 4-7 |
0 |
(P5.4-P5.7) |
die 4 Bits des Tores sind Ausgänge |
|
|
1 |
(P5.4-P5.7) |
die 4 Bits des Tores sind Eingänge |
|
Modus B |
0 |
(P6.0-P6.7) |
die 8 Bits des Tores sind digitale Eingänge |
|
|
1 |
|
die 8 Bits des Tores sind jeder für sich ein analoger Eingang |
|
ModusDA |
0 |
(P1.1-P1.3) |
die Analogausgänge sind 8Bit PWM-Ausgänge mit einer Auflösung von 256 Schritten |
|
|
1 |
(P1.1-P1.3) |
die Analogausgänge können bis zu 16Bit PWM-Ausgänge mit programmierbarer Auflösung bis zu 65535 Schritten oder Taktgeber werden. |
|
TorC 0-3 |
0 |
(P5.0-P5.3) |
die 4 Bits des Tores sind Ausgänge |
|
|
1 |
(P5.0-P5.3) |
die 4 Bits des Tores sind Eingänge |
|
|
|
|
|
|
Modus 0 Sendet der fremde Rechner eines der nachfolgenden ASCII-Zeichen, reagiert das SerPar.A51 Programm wie in der Tabelle angegeben. Die Angabe 'wert' meint eine 8 Bit-Zahl zwischen 00h und FFh |
|
|
|
|
|
|
Kommando |
MC80515 reagiert |
Bemerkung |
|
|
'R' |
|
gibt 1Byte Signale an TorA zurück |
Tor A (P4.0-4.7) lesen |
|
'W' |
wert |
schreibt wert nach Tor C |
Tor C (P5.0-5. 7) schreiben |
|
'0' bis '7' |
|
gibt die 8 Bit Wandlung des Analogeingangs von Tor B zurück |
Analogeingang (P6.0-P6.7) lesen |
|
'D bis 'F' |
wert |
nutzt wert zur Erzeugung einer PWM-Frequenz an Tor D-F |
Analogausgang (P1.1 - P1.3) schreiben |
|
'T' |
|
gibt 4 Bytes Std, Min, Sek und Flaggen* (BCD) zurück |
DCF-Funkuhr an Tor 1.7 |
|
'Y' |
|
gibt 4 Bytes Tag, Monat, Jahr, TagesName (BCD) zurück |
O-nix, 1-Mo, 2-Di, ... 7-So |
|
'K' |
wert |
Nutzt wert zur Setzung eine neuen Modus (s.Tabelle oben) |
Moduseinstellung schreiben. |
|
'M' |
|
momentane Moduseinstellung zurückgeben |
Moduseinstellung lesen |
|
'Q' |
|
Hauruck-Modus. In einer dauerhaften Schleife werden ohne Unterbrechung die Tore A und C gelesen bzw. beschrieben, bis irgendeine Änderung an Tor B eintritt. |
|
|
|
|
|
|
|
Modus 1 In diesem Modus besitzen alle Befehle zwei ASCII-Zeichen, von denen das erste 'R' read oder 'W write ist. Das zweite Zeichen bezeichnet das betroffene Tor A-F oder 0-7. Eine Ausnahme bilden die Befehle 'K' und 'M' zum Setzen des Kontrollbytes, bzw. zum Lesen der Moduseinstellung. Sie können als Einzelbefehl oder im Zusammenhang mit 'R' oder 'W benutzt werden. Durch die Befehlslänge von zwei bis drei Bytes wird der geringste Befehlsdurchsatz pro Sekunde erreicht, andererseits aber auch die grösste Befehlsvielfalt. |
|
|
|
|
|
|
Kommando |
Wirkung im Wandlerprogramm, wenn das angesprochene Tor ... ist |
|||
|
Byte1 |
Byte2 |
Byte3 |
Ausgabetor |
Eingabetor |
|
Digitale Ein- und Ausgaben |
||||
|
'R' |
'A' |
|
liest den Wert am TorA |
liest den Wert der TorA - Eingabe |
|
'W' |
'A' |
wert |
setzt TorA auf den Ausgabewert B |
keine Wirkung |
|
'R' |
'B' |
|
B kann nur Eingabetor sein |
liest den Wert der TorB -Eingabe |
|
'W' |
'B' |
wert |
keine Wirkung |
keine Wirkung |
|
'R' |
'C' |
|
liest den Wert an der Ausgabebits Cn-Cm |
liest der Wert der Eingabebits Cn-Cm |
|
'W' |
'C' |
wert |
setzt die Ausgabebits Cn-Cm auf Wert |
keine Wirkung |
|
Analoge PWM 8-Bit, 256 Schritt Ausgabe {ModusDA =0) |
||||
|
'R' |
'D' |
|
liest den digitalen Wert der die analogen Ausgangssignal bestimmt. |
kann nur Ausgabetor sein |
|
'W' |
'D' |
wert |
setzt die neue Analogausgabe |
kann nur Ausgabetor sein |
|
'R' |
'E' |
|
wie 'D' |
wie 'D' |
|
'W' |
'E' |
wert |
wie 'D' |
wie 'D' |
|
'R' |
'F' |
|
wie 'D' |
wie 'D' |
|
'W' |
'F' |
wert |
wie 'D' |
wie 'D' |
|
Analoge PWM 16-Bit, 65535 Schritt Ausgabe (ModusDA =1} |
||||
|
'R' |
'G' |
|
Sendet 2Bytes die den 16-Bit Wert, HighByte, LowByte, des Reload-TaktZählers darstellen |
kann nur Ausgabetor sein |
|
'W' |
'G' |
Hi, Lo |
Setzt den neuen 16-Bit Wert des Zählers |
kann nur Ausgabetor sein |
|
'R' 'W' |
'D' 'D' |
Hi, Lo |
wie bei 8 Bit, jedoch müssen 2 Bytes HighByte, LowByte gesendet werden |
kann nur Ausgabetor sein |
|
|
'E' |
|
wie 'D' |
wie 'D' |
|
|
'F' |
|
wie 'D' |
wie 'D' |
|
Analoge 8-Bit Analegeingänge |
||||
|
'R' |
'0' |
|
kann nur Eingabetor |
liest den Wert am Analogeingang 0 |
|
'W' |
'0' |
wert |
kann nur Eingabetor |
keine Wirkung |
|
... |
... |
|
... |
... |
|
'R' |
'8' |
|
kann nur Eingabetor |
liest den Wert am Analogeingang 8 |
|
'W' |
'8' |
wert |
kann nur Eingabetor |
keine Wirkung |
|
Zeit und Datum |
||||
|
'R' |
'T' |
|
4 Bytes der Uhr, - Std, Min, Sek und Flaggen - werden im BCD-Format gesendet |
|
|
'W' |
'T' |
3 Bytes |
3 Bytes 3 Bytes der Uhr, - Std, Min, Sek - werden im BCD-Format erwartet |
|
|
'R' |
'Y' |
|
4 Bytes des Datums, - Tag, Mon, Jahr, TagName - werden im BCD-Format gesendet |
|
|
'W' |
'Y' |
4 Bytes |
4 Bytes 4 Bytes des Datums, - Tag, Mon, Jahr, TagName - werden im BCD-Format erwartet |
|
|
Änderung des Kontrollbytes |
||||
|
'K' |
wert |
|
Wert wird als Kontrollbyte ausgewertet |
|
|
'M' |
|
|
Der Inhalt des Kontrollregisters wird zurückgegeben |
|
|
'R' |
'K' |
|
Der Inhalt des Kontrollregisters wird zurückgegeben |
|
|
'W' |
'K' |
wert |
wie 'K' wert |
|
|
|
|
|
|
|
Modus 2 Dieser Modus wird momentan nicht verwendet |
|
|
|
Modus 3 Dieser Modus wird momentan nicht verwendet |
|
|
|
|
|
|
|
Hinweis zum Kontrollbit ModusDA = 0 Ein Zähler bewirkt an allen Ausgängen nach 256µs einen Signalabfall von High nach Low. Während dieser Zeitspanne kann ein Compare-Register (Vergleichsregister) nach je 1µs das Signal von Low auf High anheben. Geschieht dies, so erhält man ein Taktsignal, dessen Einschaltzeit zwischen 1µs und 255µs liegt, bzw. dessen Ausschaltzeit zwischen 255µs und 1µs liegt. Integrierende Geräte wie Messinstrumente zeigen diesen Takt als analoge Spannung an. Zur Bildung eines wirklichen Analogsignals werden entsprechend verschaltete Operationsverstärker benutzt.
Hinweis zum Kontrollbit ModusDA = 1 In diesem Modus kann der Zähler 'G' frei zwischen den Werten 0000h und FFFFh programmiert werden. Ebenso die Compare-Register 'D'-'F'. Ihre Werte sollte jedoch kleiner oder gleich dem Wert des Zählregisters sein. Durch die Veränderung der Zählerzeit ist es möglich einen Taktgenerator zu programmieren. Seine 1 und 0-Signale sind symmetrisch, wenn der Wert des benutzten Compareregisters gerade in der Mitte der Taktzeit liegt. Durch geeignete Programmierung lassen sich je nach Auflösung des Zählers beliebig andere Takt-Pause-Verhältnisse einstellen. Der Zähler wirkt immer für alle drei Compareregister. Natürlich kann das Ausgangssignal auch als PWM-Signal benutzt werden. |
|
|
|
|
|
|
|
Hinweis zum Anschluss eines DCF 77 Empfängers Ein solcher Empfänger muss am Tor P1.7 mit seinem positiv arbeitenden Signal angeschlossen werden. Das Programm wird dann versuchen, die Funkzeit kontinuierlich zu ermitteln. Gelingt dies nicht, so führt eine interne Uhr die Zeit weiter, bis wieder ein Empfang besteht. Diese interne Uhr kann im Modus 1 auf einen Anfangswert gebracht werden, der dann mit oder ohne DCF-Empfänger weitergeführt wird.
Torbit P1.0 indiziert, ob die DCF-Zeit benutzt wird, oder die interne Zeit.
P1.0 = 0 es wird die interne Zeit benutzt P1.0 = 1 es wird die DCF- Zeit benutzt P1.0 = blinkt DCF-Zeit wird gerade gesucht. Wurde sie zuvor schon einmal empfangen oder die interne Uhr gesetzt, so wird die interne Zeit ausgeliefert. Flaggen in der zurückgegebenen Zeit: Zusammen mit der Zeit (Std, Min, Sek) im BCD-Format, wird ein Byte mit Flaggen zurückgesendet. Diese stammen von der DCF77- Funkuhr und sagen folgendes aus ..
Flagge.0 =1 ... Die Zeit entspricht der MEZ (mitteleuropäische Zeit) Flagge.1 =1 ... Die Zeit entspricht der MESZ (mitteleuropäische Sommerzeit) Flagge.2 =1 ... Ankündigung des Wechsels MEZ/MESZ/MEZ, 1Std zuvor Flagge.3 =1 ... Ankündigung der Einfügung einer Schaltsekunde, 1Std zuvor Flagge.4 =1 ... Reserveantenne der PTB strahlt die Zeit aus Flagge.5 nicht benutzt Flagge.6 nicht benutzt Flagge.7 =1 ... DCF-Uhr ist die Quelle der Zeit. (Flagge.7=0 interne Uhr) Soll die Zeit der internen Uhr gesetzt werden, so müssen diese Flaggen natürlich nicht übermittelt werden. |
|
|
|
|
|
|
|
|
|
||
|
|
|
|