hab kijons code genommen:
bekomme dann aber beim kompilieren immer folgende fehlermeldung:Code:#include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <avr/pgmspace.h> #define SYSCLK 7372800 #define BAUD 9600UL #define UBRR_BAUD ((SYSCLK/(16*BAUD))-1) #define TRUE 1 #define FALSE 0 // USART initialisieren void uart_init(void); volatile unsigned char daten_gesendet = TRUE; const prog_char* volatile p_string; // Zeichenkette im Flashspeicher prog_char daten[] = "Hello World!\n"; int main(void) { // USART initialisieren uart_init(); sei(); while (1) { if (daten_gesendet) { // Flag zurücksetzen daten_gesendet = FALSE; // Pointer zeigt auf die Daten im Flashspeicher p_string = daten; /* Interrupt aktivieren, damit wird sofort zur Interruptroutine gesprungen und das erste Zeichen gesendet. */ UCSRB |= (1<<UDRIE); } } } void uart_init(void) { // Baudrate einstellen ( Normaler Modus ) UBRRH = (unsigned char) (UBRR_BAUD>>8); UBRRL = (unsigned char) (UBRR_BAUD & 0x00FF); // Aktivieren des Empfängers, des Senders und des "Daten empfangen"-Interrupts UCSRB = (1<<RXEN)|(1<<TXEN); // Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); } /* Interrupt wird ausgelöst sobald der Sendepuffer leer ist */ SIGNAL(SIG_UART_DATA) { char buffer = pgm_read_byte(p_string++); /* Wenn nicht das Ende der Zeichenkette erreicht wurde, dann weiteres Zeichen senden */ if ( buffer != '\0' ) { UDR = buffer; } else { // Flag setzen, das der String gesendet wurde daten_gesendet = TRUE; // Interrupt deaktivieren UCSRB &= ~(1<<UDRIE); } }
Woran liegt das jetzt, das erste Beispiel bei dem ich auf ein Regsiter zugefriffen hab ging noch?Code:Z:\AVRDevel\Test>make -------- begin -------- avr-gcc (GCC) 3.4.3 Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Compiling: Test.c avr-gcc -c -mmcu=atmega162 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,- adhlns=Test.lst -std=gnu99 -MD -MP -MF .dep/Test.o.d Test.c -o Test.o Test.c: In function `main': Test.c:41: error: `UCSRB' undeclared (first use in this function) Test.c:41: error: (Each undeclared identifier is reported only once Test.c:41: error: for each function it appears in.) Test.c:41: error: `UDRIE' undeclared (first use in this function) Test.c: In function `uart_init': Test.c:49: error: `UBRRH' undeclared (first use in this function) Test.c:50: error: `UBRRL' undeclared (first use in this function) Test.c:53: error: `UCSRB' undeclared (first use in this function) Test.c:53: error: `RXEN' undeclared (first use in this function) Test.c:53: error: `TXEN' undeclared (first use in this function) Test.c:56: error: `UCSRC' undeclared (first use in this function) Test.c:56: error: `URSEL' undeclared (first use in this function) Test.c:56: error: `UCSZ1' undeclared (first use in this function) Test.c:56: error: `UCSZ0' undeclared (first use in this function) Test.c: At top level: Test.c:60: warning: `SIG_UART_DATA' appears to be a misspelled signal handler Test.c: In function `SIG_UART_DATA': Test.c:67: error: `UDR' undeclared (first use in this function) Test.c:74: error: `UCSRB' undeclared (first use in this function) Test.c:74: error: `UDRIE' undeclared (first use in this function) make: *** [Test.o] Error 1
das Makefile hab ich übrigens mit MFile erstellt.







Zitieren
Lesezeichen