www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega128 USART fehler beim Compilieren


Autor: Salzer Ricardo (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hi zusammen,

habe mir neulich ein AVR 128 board gekauft 
(Ebay-Artikel Nr. 260667006636) 
und naja jetzt bin ich soweit das ich uart implementieren will, habs mit 
dem testcode hier auf mikrocontroller.net probiert aber es kommen diesen 
error....


Build started 16.2.2011 at 15:44:19
avr-gcc  -mmcu=atmega128 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL 
-Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD 
-MP -MT main.o -MF dep/main.o.d  -c  ../../main.c
../../main.c: In function 'uart_putc':
../../main.c:40: error: 'UCSRA' undeclared (first use in this function)
../../main.c:40: error: (Each undeclared identifier is reported only 
once
../../main.c:40: error: for each function it appears in.)
../../main.c:44: error: 'UDR' undeclared (first use in this function)
../../main.c: In function 'USART_Init':
../../main.c:63: error: 'UBRRH' undeclared (first use in this function)
../../main.c:64: error: 'UBRRL' undeclared (first use in this function)
../../main.c:66: error: 'UCSRB' undeclared (first use in this function)
../../main.c:68: error: 'UCSRC' undeclared (first use in this function)
../../main.c: In function 'main':
../../main.c:83: warning: pointer targets in assignment differ in 
signedness
../../main.c:87: warning: pointer targets in assignment differ in 
signedness
make: *** [main.o] Error 1
Build failed with 8 errors and 2 warnings...




hat jemand ne ahnung??
wäre sehr dankbar!!

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Nimm dir das Datenblatt vom AVR und sieh nach, wie die Register richtig 
heissen.

MfG Spess

Autor: ..,- (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
UBRRH --> UBRR0H //für USART0
UBRRH --> UBRR1H //für USART1

für die andern Register natürlich auch ändern ...

Autor: Salzer Ricardo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe eigentlich schon controlliert...
im Datenblatt steht:

#define FOSC 1843200// Clock Speed
#define BAUD 9600
#define MYUBRR FOSC/16/BAUD-1
void main( void )
{
...
USART_Init ( MYUBRR );
...
}
void USART_Init( unsigned int ubrr )
{
/* Set baud rate */
UBRRH = (unsigned char)(ubrr>>8);
UBRRL = (unsigned char)ubrr;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 2stop bit */
UCSRC
}

zur initialisierung


und:

void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSRA & (1<<UDRE)) )
;
/* Put data into buffer, sends the data */
UDR = data;
}




aber mein Compiler kennt die Register nicht...
kann das sein das ich noch irgendeine Include benötige??
bin noch neu :)

mfg

Autor: Salzer Ricardo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@..,- danke geht :D


jetzt ist aber gleich noch eine frage aufgetaucht, also ich habe jetzt 
usart0 und die ist an PE0 bzw. PE1 oder?? weil da tut sich gar nix...

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>jetzt ist aber gleich noch eine frage aufgetaucht, also ich habe jetzt
>usart0 und die ist an PE0 bzw. PE1 oder?? weil da tut sich gar nix...

Vielleicht stört dein Programmierinterface. Das sind nämlich die Pins, 
über die der ATMega128 programmiert wird.

MfG Spess

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>kann das sein das ich noch irgendeine Include benötige??

Nur
#include <avr/io.h>
wird benötigt.
Dort wird dann je nach eingestelltem Prozessor automatisch aufgelöst, 
was alles eingebunden werden muss. Dafür muss natürlich im AVR-Studio 
der richtige Prozessor eingestellt sein, oder manuell definiert werden.

Grüße,

Peter

Autor: Salzer Ricardo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen dank für die antworten µC sendet wie wild :)

weiteres Problem:
wollte nun auch mit dem avr empfangen können vom pc ( max232, 
terminalprogramm) und habe
so uart initialisiert:
void USART_Init( unsigned int ubrr )
{
  // Set baud rate
  UBRR1H = (unsigned char)(ubrr>>8);
  UBRR1L = (unsigned char)ubrr;



  UCSR1B = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE); // RX TX und RX interrupt 
enable
  // Set frame format: 8data, 2stop bit

  UCSR1C = (1<<USBS)|(3<<UCSZ0);
}







und  die interrupt funktion sieht so aus:


ISR(USART_RXC_vect)
{
  unsigned char nextChar;

  // Daten aus dem Puffer lesen
  nextChar = UDR1;
  if( uart_str_complete == 0 ) // wenn uart_string gerade in Verwendung, 
neues Zeichen verwerfen
  {

    // Daten werden erst in string geschrieben, wenn nicht 
String-Ende/max Zeichenlänge erreicht ist/string gerade verarbeitet wird
    if( nextChar != '\n' && nextChar != '\r' && uart_str_count < 
UART_MAXSTRLEN - 1 )
    {
      uart_string[uart_str_count] = nextChar;
      uart_str_count++;
    }
    else
  {
      uart_string[uart_str_count] = '\0';
      uart_str_count = 0;
      uart_str_complete = 1;
    }
  }
}


(standart aus AVR tutorial :))



und naja wenn ich zeichen sende "hängt" sich der µC auf bis er resettet 
wird?


jemand ne idee??


MFG Ricardo!

Autor: Werner B. (werner-b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne ins Datenblatt gesehen zu haben...
Kompiliert das überhaupt?
Muss da nicht USART1_RXC_vect verwendet werden?

P.S. sollte man nicht fertig initialisieren bevor man TX, RX und ISR 
enabled?

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.