Atmega128 USART fehler beim Compilieren

Gast #2066047
Lesenswert?

hi zusammen,

habe mir neulich ein AVR 128 board gekauft 
(http://cgi.ebay.com/ATmega-ATmega128-AVR-MINI-Development-Board-/260667006636?pt=LH_DefaultDomain_0&hash=item3cb0f6deac#shId) 
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!!
Angehängte Dateien:
Gast #2066067
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
Gast #2066234
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
Gast #2068506
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!

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