AVR AT90CAN128 uart

OP #1768788
Lesenswert?

Hallo

Ich bin an verzweifeln mit dem uart.
Es will einfach nicht.
µC at90can128
externer 8MHz Quartz
Mein code:
Led 1s an, dann 1s aus.
Also wird alle 2s ein Zeichen geschickt.
1
#include <avr/io.h>
2
#include <util/delay.h>
3
#include <avr/wdt.h>
4

5
void usart0_init(unsigned long baudrate) // Initialize USART0
6
{  
7
  UBRR0H  = 0;
8
  UBRR0L = baudrate; // set baud rate UBRRN sei 12 für 8 MHZ und 38400
9
  UCSR0B = (1<<RXEN) | (1<<TXEN); // enable receiver and transmitter
10
  UCSR0C = 0x06;// 8 Datenbit 1 Stoppbit no parity
11
}
12

13

14
void usart0_tx (char data) // transmit byte via usart0
15
{
16
  while (!(UCSR0A & (1 << UDRE0))); // wait for empty transmit buffer
17
  UDR0 = data; // put data to buffer = send data
18
}
19

20

21
void main()
22
{
23
  wdt_disable();
24
  usart0_init(12);
25
  
26
  while(1)
27
  {
28
    PORTC |= (1 << PINC6); //turn on led
29
    _delay_ms(1000);
30
    usart0_tx('i');
31

32
    PORTC &= ~(1 << PINC6);//turn off led
33
    _delay_ms(1000);
34
  }
35
}

Es kommt leider jede Sekunde nur K? an.
also 2 Byte anstatt von einem.
Hab mir auch schon die anderen uart Threads durchgelesen.
Ich find den Fehler einfach nicht...
Moderator (Firma: Titel) Persönliche Seite #1768895
Lesenswert?

> Es kommt leider jede Sekunde nur K? an.
> also 2 Byte anstatt von einem.
Das deutet darauf hin, dass die Baudrate deines uC niedriger als die des 
PC ist. Hast du ein Oszilloskop zur Hand? Damit könntest du die Baudrate 
(Zeit für 1 Bit) ganz einfach ausmessen....

> externer 8MHz Quartz
> Led 1s an, dann 1s aus.
Das hast du kontrolliert? Diese Zeiten passen?
OP #1769003
Lesenswert?

Danke für deine Hilfe.
So hab mal deine settings ausprobiert.
Es kommt genau das selbe wie bei meinen settings an.
Also die clockeinstellungen müssten ja passen da die led 1 sekunde an 
bzw aus ist.
Irgendwie muss da was mit den baudratengenerator nicht stimmen.
verdammt...

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