Hallo,
ich hab ein Problem mit dem Uartempfang beim mega 32.
Das send geht, aber das empfangen nicht.
Das Programm ist das einfachste, das reproduzierbar nicht funktioniert.
Hab auch schon vieles andere ausprobiert, aber empfangen geht nicht.
Hab mittlerweile auch mehrer bsp Programme von hier und anderswo
probiert
- immer das gleiche : senden geht empfangen nicht.
Auch mit Interrupt gehts nicht.
Es liegt wohl daran, dass das Bit RXC nicht 1 wird und deshalb die while
Schleife while( ! (UCSRA & (1<<RXC))) nie verlassen wird, was auch
erklaert
warum bei anderen Versuchen kein Interrupt erfolgt.
Aber RXC wird doch durch HW gesetzt wenn ein Zeichen ankommt, oder ?
Du nutzt doch den internen Takt des Atmega32 oder?
Ich habe jetzt auf Anhieb keinen Fehler in deinem Programm gesehen aber
ich würde mal testen, ob es vielleicht daran liegt, das du den
OSSCAL-Wert nicht explizieht im Programm setzt. Das war auch mal bei mir
eine Fehlerquelle, weswegen mein Uart nicht funktioniert hat.
Hier Beitrag "Re: USART Atmega32" kannst du das
gerne nachlesen wenn du möchtest, da ist auch alle über den OSCCAL-Wert
erklärt.
Ich hoffe, das hilft dir weiter.
Gruß,
Marian
Hast du noch externe Hardware dran? Ich weiss aus leidvoller Erfahrung,
daß z.B. ein Max232, bei dem die Spannungsversorgung nicht stimmt oder
ganz fehlt, auch diesen Effekt haben kann.
Oliver
@Marian
>Du nutzt doch den internen Takt des Atmega32 oder?>Ich habe jetzt auf Anhieb keinen Fehler in deinem Programm gesehen aber>ich würde mal testen, ob es vielleicht daran liegt, das du den>OSSCAL-Wert nicht explizieht im Programm setzt. Das war auch mal bei mir
Und jetzt schreibst du einhundert mal
"Ich muss für UARTkommunikation immer einen Quarz als Taktquelle
verwenden"
MfG
Falk
@Falk: Da muss ich dir widersprechen. Man kann auch eine
UARTkommunikation ohne einen externen Quarz betreiben. Wie ich in dem
anderen Thread schon geschrieben habe, hat die Kommunikation auch mit
dem internen Takt funktioniert. Nachdem ich den OSSCAL Wert im Programm
gesetzt hatte, konnte ich auch mit dem internen Takt den UART betreiben.
>Nachdem ich den OSSCAL Wert im Programm gesetzt hatte, konnte ich auch >mit dem
internen Takt den UART betreiben.
Und das soll ein Anfänger auch machen? Herzlichen Glückwunsch!
@Marian
>@Falk: Da muss ich dir widersprechen. Man kann auch eine
Das ist dein gutes Recht und dazu ist dieses Forum auch da. ;-)
>UARTkommunikation ohne einen externen Quarz betreiben. Wie ich in dem
Ich kann auch ohne Sturzhelm und Versicherung Moped fahren. Die Frage
ist, wie sicher ist das ganze. Und bei Elektronik im allgemeinen und dem
AVR im speziellen ist die Frage immer: Wie (temperatur)stabil ist das
Ganze?. Und da scheidet der interne Oszillator schlicht und ergreifend
aus. Siehe Datenblatt, das Ding schwankt gut und gern +/-3% im gesamten
Temperatur- und Versorgungsspannungsbereich. Dazu kommt der
prinzipbedingte Fehler bei der Baudratengenerierung (8MHz ist keine
"UART"Frequenz), der bei höheren Baudraten schon mal an knapp ein
Prozent herranreichen kann (bei 8 MHz und 14400 Baud -0,8%).
Nochmal, es geht NICHT darum, dass es bei einer Person an einem schönen
Tag mal läuft, sondern darum, dass es sicher und problemlos von
tausenden Leuten von Sibirien bis in die Sahara nachgebaut werden kann
und auch läuft. Und gerade Anfänger tun gut daran, den UART erstmal nur
mit Quarz zu betreiben. Und auch die Leute die wissen wie der Hase läuft
werden selten in die Verlegenheit kommen, den UART mit internem
Oszillator zu betreiben.
MfG
Falk
Hallo ,
erstmal danke fuer die Hilfe...
Hab es mittlerweile hingekriegt. Dummer Fehler.
Ich hatte noch eine LED gegen Masse am RX Pin, ohne ging es dann.
Als externe HW ist ein Max202 dran.
OSCCAL Wert hatte ich nicht gesetzt und geht jetz auch ohne.
Ich hab auch die erfahrung gemacht ,dass es auch ohne Quarz ganz gut
geht.
Klar mit is besser, aber normalerweise funktioniert die Uart auch bei
kleinen Abweichungen in der Baudrate...
Tino
@tino
>Klar mit is besser, aber normalerweise funktioniert die Uart auch bei>kleinen Abweichungen in der Baudrate...
Bis zum nächsten Aufschrei "UART GEHT NICHT!".
Lernresistenz ist auch so ein Plage . . .
MFG
Falk
@Rahul, der Trollige: Klar wieso nicht? Ich war damals (und bin es noch
heute) auch blutiger Anfänger und habe dies getan. Das ist ja nun
wirklich nicht schwer, wenn man den anderen Threa gelesen hat, denn da
wurde mir das lang und breit erklärt, woran man auch erkennt, dass ich
extremer Anfänger war.
@Falk: Ja das weiß ich auch, dass es mit nem richtigen Quarz besser
funktioniert als mit dem internen aber darum ging es ja bei seinem
Problem nicht oder? Vielleicht hat er, wie ich damals auch, keinen Quarz
zur Hand und muss das so hinbekommen. Da würde es ihm wenig bringen,
wenn ich ihm sage das geht "nur" mit dem externen Quarz. Man kann ihn
nett darauf hinweisen, das es mit dem externen wesentlich stabiler läuft
und man damit dann auch die richtig hohen Baudraten erreicht aber von
vorne herein sagen, das geht nicht, finde ich nicht gut.
Mich wundert nur, dass es ohne diesen OSCCAL-Wert geht, da es damals bei
mir daran lag und ich auch nen Atmega32 hatte. Is schon komisch diese
ganze Angelegenheit.
Naja, schönen Abend noch!
Gruß,
Marian
>Das ist ja nun wirklich nicht schwer, wenn man den anderen Threa gelesen >hat,
Genau da liegt das Problem: Wer liest schon Threads im Forum?
Ich will den internen Oszillator nicht verteufeln, aber es ist meiner
Meinung nach für einen Anfänger einfacher, wenn er mit einem externen
Quarz (-oszillator) wie im Tutorium beschrieben anfängt.
Ich benutze Baudratenquarze einfach deswegen, weil es damals als ich mit
Controllern anfing, keine internen Oszillatoren gab (kennt jemand noch
"Fifth"?).