gm4288
27.12.2011, 19:07
Hallo und frohe Weihnachten,
ich bin Michael. Ich habe mal an einem Projekt teilgenommen wo ein Audio DSP mit einem Atmega8 realisiert wurde. Allerdings hat man die Einstellung für die Lautstärke bei digitalem Eingang vergessen. Jetzt würde ich gerne ein Bedienteil nutzen um die Lautstärke und Bass einzustellen.
Der Quellcode wurde mir auch zur Verfügung gestellt. Ich habe erst vor drei Wochen aktiv angefangen mit Bascom zu programmieren und habe das Tutorial auf Halvar.at durchgelesen den Quellcode für den Encoder habe ich von rn-wissen.
Das Bedienteil besteht aus einem Display und einem Encoder mit Taster. Das ist ein Teil des Quellcodes aus dem Bedienteil:
Call Encoder2() 'Wird zyklisch im Hauptprogramm aufgerufen
If Rotary_last <> Rotary Then 'Encoder gedreht?
If Rotary < 50 Then Rotary = 50
If Rotary > 150 Then Rotary = 150
Printbin 11 ; Rotary
Rotary_last = Rotary 'Neue Stellung merken
End If
Hier ein Auszug aus dem DSP:
Enable Urxc
On Urxc Uartlesen
Enable Interrupts
Main:
....
Uartlesen: 'interruptroutine UART lesen
Disable Interrupts
Dummy = Udr
If Dummy = &H0B Then Goto Volume
Goto Uartende
Volume:
Rotary = Waitkey()
Volumebit = 1
Printbin Rotary
Goto Uartende
Uartende:
I2cstop
Wait 1
Enable Interrupts
return
Soweit funktioniert der Code auch.
Nur ich will nicht das das Programm auf die Ankunft von Rotary wartet. Die Funktion sollte etwas resistenter sein. Sollte zufällig durch eine Störung auf dem Bus nur eine 11 sein dann soll sich das Programm nicht tot warten.
Noch eine andere Frage: der DSP soll im Auto verwendet werden schafft es die RS232 Schnittstelle des Atmega8 eine Entfernung von 5 Meter ohne zusätzliche Elektrische Bauteile zurück zu legen?
ich bin Michael. Ich habe mal an einem Projekt teilgenommen wo ein Audio DSP mit einem Atmega8 realisiert wurde. Allerdings hat man die Einstellung für die Lautstärke bei digitalem Eingang vergessen. Jetzt würde ich gerne ein Bedienteil nutzen um die Lautstärke und Bass einzustellen.
Der Quellcode wurde mir auch zur Verfügung gestellt. Ich habe erst vor drei Wochen aktiv angefangen mit Bascom zu programmieren und habe das Tutorial auf Halvar.at durchgelesen den Quellcode für den Encoder habe ich von rn-wissen.
Das Bedienteil besteht aus einem Display und einem Encoder mit Taster. Das ist ein Teil des Quellcodes aus dem Bedienteil:
Call Encoder2() 'Wird zyklisch im Hauptprogramm aufgerufen
If Rotary_last <> Rotary Then 'Encoder gedreht?
If Rotary < 50 Then Rotary = 50
If Rotary > 150 Then Rotary = 150
Printbin 11 ; Rotary
Rotary_last = Rotary 'Neue Stellung merken
End If
Hier ein Auszug aus dem DSP:
Enable Urxc
On Urxc Uartlesen
Enable Interrupts
Main:
....
Uartlesen: 'interruptroutine UART lesen
Disable Interrupts
Dummy = Udr
If Dummy = &H0B Then Goto Volume
Goto Uartende
Volume:
Rotary = Waitkey()
Volumebit = 1
Printbin Rotary
Goto Uartende
Uartende:
I2cstop
Wait 1
Enable Interrupts
return
Soweit funktioniert der Code auch.
Nur ich will nicht das das Programm auf die Ankunft von Rotary wartet. Die Funktion sollte etwas resistenter sein. Sollte zufällig durch eine Störung auf dem Bus nur eine 11 sein dann soll sich das Programm nicht tot warten.
Noch eine andere Frage: der DSP soll im Auto verwendet werden schafft es die RS232 Schnittstelle des Atmega8 eine Entfernung von 5 Meter ohne zusätzliche Elektrische Bauteile zurück zu legen?