hallo leute, hab zwei mikrocontrollertypen, auf einem gehts und auf dem anderen nicht. serielle kommunikation mit 9600 baud, 1 stopbit über bluetooth module. es funktioniert beim atusb1287 prima, mit dem atmega8515 nicht und es liegt sehr sicher an der konfiguration vom uart. laufen tut er mit einem 11,0592mhz quarz ich habs so gemacht: UCSRB |= (1<<RXEN) | (1<<TXEN); UCSRC |= (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0); UBBRL = 71; //9600 baud bei 11,0592 mhz der interrupt: ISR(USART_RX__vect){ cli(); receive= UDR; flag = 0x02; sei(); } die flag variable hab ich nur zum debuggen rein, die müsste ja wenigstens auf 0x02 springen ... sieht jemand einen fehler? takt usw. passt alles (lasse led im sekundtakt per timer1 blinken) danke schonmal
Hast Du UBBRH initialisiert? Kommt er überhaupt in den Rx - Interrupt? Hast es mal mit Pollen / Echo probiert?
>UCSRB |= (1<<RXEN) | (1<<TXEN); >die flag variable hab ich nur zum debuggen rein, die müsste ja >wenigstens auf 0x02 springen ... Nö, wie denn auch wenn der Int nicht aktiviert ist?
komischerweise kam bei UBRRH eine fehlermeldung ... jetzt hab ichs grad nochmal eingegeben und jetzt compiliert er es, sollte aber eh auf 0 >UCSRB |= (1<<RXEN) | (1<<TXEN); >die flag variable hab ich nur zum debuggen rein, die müsste ja >wenigstens auf 0x02 springen ... >>Nö, wie denn auch wenn der Int nicht aktiviert ist? danke für deine antwort, kannst du mir auch eine lösung sagen?
>danke für deine antwort, kannst du mir auch eine lösung sagen?
Tut mir leid, Ich bin hier nur für Tips zuständig.
Der mit der Lösung schläft schon ;)
Hallo, Veit K. schrieb: >>UCSRB |= (1<<RXEN) | (1<<TXEN); >>die flag variable hab ich nur zum debuggen rein, die müsste ja >>wenigstens auf 0x02 springen ... > >>>Nö, wie denn auch wenn der Int nicht aktiviert ist? > > danke für deine antwort, kannst du mir auch eine lösung sagen? da holger gerade nicht will, sage ich Dir die Lösung: Einfach den passenden Interrupt für USART_RX__vect freigeben... Gruß aus Berlin Michael
UCSRB |= (1<<UDRIE); ^^wäre wohl die antwort gewesen die ich gesucht habe. @michael: danke für den hinweis. @rest: ist mir schon klar ich habs übersehen und ich habs im datenblatt und in codebeispielen nicht gefunden. aber wenn ihr euch schon die mühe macht was zu schreiben dann wäre eine antwort wie "es gibt noch ein interrupt enable flag schau ins datenblatt" hilfreich gewesen, ich verlange ja nicht das es jemand für mich raussucht .. ich dachte mit tx und rx enable wäre der interrupt mit dabei
Hallo, wenn eine Komponente nicht macht, was man erwartet, JEDES Bit der Controlregister auf seine Bedeutung abklopfen. Dann stolpert man spätestens nach ein paar Minuten darüber. Den Hinweis, welche Registerinitialisierung klemmt, hat ja holger schon am 12.07.2009 23:08 geliefert. Ein Blick ins Datenblatt zur Registerbeschreibung von UCSRB hätte das Rätsel also schon lösen können... Gruß aus Berlin Michael
jo, bin wohl zusehr über das codebeispielt im datenblatt gestolpert. werds jetzt gleich mal testen, hoffe die baudrateneinstellung stimmt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.