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?