TPS 2: Der Programmiermodus

Elektronik-Labor  Projekte   TPS




Um den Controller über die Tasten programmieren zu können, werden zwei weitere Kabel auf das STK gesetzt. Für die Programmierung werden die Tasten S1 (C3) und S2 (C0) gebraucht. Die Lage der Tasten entspricht dann dem ursprünglichen Entwurf: Dateneingabe links, Programmieren rechts.

In den Programmiermodus gelangt man mit einem Reset bei gedrückter Programmiertaste S2. Man kann nun allein mit der Taste S2 das ganze Programm ansehen. Jede Adresse erfordert dazu zwei Tastenbetätigungen an S2. So wechselt man jeweils in die Anzeige des Befehls und der Daten. Außerdem wird jeweils für kurze Zeit die aktuelle Adresse angezeigt.

- Erster Tastendruck S2:
- Adresse (untere vier Bit) anzeigen, 300 ms
- Anzeige aus, 300 ms
- Befehl anzeigen
- Zweiter Tastendruck S2
- Daten anzeigen
- Dritter Tastendruck S2
- Nächste Adresse anzeigen, 300 ms
- usw.

Will man z.B. ein bestehendes Programm mit fünf Schritten nur ansehen, aber nicht verändern, dann gelangt man mit insgesamt zehn Betätigungen von S2 bis ans Ende. Weil jeweils die aktuelle Adresse kurz eingeblendet wird, fällt die Orientierung leicht. Man weiß immer, on die Anzeige gerade einen Befehl oder Daten darstellt.

Die Taste S1 kommt nur zur Anwendung, wenn man einen Befehl oder seine Daten verändern will. Grundsätzlich können nur Zahlenwerte zwischen Null und 15 eingegeben werden. Mit dem ersten Druck auf S1 wird eine Null eingestellt. Jeder folgende Tastendruck erhöht die Zahl um Eins. Der aktuelle Stand wird jeweils über die vier LEDs binär angezeigt. Will man z.B. eine Vier eingeben, drückt man insgesamt fünfmal auf S1: 0, 1, 2, 3, 4

Wenn auf diese Weise entweder der Befehl oder die Daten oder beides neu eingegeben wurde, führt der zweite Tastendruck auf S2 dazu, dass dieses Byte ins EEPROM programmiert wird. Um das zu verdeutlichen wird die LED-Anzeige für 600 ms abgeschaltet, bevor die nächste Adresse und danach der nächste Befehl angezeigt wird. Diese kleine Pause soll intuitiv als Programmiervorgang verstanden werden. Man kann im Hinterkopf die Vorstellung aufbauen, dass das System die Energie für die Anzeige einspart und für die Programmierung des EEPROMs verwendet. Sowas kennt man ja schon vom Auto: Wenn der Anlasser betätigt wird, geht für einen kurzen Moment das Licht und das Radio aus. Das hilft sehr, wenn man ein schon bestehendes Programm nur an einer Stelle verändern möchte. Mit S2 scrollt man dann bis zur gewünschten Stelle und verändert mit S1 den Befehl oder die Daten, um sie dann mit S2 zu speichern.

Will man ein Programm mit z.B. zwei Bytes (&H17,  &H30) komplett neu eingeben, dann muss so getippt werden:
Reset+S2
2 x S1
S2
8 x S1
S2
4 x S1
S2
1 x S1
S2

Wenn man mal zu oft getippt hat, muss man noch einmal ganz rum. Das kennt man ja von Digitaluhren. Allerdings ist einmal rum nicht 60, sondern in diesem Fall nur 16.

Übrigens, ein Programm mit nur zwei Bytes, was kann das wohl sein. Wenn man sich die Befehle und Daten genau ansieht, tut es dies: Drei LEDs einschalten und dann Ende in Form einer Endlosschleife mit Sprung auf sich selbst.

Download: TPS2


Programmieren:
Adr = 0
Prog = 0
Do
Adrlo = Adr And 15 'Adresse anzeigen
Portd = 255 - Adr
Waitms 300
Portd = 255 - 0
Waitms 200
Readeeprom Eebyte , Adr
Dat = Eebyte And 15
Kom = Eebyte / 16
Portd = 255 - Kom 'Befehl anzeigen
Do
Loop Until S2 = 1
Waitms 50

Prog = 1 'Phase 1: Befehl anzeigen
Do
If S1 = 0 Then

If Prog = 1 Then
Prog = 2
Kom = 15
End If
If Prog = 2 Then 'Phase 2: Befehl verändert
Kom = Kom + 1
Kom = Kom And 15
Portd = 255 - Kom
End If
If Prog = 3 Then : 'Phase 3: Befehl unverändert, Daten ändern
Prog = 5
Dat = 15
End If
If Prog = 4 Then 'Phase 4: Befehl und Daten geändert
Prog = 5
Dat = 15
End If
If Prog = 5 Then 'Phase 5: Daten verändert
Dat = Dat + 1
Dat = Dat And 15
Portd = 255 - Dat
End If
Waitms 50
Do
Loop Until S1 = 1
Waitms 50
End If

If S2 = 0 Then
If Prog = 3 Then Prog = 7 'nur angezeigt, nicht verändert
If Prog = 1 Then
Portd = 255 - Dat
Prog = 3
End If
If Prog = 4 Then
Portd = 255 - Dat
Prog = 6
End If
If Prog = 2 Then
Portd = 255 - Dat
Prog = 4
End If
If Prog = 6 Then 'nur Kommando wurde verändert
Dat = Dat And 15
Eebyte = Kom * 16
Eebyte = Eebyte + Dat
Writeeeprom Eebyte , Adr
Portd = 255 - 0
Waitms 600
Adr = Adr + 1
Prog = 0
End If
If Prog = 5 Then 'Daten wurden verändert
Dat = Dat And 15
Eebyte = Kom * 16
Eebyte = Eebyte + Dat
Writeeeprom Eebyte , Adr
Portd = 255 - 0
Waitms 600
Adr = Adr + 1
Prog = 0
End If
If Prog = 7 Then
Adr = Adr + 1
Prog = 0
End If
Waitms 50
Do
Loop Until S2 = 1
Waitms 50
End If
Loop Until Prog = 0
Loop

End

Das Bascom-Programm arbeitet im Programmiermodus wie eine State-Machine. Es durchläuft bei der Eingabe mehrere Phasen Prog = 0 bis Prog = 7, in Abhängigkeit davon, ob der Speicheringhalt nur angezeigt oder auch verändert werden soll. Die Tasten sind durch eine Wartezeit von 50 ms entprellt.
 

Und hier einige Programme, die man in diesem Stadium eingeben und ausführen kann:

Lauflicht 1:
&H11,  &H28, &H12,  &H28, &H14,  &H28, &H18,  &H28, &H38

Lauflicht 2:
&H11,  &H28, &H12,  &H28, &H14,  &H28, &H18,  &H28, &H14,  &H28, &H12,  &H28, &H3C

Zeitschalter, eine Minute:
&H1F,  &H2F, &H10,  &H30

 
Am Anfang schreibt man sich die Programme vielleicht noch mit Kommentaren auf, aber nach einiger Zeit lernt man digital zu denken und zu fühlen. Mensch und Maschine werden eins, so wie beim Motorradfahren.

zurück
weiter


Elektronik-Labor  Projekte   TPS