usart konfiguration atmega8515 9600 N 1 GCC

OP #1331794
Lesenswert?
• ▲
▼
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
OP #1331844
Lesenswert?
• ▲
▼
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?
#1331957
Lesenswert?
• ▲
▼
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
OP #1332429
Lesenswert?
• ▲
▼
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
#1332464
Lesenswert?
• ▲
▼
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren