mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Sporadische Aussetzer Serielle Kummunikation AVR


Autor: Helmut Volmer (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Axel Laufenberg (axel_5)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: James (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: David (Gast)
Datum:

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

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Helmut Volmer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sind natürlich alle mit 8Mhz Quarz bestückt

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.