|
Sprachausgabe von Analogwerten
|
| Verfasser |
Nachricht |
Veryoldman
Member
  
Beiträge: 52
Gruppe: Registered
Registriert seit: May 2010
Status:
Offline
Bewertung: 0
|
RE: Sprachausgabe von Analogwerten
Hallo Klaus,
die Geschichte mit der Ansteuerung per PC hab ich schon gemacht und dadurch habe ich Gesehen, was alles aus dem VMUSIC2 an Daten herauskommt. Nur zwischenzeitlich habe ich auch Gelesen, dass es jede Menge anderer Befehle gibt um auch noch andere Funktionen Aufzurufen (Balance usw.). Genauso wie das Schreiben auf den Stick. Es soll also auch möglich sein, Daten auf einen Datenträger (USB-Stick/Festplatte) zu Schreiben. Ich habe was das Teil anbelangt schon ziemlich viel Gelesen (soweit es meine Englischkenntnisse es zulassen) aber nirgendwo gibt es eine wirklich ausführliche, mit allen Befehlen, Beschreibung dafür. Die Leerzeichen werde ich mal Entfernen und dann auch mal Fest-Files Aufrufen. Wobei mich wundern würde, wenn es dann funktioniert. In einem meiner anderen Versuchs Codes sind ebenfalls Leerzeichen in der Printanweisung aber Versuch macht Klug.
Gruß
Klaus
|
|
| 17.06.2010 15:28 |
|
 |
gpsklaus
Moderator
    
Beiträge: 103
Gruppe: Moderators
Registriert seit: Aug 2008
Status:
Offline
Bewertung: 0
|
RE: Sprachausgabe von Analogwerten
Hallo Klaus,
na ja, aber irgendwie muss man das Problem doch einkreisen und nachdem die VPF-Kommandos bei mir doch problemlos funktionierten, würde es m.E. schon Sinn machen zuerst einmal zu testen, ob wenigstens sie auch bei Dir klappen. Danach würde man schon etwas besser wissen, in welche Richtung weiterzusuchen ist.
Die ausführlichste mir bekannte Kommandoliste habe ich hier gefunden: http://www.graychalet.com/VMusic2Notes.doc
aber auch sie scheint nur eine Auswahl aller möglichen Kommandos einzuschliessen.
Klaus
Dieser Beitrag wurde zuletzt bearbeitet: 17.06.2010 17:36 von gpsklaus.
|
|
| 17.06.2010 17:30 |
|
 |
gpsklaus
Moderator
    
Beiträge: 103
Gruppe: Moderators
Registriert seit: Aug 2008
Status:
Offline
Bewertung: 0
|
RE: Sprachausgabe von Analogwerten
Hallo Klaus,
hier noch ein Auszug aus einem für die Basic-Briefmarke geschriebenen Programm. Es ist natürlich nicht zu BASCOM-AVR kompatibel, aber immerhin kann man dabei sehen, dass zwischen Befehlsname und direkt folgender CR-Anweisung KEINE LEERSTELLE eingefügt wurde.
Klaus
' -----[ Initialization ]--------------------------------------------------
PAUSE 5000 'allow VMusic2 to initialize
SEROUT 0,84, ["VST",CR] 'stop anything that's playing
' -----[ Program Code ]----------------------------------------------------
Main:
SEROUT 0,84,["VPF test.mp3",CR] 'Play a file named "test.mp3"
PAUSE 5000
SEROUT 0,84,["VP",CR] 'Pause playback of "test.mp3"
PAUSE 3000
SEROUT 0,84,["VP",CR] 'Resume playback of "test.mp3"
PAUSE 5000
SEROUT 0,84, ["VSV 30",CR] 'Reduce playback volume
PAUSE 5000
SEROUT 0,84, ["VSV 0",CR] 'Return playback volume to full
PAUSE 5000
SEROUT 0,84, ["VST",CR] 'Stop playback of "test.mp3"
SEROUT 0,84, ["V3A",CR] 'Command to play all mp3 files. It will play whatever file it first finds
PAUSE 5000
SEROUT 0,84, ["VSF",CR] 'Skip forward one track. It will play the next file
PAUSE 5000
SEROUT 0,84, ["VSB",CR] 'Backs up to the start of this track.
PAUSE 5000
SEROUT 0,84, ["VST",CR] 'Stop playback
SEROUT 0,84,["VPF test2.mp3",CR] 'Play a file named "test2.mp3"
PAUSE 2000
SERIN 1,84, [WAIT (">")] 'Waits for "test2.mp3" to stop playing
PAUSE 2000
GOTO Main
|
|
| 17.06.2010 17:46 |
|
 |
