wal wieder ein USART Problem

OP #1709540
Lesenswert?

Hallo Leute ich habe mal wieder ein Problem mit dem USART.
Controller: atmega 162
Quarz: 7,3728MhZ
Das ist mein Code er soll einfach in einer Schleife an den USart1 was 
ausgeben
1
int main(void)
2
{
3

4
UCSR0B |= (1<<TXEN0);                // USART1 TX einschalten
5
UCSR1B |= (1<<TXEN1);                // USART2 TX einschalten
6
UCSR0B |= (1<<RXEN0);
7
UCSR1B |= (1<<RXEN1);
8
UCSR0C |= (1<<URSEL0)|(3<<UCSZ00);    // USART1 Asynchron 8N1
9
UCSR1C |= (1<<URSEL1)|(3<<UCSZ10);    // USART2 Asynchron 8N1
10

11
UBRR0H = 0x2f >> 8;
12
UBRR1H = 0x2f >> 8;
13
UBRR0L = 0x2f;
14
UBRR1L = 0x2f ;
15

16
while (!bit_is_set(UCSR0A, UDRE0));
17

18
//Timer initialisieren
19
    TCCR0 |= (1<<CS00)|(1<<CS02);
20
    TIMSK =(1<<TOIE0);
21
    sei();//interrupts aktivieren
22

23

24

25

26
   while(1)
27
   {
28
     USART1_Transmit(0x56); //Sim
29
     USART2_Transmit('g'); //FR
30
   }
Den wert für UBRR hab ich von einem UARt Calculator errechnen lassen.

Aber an meinem TerminalProgramm kommt nur: € € \0  raus und das 
wiederholt sich immer.
Quarz ist aktiviert.
Weiterhin ist bei den Fuses Divide clock by 8 internally; [CKDIV8=0] 
aktiviert.
Als Quarz Fuse hae ich diese genommen:Ext. Crystal Osc.; Frequency 
3.0-8.0 MHz; Start-up time: 16K CK + 65 ms; [CKSEL=1101 SUT=11]

Ist das vielleciht der Fehler im System?
Über einen Tip würde ich mich sehr freuen.
Bis dahin noch einen schönen Männertag!
HAt jemand ne Ahnung?
Gast #1709548
Lesenswert?

> Weiterhin ist bei den Fuses Divide clock by 8 internally; [CKDIV8=0]
> aktiviert.

<hust>Willst Du das wirklich</hust>. Ich hab dein UBRR* nicht 
nachgerechnet, aber dein Quarz wäre ein so schöner Baudratenwelcher..

HTH

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