mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR AT90CAN128 uart


Autor: Flo N. (teleflo)
Datum:

Bewertung
0 lesenswert
nicht 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.
#include <avr/io.h>
#include <util/delay.h>
#include <avr/wdt.h>

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


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


void main()
{
  wdt_disable();
  usart0_init(12);
  
  while(1)
  {
    PORTC |= (1 << PINC6); //turn on led
    _delay_ms(1000);
    usart0_tx('i');

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

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...

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Flo N. (teleflo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
Danke für deine Antwort.
Ja die Zeiten fürs Led passen.
Oszi hab ich leider keines.
Kanns sein das es da noch irgend nen teiler gibt der die baudrate 
verändert ?
Hab beim pc die baudrate von 38400 bis 1200 duchprobiert.
es kommt immer irgend ein müll an.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

CKDIV8-Fuse?

MfG Spess

Autor: Flo N. (teleflo)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Nein die fuse ist nicht gesetzt.
Leider ist das nicht der Fehler.
Verdammt, hätte nicht gedacht das es soo kompliziert sein kann so ein 
einfaches proggi zum laufen zu bringen. :-(

Autor: Andi ... (xaos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann dir bei bedarf mal die uart sources von mir geben, vlt hilfts

Autor: Flo N. (teleflo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI

Ja das wäre super.

Autor: Andi ... (xaos)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
die header file spar ich mir mal, steht nichts weiter an definitionen 
drinnen. vlt hilfts dir ^^
generell sollte die konstruktor sowie der read/write teil für dich 
relevant sein

Autor: Flo N. (teleflo)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Flo N. (teleflo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag ins Logbuch:

Mein rs232 zu usb converter war der grund.
Das war einer mit TTL Pegel :-)
Tjo das sind Probleme auf die man ganz zum schluss kommt..

lg flo

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.