Inzwischen bin ich etwas weiter mit meinem Speakjet.
Am Computer und angesteuert von der Hersteller-Software war ja alles kein Problem, aber bevor ich ihn auf den RP6 baue, wollte ich wissen, wie das denn nun mit der Ansteuerung vom eigenen Prozessor funktioniert.
Die Wahl fiel auf einen Mega8 und da ich mit C gerade erst anfange, hab ich es erst mal mit Bascom probiert. Es ist echt simpel:
Code:
$regfile "m8def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32
$baud = 9600
Wait 1
Printbin 20 ; 96 ; 21 ; 114 ; 22 ; 88 ; 23 ; 5 ; 191 ; 131 ; 8 ; 187 ; 191 ; 255 'Phrase "Test"
Waitms 500
End
Die 9600er Baudrate ist wichtig, daher muß der Takt 8Mb sein. Mit geringerer Frequenz macht der Speakjet Unfug oder gar nichts!
Nach dem Einschalten meldet sich der SJ immer mit "ready". Das hat der Hersteller verbrochen und hat nichts mit diesem Programm zu tun. Deshalb die Pause von ca. 1 Sek am Anfang des Programs, damit er die Ready-Meldung vernünftig los wird, bevor der programmierte Text kommt.
Der Pintbin Befehl in Bascom sendet die danach gelisteten Daten in binärem Format an die UART Schnittstelle (PD1 = Pin3) des Mega8. Von dort geht's direkt in den SJ (Pin10).
Die Ziffernreihe 20 - 255 im Testprogramm sind die Daten, die an den SJ gesendet werden. Generell ist laut Datenblatt jeder einzelne Befehl eine 3-stellige Zahl (000 - 255). Führende Nullen werden nicht gesendet. Daher gibt es hier auch 1- und 2-Stellige Zahlen. Die erste 20 ist also eigentlich 020 (Befehl für Lautstärke, hier mit Wert 96).
Ab der 191 beginnt die Phrase. In diesem Fall endet sie auch mit einer 191 (Das Wort ist "Test" = t-Laut am Anfang und Ende). Die 255 ist ein Reset-Befehl, der die Einstellungen des SJ wieder zurück setzt.
In diesem Video läuft das beschriebene Programm, allerdings erweitert um eine Tastenabfrage für verschiedene Phrasen.
Uwe
Lesezeichen