www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART des AT90CAN128 mit WinAvr


Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Ich möchte mit WinAvr den UART des AT90Can nutzen. Doch alle 
Beispielprogramme, die ich so eintippe machen Fehler. Es kommen dann 
Sachen wie "error: 'UBRRL' undeclared (first use in this function)".
Kann mir einer ein Beispiel für den AT90Can zukommen lassen, mit dem ich 
was anfangen kann oder mir tipps geben, woher meine Fehler rühren?
Bin neu im WinAvr.
Gruß, Alex

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex wrote:
> Hallo.
> Ich möchte mit WinAvr den UART des AT90Can nutzen. Doch alle
> Beispielprogramme, die ich so eintippe machen Fehler. Es kommen dann
> Sachen wie "error: 'UBRRL' undeclared (first use in this function)".


Wäre es nicht sinnvoller, sich mal damit zu beschäftigen, wie die UART 
funktioniert, statt nur stupid copy&paste zu machen?

Schau dochmal, für welchen AVR der Beispielcode mit UBRRL gemacht ist.
Dann schau ins Datenblatt, welche Funktion UBRRL hat.

Und dann schau ins Datenblatt Deines AVR, wie dort das Register mit 
derselben Funktion heißen könnte.


Peter

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, hast recht.
Bin damit berits zurande gekommen, nachdem ich im datenblatt nachgesehen 
habe.
Problem war, dass der At90Can 2 UARTS hat, die mit 0 und 1 bezeichnet 
werden. Demnach werden die Register auch anders genannt. UBRRH heist 
beispielsweise ubrr0h und ubrr1h für das jeweilige uart. hatte mit 
ubrrh0 etc experimentiert, aber zwecklos.
lesen ist halt doch nicht immer sinnlos!

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab nun aber ein neues Problem!
Win AVR kompiliert den Code nun Problemlos.
Möchte ich allerdings das Testprogramm bein AVR Studio Simulieren, 
bleibt das Programm hängen, sobald das UCSR0A leer ist.

//---------------------------------------------------------------------- 
---
//USART0 Initialisieren
void USART0_init(void)
{
  //Baudrate einstellen (Normaler Modus)
  UBRR0H = (unsigned char) (UBRR_BAUD>>8);
  UBRR0L = (unsigned char) UBRR_BAUD;
  //Aktivieren von receiver und transmitter
  UCSR0B = (1<<RXEN)|(1<<TXEN);
  //Einstellen des Datenformats: 8Datenbits, 1 Stopbit
  UCSR0C = (0<<UMSEL0)|(0<<UPM0)|(0<<USBS0)|(3<<UCSZ0);
  //Receiver und Transmitter Freigeben
  UCSR0B = (1<<RXEN0) | (1<<TXEN0);
}

//---------------------------------------------------------------------- 
---
//USART0 Übertragen
void USART0_Transmit(unsigned char data)
{
  //Warten auf leeren Transmitbuffer
  while (!(UCSR0A & (1<<UDRE0)))
  {
  }
    //Daten in den  buffer, senden der daten
    UDR0 = data;
}
/----------------------------------------------------------------------- 
--
//---------------------------------------------------------------------- 
---
//Hauptprogramm
int main(void)
{
  unsigned char i;
  //uint8_t buffer;

  USART0_init();

  //Endlosschleife
  while (1)
  {
    PORTB = i++;
----> !!Fehler    while (!(UCSR0A & (1<<UDRE0)))
  {
  }
    //Daten in den  buffer, senden der daten
    UDR0 = 'x';
    //USART0_Transmit("x");
    //i=USART0_Receive();

  }
  return 0;
}

Hat es was mit dem Simulieren zu tun oder mit meinem Programmcode??
Gruß

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.