Forum: Mikrocontroller und Digitale Elektronik UART0 und UART1 am ATMega1284P klappt nicht


von Rolf (Gast)


Angehängte Dateien:

Lesenswert?

Hy zusammen,
ich bin so langsam am ende mit meinem Nerven.
Ich versuche auf einem ATmega1284P beide UART am laufen zubekommen,
"soweit" klappt es auch.
Das Ganze soll später so ablaufen.
PC(srting einlesen am UART1)->Atgema1284P->über UART0 zurück zum PC.

das ganze läuft mit Teraterm, am UART0 habe ich das STK500(RS232) und am 
UART1 (ein FTDI RS232 to USB).

Zum Versuchen habe ich teraterm 2 mal offen und wenn den AtMega1284P 
Spannung anschliessen soll "Start" auf beiden terminals erscheinen.
dies Passiert aber nur 100% mit UART1(FTDI) am UART0 kommt "CTaBt".
Ich habe anschließent ein paar worte eingetippt um zu prüfen ob es ein 
einmaliger fehler ist oder ein Systematischer.
Mit UART1 senden und UART0 empfangen->anzeigen
Masse (UART1) => MAcse (UART0)
Start (UART1) => CTabt (UART0)
Was geht ab in dir (UART1) => Gie gehd ec dib (UART0)

Ich finde aber nicht den fehler.
Wenn mir jemand auf die sprünge helfen könnte wäre super.

MfG
Rolf

von Spess53 (Gast)


Lesenswert?

Hi

>#warning "F_CPU war noch nicht definiert, wird nun mit 8000000 definiert"
>#define F_CPU 20000000UL     /* Quarz mit 3.6864 Mhz */

Nettes Durcheinander. Was stimmt denn nun?

MfG Spess

von Timmo H. (masterfx)


Lesenswert?

UBBR stimmt wohl nicht.
Wenn dein Oszi 20 MHz hat ist UBBR=10 115200 Baud mit 1.4% Fehler.

Wenn der Oszi aber 3.6864 MHz hat dann solltest du
1
UART1_Init(11);
2
UART0_Init(11);
schreiben um genau auf 19200 Baud zu kommen. Für 9600 Baud 23.
Also kläre uns auf

von Karl H. (kbuchegg)


Lesenswert?

Timmo H. schrieb:
> UBBR stimmt wohl nicht.
> Wenn dein Oszi 20 MHz hat ist UBBR=10 115200 Baud mit 1.4% Fehler.
>
> Wenn der Oszi aber 3.6864 MHz hat dann solltest du
>
1
> UART1_Init(11);
2
> UART0_Init(11);
3
>
> schreiben um genau auf 19200 Baud zu kommen. Für 9600 Baud 23.

Und am besten setzt man F_CPU richtig und lässt das den Compiler 
ausrechnen. Der soll schliesslich auch was tun.

von Rolf (Gast)


Lesenswert?

Danke, für die Hinweisse
mit so einer schnellen antwort habe ich nicht gerechnet.
Habe baud runter gesetzt auf 9600 (UBRR auf 129), daran lag der fehler.
Und Sorry für die schlechte kommentierung Vorallem mit dem OSZI 
(20MHz,8MHz und 3.864MHz). Ich benutzt ein 20 MHz oszi. Aber der Fehler 
war die fehler Rate von -1.4%. Daher auch die falschen Buchstaben.

von Spess53 (Gast)


Lesenswert?

Hi

>Aber der Fehler
>war die fehler Rate von -1.4%. Daher auch die falschen Buchstaben.

Unwahrscheinlich. Datenblatt:

Max Total Error (%)    Recommended Max
                      Receiver Error (%)
+4.58/-4.54                 ±2.0

MfG Spess

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.