Veryoldman
Member
  
Beiträge: 52
Gruppe: Registered
Registriert seit: May 2010
Status:
Offline
Bewertung: 0
|
RE: Sprachausgabe von Analogwerten
Hallo Klaus,
ich hab also die Leerzeichen entfernt und den Code wieder in den Mega8 Geschoben. Ein Erfolg war schonmal zu Verzeichnen, die LED's fingen nach einem Tastendruck an zu Blinken aber hörten nach einer kurzen Weile wieder auf. Dann hab ich mir ein File mal Ausgeguckt und mit einer Taste gezielt darauf Eingegeben. Nach dem wieder Aufspielen des Code dann diese Taste Gedrückt. Das Ergebnis war das Gleiche wie vor. Nach wie vor gibt es aber auch keine Anzeige auf dem Display, noch nicht einmal "Bad Command". Hier der Code, der bislang Geschrieben wurde.
$regfile = "m8def.dat" 'ATMEga8
$crystal = 16000000 '16Mhz extern, FuseBits= High = 0xD1, Low = 0xDF
' 8MHz extern, FuseBits= High = , Low =
$baud = 9600 ' Baudrate
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40
'$sim
'---- fuer Taster kompletter Port C als Eingänge -----------
Config Portc = Input
'---- Alle Taster-Eingänge auf "H" -------------------------
Portc = &B00111111
'---- Handshake Signale RTS/CTS ----------------------------
Config Pind.3 = Input
Portd.2 = 1
Config Pind.2 = Output
PortD.3 = 1
RTS Alias Portd.3
CTS Alias Portd.2
'---- RS232 Com-Port ---------------------------------------
Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'---- Variable ---------------------------------------------
'---- Test -------------------------------------------------
Dim S As String * 9 At &H70
Dim B(11) As Byte At &H70 Overlay
Dim N As Byte 'Byte
Dim RTS as Byte
Dim CTS as Byte
'---- Eingang Serieller Daten ------------------------------
'Sreg.7 = 1
Set Sreg.7
On Urxc Onrxd
Enable Urxc
'---- LCD Definition ---------------------------------------
Config Lcd = 20 * 4 'LCD 4 Zeilen, 20 Zeichen
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portd.7 , Db6 = Portd.6 , Db7 = Portd.5 , E = Portb.1 , Rs = Portb.2 'LCD Pin-Config
Config Lcdbus = 4
Initlcd
Cursor Off
'Deklariere Unterprogramme
Declare Sub Play_one
Declare Sub Stopp
Declare Sub Pause
Declare Sub Track
Declare Sub Random
Declare Sub Play_All
'---- Test Voreinstellungen --------------------------------
RTS = 1
CTS = 0
'---- Festtext ---------------------------------------------
Cls 'Lösche Display
Locate 2 , 3
Lcd " Klaus - VMUSIC2 "
Locate 3 , 3
Lcd " USB MP3 Player "
Wait 2
Cls
'---- Lautstärken-Voreinstellung ---------------------------
Print "vsv0" ; Chr(13); ' Lautstärke Voreinstellung 0 = Laut, 256 = Leise
'---- Hauptprogramm ----------------------------------------
Do
If Pinc.0 = 0 Then Gosub Play_one
If Pinc.1 = 0 Then Gosub Stopp
If Pinc.2 = 0 Then Gosub Pause
If Pinc.3 = 0 Then Gosub Track
If Pinc.4 = 0 Then Gosub Random
If Pinc.5 = 0 Then Gosub Play_All
Loop
end
'---- Unterprogramme ---------------------------------------
Sub Play_one
Print "vpf Stark" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Play one"
End Sub
Sub Stopp
Print "vst" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Stop"
End Sub
Sub Pause
Print "vp" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Pause"
End Sub
Sub Track
Print "vsf" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Next"
End Sub
Sub Random
Print "vrr" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Play Random"
End Sub
Sub Play_All
Print "v3a" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Play all"
End Sub
End
'---- Unterprogramme ----------------------------------------
Onrxd:
Incr N
B(n) = Udr
Return
'end program
Irgendwie Drehen wir uns im Kreis hab ich den Eindruck. Ich wollte doch nur die Statusanzeige vom VMUSIC2 auf ein Display bringen!Heul Ich mach mal einen weiteren Versuch in dem ich auf die Gosub's verzichte und die Anweisungen direkt aus der Do Loop Schleife heraus machen. Wäre dann Versuch 6. Bin mal Gespannt.
Übrigens, die Unterlagen die Du mir da als Link zeigts, hab ich schon.
Gruß
Klaus
Dieser Beitrag wurde zuletzt bearbeitet: 17.06.2010 20:19 von Veryoldman.
|
|
| 17.06.2010 20:07 |
|
 |
