Reverse-engineered documentation for the Roth PPS 25/2 (PPS-25/2) lab power supply with PPS24 RS-232 interface — remote command set, firmware, hardware notes and repair.
| Chip | Funktion | |—|—| | MC6803P | 8-Bit CPU mit on-chip SCI | | TMS27C64-2JL | 8KB EPROM Firmware | | R6522 | VIA (Tastatur/Display I/O) | | GAL16V8 | Adressdekoder | | SN74LS373 | Adress-Latch (AD0-7 Demux) | | NEC µPD7004C | A/D-Wandler (V/I-Messung) | | Quarz 4 MHz | CPU-Takt (E = 1 MHz, bestätigt mit Oszi auf 6803 Pin 39) |
| Chip | Funktion | |—|—| | Intersil ICL232CPE | RS232-Pegelwandler (TTL ↔ ±10V) | | Motorola MC14060BCP | 14-stufiger Binärteiler + Oszillator | | Quarz 2,4576 MHz | Für 4060-Takterzeugung | | 6 Cs, 1 R | Charge-Pump-Caps am ICL232, Quarzbeschaltung |
| DB-25 Pin | ICL232 | Funktion | |—|—|—| | 2 | Pin 14 (T1OUT) | Daten Karte → PC | | 3 | Pin 13 (R1IN) | Daten PC → Karte | | 4 | Pin 7 (T2OUT) | RTS Karte → PC | | 5 | Pin 8 (R2IN) | CTS PC → Karte | | 7 | Pin 15 (GND) | Masse |
| Funktion | 6803-Pin | ICL232-Seite | |—|—|—| | SCI-Clock | Pin 10 (P22/TIN) | 4060 Q-Output via Jumper | | TTL-RX zur CPU | Pin 11 (P23/RXD) | Pin 12 (R1OUT) | | TTL-TX von CPU | Pin 12 (P24/TXD) | Pin 11 (T1IN) | | CTS-Input | Pin 19 (P1.6) | Pin 9 (R2OUT) | | RTS-Output | Pin 20 (P1.7) | Pin 10 (T2IN) | | PPS24-Detect | Pin 13 (P1.0) | GND der PPS24 | | VCC | — | Pin 16 | | GND | — | Pin 15 | | 2 unbenutzt | (P1.1, P1.2 - andere Interface-Optionen) | — |
| Jumper-Pos | 4060-Pin/Output | Frequenz | Erwartete Baudrate | |—|—|—|—| | Q4 | Pin 7 | 153,6 kHz | 9600 (/16) oder 153600 (direkt) | | Q5 | Pin 5 | 76,8 kHz | 4800 oder 76800 | | Q6 | Pin 4 | 38,4 kHz | 2400 oder 38400 | | Q7 | Pin 6 | 19,2 kHz | 1200 oder 19200 | | Q8 | Pin 14 | 9,6 kHz | 600 oder 9600 |
P1DDR = $86 (P1.1, P1.2, P1.7 Output; Rest Input)
P2DDR = $03 (P2.0, P2.1 Output)
Lesen P1.0:
P1.0 = LOW (PPS24 angeschlossen) → RMCR = $0C
P1.0 = HIGH (kein PPS24) → RMCR = $05
TRCSR = $1A (TE + RE + RIE)
*X-Subkommandos bei $E5BE, Subtabelle $E5DB*CLS\r (Clear Status — silent)*ISET<n>\r / *ISET?\r (Strom setzen/abfragen, n=0..255 → DAC $6500)*VSET<n>\r / *VSET?\r (Spannung setzen/abfragen, n=0..255 → DAC $6400)*VOUT?\r (gemessene Spannung abfragen, von $91)*S<x>\r (Status-Subkommandos: SR, SET)*VSET050\r)*VSET<n> BefehlenPPS24 + ICL232 komplett umgehen. PL2303-TTL-Adapter direkt an Ribbon:
Damit sind alle ICL232-bedingten Timing-Probleme weg. SCI sieht TTL-Signal direkt.
Baudrate: aktuell Jumper auf 153,6 kHz → testen mit 153600 Baud (direkt) und 9600 (/16).
Modifizierte Firmware (firmware_modified.bin) mit Byte $26 statt $27 bei Offset 0x10BF.
Kehrt die P1.0-Polarität um → erzwingt RMCR=$05 (= internal clock) statt $0C (external).
Brennen auf blanken 27C64 mit TL866II+.
../firmware/firmware.bin — Original-Dump (MD5: 803de2bfb2f56135aeacf3c0f987c47b)../firmware/firmware2.bin — Verifikations-Dump (identisch)../firmware/firmware_modified.bin — Mod für Plan B../firmware/dis.lst — Disassembly (1780 Instruktionen)../scripts/dis6803.py — eigener 6803-Disassembler../scripts/archive/probe*.py — diverse Test-Skripte