PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Brauche Hilfe bei der Kommunikation zweier Atmega über UART



gm4288
27.12.2011, 18: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?

TheDarkRose
27.12.2011, 20:31
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 würde an dieser Stelle auf einen RS485 Pegel wandeln, wegen den Störungen.

gm4288
27.12.2011, 21:09
Auf der Platine wurde ein Platz für einen Max485 vorgesehen, das würde passen.
Sind die Befehle die selben wie bei RS232?
Gibt es einen kleinen Code wo die Kommunikation wegen dem Half-Duplex geregelt wird?

TheDarkRose
27.12.2011, 21:15
RS232 ist kein Protokoll, sondern nur ein Standard für Signalpegel und Übertragung. Das Protokoll würde gleich bleiben. Kein Vollduplex möglich?

gm4288
27.12.2011, 21:47
ahhh ich habe es mit dem RS485 verwechselt.