gpsklaus
Moderator
    
Beiträge: 103
Gruppe: Moderators
Registriert seit: Aug 2008
Status:
Offline
Bewertung: 0
|
RE: Sprachausgabe von Analogwerten
Hallo Klaus
> Irgendwie Drehen wir uns im Kreis hab ich den Eindruck.................
So sehe ich das auch und deshalb halte ich es für das Beste, erst einmal die Steuerung einzelner Kommandos entweder via Atmega-Programm oder vom aus PC zu testen.
Ich vermute inzwischen, dass bei Dir ein Problem vorliegt, das mit dem Bascom-Programm garnichts zu tun hat!
Nur sicherheitshalber: Die Brücke zur Mode-Auswahl am VMusic2-Baustein steht auf "seriell"?
Klaus
|
|
| 17.06.2010 20:25 |
|
 |
Veryoldman
Member
  
Beiträge: 52
Gruppe: Registered
Registriert seit: May 2010
Status:
Offline
Bewertung: 0
|
RE: Sprachausgabe von Analogwerten
Hallo Klaus,
mir ist schon länger klar, das ich ein Problem habe, ich selber bin das Problem.HiHi Der Jumper beim Modul steckt auf UART. Jetzt halt Dich fest, das Programm läuft. Ich habe in der Do Loop Schleife, die Gosub's durch Goto's Ersetzt und jetzt werden die Befehle auch vom Modul angenommen. Was ich allerdings nicht Kapiere, warum werden die Gosub's nicht akzeptiert? Das Gleiche habe ich schon in einer der vorherigen Versuchs-Versionen gehabt. Übrigens, bei dem Test-File fehlte noch der Zusatz ".mp3". Das hatte ich total Übersehen. Sorry Hier ist der funktionierende(bis auf die Displayausgabe) Code.
$regfile = "m8def.dat" 'ATMEga8
$crystal = 16000000 '16Mhz extern, FuseBits= High = 0xD1, Low = 0xDF
' 8MHz extern, FuseBits= High = , Low =
$baud = 9600 ' Baudrate
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40
'$sim
'---- fuer Taster kompletter Port C als Eingänge -----------
Config Portc = Input
'---- Alle Taster-Eingänge auf "H" -------------------------
Portc = &B00111111
'---- Handshake Signale RTS/CTS ----------------------------
Config Pind.3 = Input
Portd.2 = 1
Config Pind.2 = Output
PortD.3 = 1
RTS Alias Portd.3
CTS Alias Portd.2
'---- RS232 Com-Port ---------------------------------------
Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'---- Variable ---------------------------------------------
'---- Test -------------------------------------------------
Dim S As String * 9 At &H70
Dim B(11) As Byte At &H70 Overlay
Dim N As Byte 'Byte
Dim RTS as Byte
Dim CTS as Byte
'---- Eingang Serieller Daten ------------------------------
'Sreg.7 = 1
Set Sreg.7
On Urxc Onrxd
Enable Urxc
'---- LCD Definition ---------------------------------------
Config Lcd = 20 * 4 'LCD 4 Zeilen, 20 Zeichen
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portd.7 , Db6 = Portd.6 , Db7 = Portd.5 , E = Portb.1 , Rs = Portb.2 'LCD Pin-Config
Config Lcdbus = 4
Initlcd
Cursor Off
'Deklariere Unterprogramme
Declare Sub Play_one
Declare Sub Stopp
Declare Sub Pause
Declare Sub Track
Declare Sub Random
Declare Sub Play_All
'---- Test Voreinstellungen --------------------------------
RTS = 1
CTS = 0
'---- Festtext ---------------------------------------------
Cls 'Lösche Display
Locate 2 , 3
Lcd " Klaus - VMUSIC2 "
Locate 3 , 3
Lcd " USB MP3 Player "
Wait 2
Cls
'---- Lautstärken-Voreinstellung ---------------------------
Print "vsv0" ; Chr(13); ' Lautstärke Voreinstellung 0 = Laut, 256 = Leise
'---- Hauptprogramm ----------------------------------------
Do
If Pinc.0 = 0 Then Goto Play_one
If Pinc.1 = 0 Then Goto Stopp
If Pinc.2 = 0 Then Goto Pause
If Pinc.3 = 0 Then Goto Track
If Pinc.4 = 0 Then Goto Random
If Pinc.5 = 0 Then Goto Play_All
Loop
end
'---- Unterprogramme ---------------------------------------
Sub Play_one
Print "vpf Stark.mp3" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Play one"
End Sub
Sub Stopp
Print "vst" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Stop"
End Sub
Sub Pause
Print "vp" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Pause"
End Sub
Sub Track
Print "vsf" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Next"
End Sub
Sub Random
Print "vrr" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Play Random"
End Sub
Sub Play_All
Print "v3a" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Play all"
End Sub
End
'---- Unterprogramme ----------------------------------------
Onrxd:
Incr N
B(n) = Udr
Return
'end program
Wenn ich jetzt noch die Anzeige hinbekomme, dann bin ich mehr als zufrieden.
Gruß
Klaus
|
|
| 17.06.2010 21:31 |
|
 |
