Forum: Mikrocontroller und Digitale Elektronik Sporadische Aussetzer Serielle Kummunikation AVR


von Helmut Volmer (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
Ich habe eine serielle Datenübertragung zwischen einem 89C51cc03(Master) 
und 8 ATMega 8(Slaves) als serielle Schnittstelle(2400Baud). Rxd und Txd 
physikalisch über 82C250(Can Treiber).
Der 89C51cc03 ist im Can Netzwerk und fragt die Slaves auf Kommando ab.
Antwortet ein Slave nicht wird nach 0.6 und 1.2Sec das Kommando 
wiederholt.
Etwa einmal pro Tag oder seltener antwortet ein Mega 8 nicht mehr.
(Protokoll mit PC mitgeschrieben). Nach neuem Kommando (an 89C51CC03 die 
Atmega abzufragen) funktioniert alles wieder.
89c51cc03 ist in C Programmiert; Der Mega8 in Bascom (Interrupts in 
Assembler).
Quarz 89C51CC03 16Mhz
      AtMega8 8 Mhz
Hat irgendjemand eine Idee woran das liegen könnte?

Als Anhang ist ein Auszug des ATMega Source.

Über einen guten Tip wäre Ich glücklich.

von Axel L. (axel_5)


Lesenswert?

Verendest Du den internen Taktgeber des ATMEGA ?

Ich hatte schon mal das Problem, dass der auf der Grenze lag, dann kam 
es auch zu sporadischen Aussetzern, weil die Baurate eben nicht 2400 
Baud war sondern eher 2300 Baud. In der Regel hat es dann geklappt, aber 
manchmal eben nicht.

Gruss
Axel

von James (Gast)


Lesenswert?

Die Probleme vom Axel kann ich bestätigen.
Ich hatte das gleiche Problem bei zwei Atmega 48 die ca. über
2 Meter per RS232 verbunden waren und im gleichen Raum. (auch gleiche
Temperatur) Mit dem Internen 8 MHz Oszillator war die Sache nicht so
toll stabil. Abhilfe: Entweder externer Quarz oder eine Art automatische
Baudrate-Erkennung.
Letzteres ist recht einfach:
Ein Zeichen z.B. 20H (das Blank) oder 30H (die ASCII-Null "0")
senden, der Empfänger mißt das ein oder 2 Bit breite H-Signal aus
und stellt den Teilerfaktor vom Uart entsprechend ein.
Am Kalibrierfaktor für den  Ozzillator braucht man NICHT "drehen"-

Mit obiger Lösung hatte ich das Problem in den Griff bekommen.
Es reicht vollkommen, wenn nur eine "Seite" nachgestellt wird.

Gruß

James

von David (Gast)


Lesenswert?

eigentlich sollte bekannt sein, dass wenn man eine zuverlässig 
funktionierende UART will, dass man einen quarz benutzen MUSS...

von STK500-Besitzer (Gast)


Lesenswert?

>eigentlich sollte bekannt sein, dass wenn man eine zuverlässig
>funktionierende UART will, dass man einen quarz benutzen MUSS...

Das halte ich für ein Gerücht. Sonst gäbe es nicht dauernd Leute, die 
den internen RC-Oszillator für zeitkritsche Aufgaben verwenden.

von Helmut Volmer (Gast)


Lesenswert?

Sind natürlich alle mit 8Mhz Quarz bestückt

von Falk B. (falk)


Lesenswert?

@  Helmut Volmer (Gast)

>Sind natürlich alle mit 8Mhz Quarz bestückt

Sind auch die AVR Fuses richtig gesetzt, sodass der Quarz verwendet 
wird? Sonst läuft der nämlich ggf. mit dem internen 8 MHz RC-Oszillator 
:-0

MfG
Falk

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.