USART. Übertragungfehler.

OP #782052
Lesenswert?
• ▲
▼
Hi,

ich hab ein Schaltung mit einem Attiny2313. Diese Schaltung überträgt 
mit hilfe eines Max232N (1µF an der Ladepumpe) Daten.

Dabei werden sicher 3/4 der Daten falsch übertragen.

Ich habe bereits das Kabel, den µC und den Max232 ausgetauscht. Ohne 
erfolge.

Woran könnte es noch leigen ?
Gast #782073
Lesenswert?
• ▲
▼
Am Timing.

Entweder das Oszillator-Timing oder das Software Timing.

Die Leute wollen es ja immer nicht glauben, aber der interne Oszillator 
taugt nichts für die serielle Schnittstelle (ja, man kann ihn 
kalibrieren, nur sind Anfänger damit noch mehr überfordert).

Quarz dran, richtig berechnete Kondensatoren dran, Fuses richtig setzen, 
UBRR richtig setzen, U2X richtig setzen. Dann klappt das wie das 
Katzenmachen.

Wenn's um die Software geht, darauf achten, dass man nur schreiben 
sollte, wenn das Datenregister frei ist.
OP #782084
Lesenswert?
• ▲
▼
hi,


ich benutze ein 9,216Mhz Quarz. Die Baudrate ist 115200. (UBRR = 4).
Aber auch mit andern Baudraten ist der Fehler der gleiche.

Hier ist der Initalisierung und die sende funktion:
1
void initUSART( unsigned int baud )
2
{
3
  UBRRH = (unsigned char)(baud>>8);
4
  UBRRL = (unsigned char)baud;  
5
  
6
  UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
7
}
8

9
void USART_send(unsigned char c)
10
{
11
    while (!(UCSRA & (1<<UDRE))); 
12
    UDR = c;                          
13
}
OP #782390
Lesenswert?
• ▲
▼
hi,

9.126 MHZ ist leider ja kein Baudratequarz. Die Kondensatoren sind alle 
richtig.

Der fehler ist ja das nur ca 30% der Daten richtig an kommen. Ich hatte 
auch schon überlegt einen Hammingcode einzusetzen, denn das Parity Bit 
brings ja auch nicht.

woran könnte es noch liegen ?
#782406
Lesenswert?
• ▲
▼
@ Alexander B. (jeroen)

>9.126 MHZ ist leider ja kein Baudratequarz.

Bitte? Erst schreibst du

"ich benutze ein 9,216Mhz Quarz. Die Baudrate ist 115200. (UBRR = 4)."

Das ist ein perfekter Baudratenquarz.

Und nun 9.126 MHz. Zahlendreher?

>Der fehler ist ja das nur ca 30% der Daten richtig an kommen. Ich hatte
>auch schon überlegt einen Hammingcode einzusetzen, denn das Parity Bit
>brings ja auch nicht.

Bitte? Wenn 2/3 flöten gehen ist was faul. Da nützt auch Mr. Hamming gar 
nix.

>woran könnte es noch liegen ?

Arbeite die Checkliste Schritt für Schritt durch.

http://www.mikrocontroller.net/articles/AVR_Checkliste#UART.2FUSART

MFG
Falk
OP #782447
Lesenswert?
• ▲
▼
hi,

also laut http://www.mikrocontroller.net/articles/Baudratenquarz ist es 
kein Baudrate Quarz.

Die Liste hab vor der Thread erstellung durchgelesen und daran liegt es 
glaub ich nicht, das einzige das ich noch nicht ausgetauscht habe ist 
das Quarz.

Die Fusebits sind alle in PonyProg nicht gesetzt, also External 
Crystal/Ceramic Resonator (Quarz).

Woran könnt es noch liegen ? woran hab ich noch nicht gedacht ?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.