Hallo,
ich habe einige Kommunikationsprobleme bei der Kommunikation mit dem PC über die RS232!
Atmega16A <--> Windows7 PC, Baudrate 2400
Hier mal der kleine Programmteil:
Do
IF UCSR0A.RXC = 1 Then 'UART-Empfangsregister (Mega8=UCSR.RXC)
LSBByte = UDR
waitms 20
MSBByte = UDR
BB = MSBByte * 256
Empf = BB + LSBByte
Addr = Empf
GOSUB AnzAddr 'Anzeige Adresse
GOSUB AnzDaten 'Anzeige Daten
GOSUB AnzDatHex
GOSUB AnzAddHex
Daten = Daten + 1
'PrintBin Daten
'GOSUB WriteAddr
'GOSUB WriteDaten
Toggle LED
End IF
Loop
End
Und zwar funktioniert das Programm ganz gut wenn ich keine Daten sende (Printbin ist noch auskommentiert).
Empfangen werden zwei Bytes und gesendet nur ein Byte.
Ich empfange korrekte Daten und die LED Toggelt jedesmal, wenn ein Word empfangen wurde. Die Wartezeit
zwischen dem Auslesen des UDR - Registers muß bei dieser Baudrate min 11ms sein.
Sende ich zusätzlich Daten dann kommen die Eigangsdaten vom PC nicht korrekt an und die Schleife ist ständig
aktiv (LED toggelt und Daten werden dauernd incrementiert). Denke das UCSR0A.RXC - Register wird nicht 0!
Kann es sein, dass der Printbin - Befehl meine UART neu konfiguriert?
Habt ihr für meine Anwendung ein gutes Beispiel? Es wurde schon viel darüber geschrieben aber ...
Danke und schönen Sonntag noch
Jürgen
ich habe einige Kommunikationsprobleme bei der Kommunikation mit dem PC über die RS232!
Atmega16A <--> Windows7 PC, Baudrate 2400
Hier mal der kleine Programmteil:
Do
IF UCSR0A.RXC = 1 Then 'UART-Empfangsregister (Mega8=UCSR.RXC)
LSBByte = UDR
waitms 20
MSBByte = UDR
BB = MSBByte * 256
Empf = BB + LSBByte
Addr = Empf
GOSUB AnzAddr 'Anzeige Adresse
GOSUB AnzDaten 'Anzeige Daten
GOSUB AnzDatHex
GOSUB AnzAddHex
Daten = Daten + 1
'PrintBin Daten
'GOSUB WriteAddr
'GOSUB WriteDaten
Toggle LED
End IF
Loop
End
Und zwar funktioniert das Programm ganz gut wenn ich keine Daten sende (Printbin ist noch auskommentiert).
Empfangen werden zwei Bytes und gesendet nur ein Byte.
Ich empfange korrekte Daten und die LED Toggelt jedesmal, wenn ein Word empfangen wurde. Die Wartezeit
zwischen dem Auslesen des UDR - Registers muß bei dieser Baudrate min 11ms sein.
Sende ich zusätzlich Daten dann kommen die Eigangsdaten vom PC nicht korrekt an und die Schleife ist ständig
aktiv (LED toggelt und Daten werden dauernd incrementiert). Denke das UCSR0A.RXC - Register wird nicht 0!
Kann es sein, dass der Printbin - Befehl meine UART neu konfiguriert?
Habt ihr für meine Anwendung ein gutes Beispiel? Es wurde schon viel darüber geschrieben aber ...
Danke und schönen Sonntag noch
Jürgen