gpsklaus
Moderator
    
Beiträge: 103
Gruppe: Moderators
Registriert seit: Aug 2008
Status:
Offline
Bewertung: 0
|
RE: Sprachausgabe von Analogwerten
Hallo Klaus,
nah, das ist doch immerhin schon ein Teilerfolg. Warum das mit den Gosub's nicht klappt, kann ich derzeit auch nicht sagen, aber vielleicht liest hier ein Bascom-Spezialist mit, der uns weiterhelfen kann. Die Goto's können m.E. jedenfalls nicht DIE Lösung sein. Deshalb habe ich die einzelnen Aufrufe unten wieder direkt in die Loop-Schleife gepackt. Vielleicht klappt das besser. Am Simulator waren die LCD-Anzeigen jedenfalls sichtbar.
Klaus
'---- Hauptprogramm ----------------------------------------
Do
Play_one:
If Pinc.0 = 1 Then Goto Stopp
Print "vpf Stark.mp3" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Play one"
Stopp:
If Pinc.1 = 1 Then Goto Pause
Print "vst" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Stop"
Pause:
If Pinc.2 = 1 Then Goto Track
Print "vp" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Pause"
Track:
If Pinc.3 = 1 Then Goto Random
Print "vsf" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Next"
Random:
If Pinc.4 = 1 Then Goto Play_all
Print "vrr" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Play Random"
Play_all:
If Pinc.5 = 1 Then Goto Fin
Print "v3a" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Play all"
Fin:
Loop
Dieser Beitrag wurde zuletzt bearbeitet: 17.06.2010 22:47 von gpsklaus.
|
|
| 17.06.2010 22:39 |
|
 |
Veryoldman
Member
  
