Inhaltsverzeichnis
TPS/SPS Assembler
Die Idee kam mir im Zusammenhang mit der Arduino_TPS. Es ist zwar toll, mal eben an der Hardware das Programm ändern zu können. Das funktioniert im Wohnzimmer oder am Schreibtisch auch sehr gut. Ich setzt die SPS aber eben auch in meinen RC Modellen ein und da habe ich selten die Möglichkeit, nach Einbau, an die Tasten zu gelangen. Geschweige denn in aller Geduld die Codes einzuhacken. Ein smartes Handy hat ja mittlerweile jeder dabei. Also dachte ich mir eine Möglichkeit aus, wie ich mit Handy, etwas Hardware und einem Internetdienst meine Programme in die TPS bekomme.
Dazu braucht es
- eine TPS der neuesten Firmware (>.10)
- ein Smartphone mit Internet und USB OTG
- ein USB OTG Kabel
- einen FTDI
- und ein Stück Kabel
Der tatsächliche Download des Programms auf die TPS erfolgt über ein serielles Protokoll. Das kann man sogar mit einem einfachen Terminalprogramm (oder dem eingebauten seriellen Monitor in der ArduinoIDE) machen. Gestartet wird dieser neue Programmiermodus, wenn nach einem Reset der TPS die SEL (und zwar nur Diese) Taste gedrückt bleibt. Das Protokoll kennt nur 3 Befehle R(ead), W(rite) und E(xit). Mit Read wird das aktuelle Programm ausgegeben und mit Write ein neues eingelesen. Format ist bei beiden Optionen Intel HEX. Mit Exit oder einem erneuten Reset verlässt man diesen Modus wieder.
Um mit dem Handy mit der TPS zu kommunizieren, braucht man zusätzlich einen USB/Seriell-Konverter. Die Gängigsten sind findet man unter der Bezeichnung FTDI. Das ist ein einfacher USB Seriell Konverter, der sowohl mit dem PC wie auch mit einem Handy funktioniert. Weiterhin muss das Handy USB OTG unterstützen. (Einfach mal bei seinem Handy googeln.) Damit haben wir eine einfache serielle Schnittstelle am Handy. Jetzte fehlt nur noch ein Terminalprogramm auf dem Handy, fertig.
Zu allerletzt muss man seine Programmidee in das IntelHEX Format konvertieren. Dazu dient dieser kleine Service hier auf der Webseite.
Der Assembler übersetzt, wie jeder andere Assembler, handgeschriebenen Mnemonic Code in ein maschinenlesbares Programm. Hier eben in ein Programm für die TPS.
Dabei werden folgende Features unterstützt:
- Ausgabeformate: Intel HEX Code, SPS Emulator Source und HEX Text
- Eingabeformate: TPS Assembler
- Unterstützung von folgenden TPS Systemen: HOLTEK, ATmega8, Arduino_TPS, Tiny_TPS
- automatische Berechnung von Sprüngen und Unterprogrammen
- Unterstützung von Labels für Sprünge
- Unterstützung von Kommentaren
- Unterstützung von Makros
- Unterstützung verschiedener Assemblerdirektriven
Die Online-Version findest du hier: Online TPS Assembler public BETA
Dabei werden folgende Mnemonics unterstützt:
Programmgrößen
Jede Hardware hat andere max. Programmgrößen.
- HOLTEK: 128 Byte
- ATmega8: 256 Byte
- ArduinoSPS: 1024 Byte*
- TinySPS: 512 Byte*
* Alles über 256Byte kann nur durch die Verwendung von Unterroutinen (DFSB und CASB) benutzt werden.
Upload der Daten
Mit dem Online SPSAssembler kannst du deinen Quellcode eingeben und kompilieren lassen. Als Ausgabeformat gibt es ein einfaches Textfile mit den entsprechenden Darstellung zur direkten Eingabe in die TPS.
Oder aber du kannst dir das ganze auch als Intel HEX File ausgeben lassen. Meine Arduino_TPS und die Tiny_TPS können beide das Format über die serielle Schnittstelle empfangen. Dazu sind folgende Schritte nötig:
- HEX Datei erzeugen und herunter laden.
- Handy mit FTDI (über ein USB OTG Kabel) verbinden.
- Den FTDI mit der seriellen Schnittstelle der Hardware verbinden.
- Terminalprogramm auf dem Handy starten und mit dem FTDI verbinden. 9600Baud.
- Auf der TPS Reset und SEL gleichzeitig drücken. SEL muss man gedrückt lassen, bis sich die TPS im Terminalprogramm meldet.
- Mit „w“ in den Programmsendemodus wechseln und schauen, ob sich die TPS im Programmiermodus befindet.
- Dann die HEX Datei mit dem Terminalprogramm auf die TPS laden.
- Jetzt noch ein Reset oder „E“ und fertig.
Serieller Anschluss
Beim ATTiny84 werden dazu die Pins 11 (RX) und Pin 12 (TX) verwendet.
Benutzt wird ein Protokoll mit 9600Baud, 0 Parität, 1 Stoppbit.
Der Anschluss erfolgt bei der Tiny_TPS Platine an der Input Leiste.
Pin | Signal | FTDI |
---|---|---|
2 | Din.2, TX | RX |
3 | Din.3, RX | TX |
5 | GND | GND |