Beiträge: 52
Gruppe: Registered
Registriert seit: May 2010
Status:
Offline
Bewertung: 0
|
RE: Sprachausgabe von Analogwerten
[/code]Hallo Klaus,
ich hab natürlich weiter Probiert und siehe da, auf meinem Display Erscheint jetzt sogar der Titel des Liedes! Hab mir mit meinem Terminalprogramm mal angeschaut was aus dem AVR herauskommt. Was ich noch nicht verstehe, warum macht der AVR nach jedem Befehl einen Reset und fängt von vorne an? Hängt das mit den Goto Anweisungen zusammen? Wäre nicht schlecht, wenn ein Bascom Keksperte sich mal dazu Äußern könnte. Bin ja schon froh, soweit gekommen zu sein. Der funktionierende Code:
[code]
$regfile = "m8def.dat" 'ATMEga8
$crystal = 16000000 '16Mhz extern, FuseBits= High = 0xD1, Low = 0xDF
' 8MHz extern, FuseBits= High = , Low =
$baud = 9600 ' Baudrate
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40
'$sim
'---- fuer Taster kompletter Port C als Eingänge -----------
Config Portc = Input
'---- Alle Taster-Eingänge auf "H" -------------------------
Portc = &B00111111
'---- Handshake Signale RTS/CTS ----------------------------
Config Pind.3 = Input
Portd.2 = 1
Config Pind.2 = Output
PortD.3 = 1
RTS Alias Portd.3
CTS Alias Portd.2
'---- RS232 Com-Port ---------------------------------------
Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'---- Variable ---------------------------------------------
'---- Test -------------------------------------------------
Dim S As String * 9 At &H70
Dim B(11) As Byte At &H70 Overlay
Dim N As Byte 'Byte
Dim RTS as Byte
Dim CTS as Byte
'---- Eingang Serieller Daten ------------------------------
'Sreg.7 = 1
Set Sreg.7
On Urxc Onrxd
Enable Urxc
'---- LCD Definition ---------------------------------------
Config Lcd = 20 * 4 'LCD 4 Zeilen, 20 Zeichen
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portd.7 , Db6 = Portd.6 , Db7 = Portd.5 , E = Portb.1 , Rs = Portb.2 'LCD Pin-Config
Config Lcdbus = 4
Initlcd
Cursor Off
'Deklariere Unterprogramme
Declare Sub Play_one
Declare Sub Stopp
Declare Sub Pause
Declare Sub Track
Declare Sub Random
Declare Sub Play_All
'---- Test Voreinstellungen --------------------------------
RTS = 1
CTS = 0
'---- Festtext ---------------------------------------------
Cls 'Lösche Display
Locate 2 , 3
Lcd " Klaus - VMUSIC2 "
Locate 3 , 3
Lcd " USB MP3 Player "
Wait 2
Cls
'---- Lautstärken-Voreinstellung ---------------------------
Print "vsv0" ; Chr(13); ' Lautstärke Voreinstellung 0 = Laut, 256 = Leise
'---- Hauptprogramm ----------------------------------------
Do
If Pinc.0 = 0 Then Goto Play_one
If Pinc.1 = 0 Then Goto Stopp
If Pinc.2 = 0 Then Goto Pause
If Pinc.3 = 0 Then Goto Track
If Pinc.4 = 0 Then Goto Random
If Pinc.5 = 0 Then Goto Play_All
locate 1 , 1
lcd "" ; S
Loop
end
'---- Unterprogramme ---------------------------------------
Sub Play_one
Print "vpf Stark.mp3" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Play one"
End Sub
Sub Stopp
Print "vst" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Stop"
End Sub
Sub Pause
Print "vp" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Pause"
End Sub
Sub Track
Print "vsf" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Next"
End Sub
Sub Random
Print "vrr" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Play Random"
End Sub
Sub Play_All
Print "v3a" ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Play all"
End Sub
End
'---- Unterprogramme ----------------------------------------
Onrxd:
Incr N
B(n) = Udr
Return
Alle Funktionen werden Übernommen und die Anzeige auf dem Display ist einigermaßen zufriedenstellend.
Gruß
Klaus
|
|
| 17.06.2010 23:19 |
|
 |
AVRNix
Administrator
      
Beiträge: 1.538
Gruppe: Administrators
Registriert seit: Dec 2007
Status:
Offline
Bewertung: 0
|
RE: Sprachausgabe von Analogwerten
Hallo Klaus und Klaus,
Subs werden eigentlich mit call aufgerufen, vielleicht liegt da der Hase im Peffer?
Bei Gosubs wird das eigentlich so gemacht Beispiel:
do
Gosub hallo
loop
hallo:
Befehle
return
Im Program finde ich auch kein Return -> Stack Überlauf, Programm funktioniert nicht
Und Gosub sollte man nie verwenden wenn es geht.
Tausche mal Goto mit Call und dein Stack, Framesize etc verdoppele mal die Werte, weil dort die Werte von den call und gosubs gerettet werden.bei Sub sind das 32 Werte und Gosubs (?) 2 Werte
d.h. 34 Werte werden gespeichert und du hast bei einen Stack von 32 einen Überlauf.
Gruss
-----------------------------
AVRNix - http://www.comwebnet.de
Administrator
-----------------------------
Dieser Beitrag wurde zuletzt bearbeitet: 18.06.2010 08:01 von AVRNix.
|
|
| 18.06.2010 07:50 |
|
 |
Veryoldman
Member
  
Beiträge: 52
Gruppe: Registered
Registriert seit: May 2010
Status:
Offline
Bewertung: 0
|
RE: Sprachausgabe von Analogwerten
Hallo AVRnix,
OK! Werd ich dann mal versuchen, die Sub's mit Call aufzurufen. Die anderen Einstellungen ändere ich ebenfalls. Gucken ob's dann besser läuft. Mit Call xxx hab ich noch nichts gemacht. Bei diesem Projekt sind sowieso einige Unbekannte dabei(für mich jedenfalls).
Danke erstmal
Gruß
Klaus
|
|
| 18.06.2010 13:12 |
|
 |
|
|