Hallo zusammen, als C-Neuling gebe ich mich mit der neuen Mnemonik schwer ... aber ich möchte nicht alles weiter in ASM schreiben. Bei der Deklaration der Zeiger *lz und *sz für den Rx-Puffer des UARTs bekomme ich vom Compiler die Fehlermeldungen: error: conflicting types for 'lz' error: previous declaration of 'lz' was here error: conflicting types for 'sz' error: previous declaration of 'sz' was here Beide Links verweisen auf die Deklaration. Ich verstehe nicht, warum die Deklaration falsch ist oder von der Reihenfolge noch nicht bekannt sein könnte? Im Forum scheint keiner das gleiche Problem zu haben. Ich suche jetzt einige Stunden nach einer Lösung. In der Hoffnung Euch mit dem vermutlich trivialen Problem nicht zu verprellen...
1 | #include <avr/io.h> |
2 | #include <inttypes.h> |
3 | #include <avr/interrupt.h> |
4 | #include <util/delay.h> |
5 | |
6 | //INCLUDE Test-LCD
|
7 | #include <stdlib.h> |
8 | #include "LCD_display.h" |
9 | |
10 | #define F_CPU 8000000UL
|
11 | |
12 | //UART Definitionen
|
13 | #define BAUD 9600UL // Baudrate
|
14 | #define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1)
|
15 | #define max 20 // Definiere maximale Laenge für Empfang
|
16 | |
17 | uint8_t puffer[max]; |
18 | uint16_t *lz; |
19 | uint16_t *sz; |
20 | |
21 | //Initialisierung der Zeiger auf Pufferanfang
|
22 | lz=puffer; |
23 | sz=puffer; |
24 | |
25 | |
26 | ISR(USART_RXC_vect) |
27 | {
|
28 | *sz = UDR; //empfangenes Datenbyte abspeichern |
29 | sz++; |
30 | if (sz==puffer+max) sz = puffer; //Ring-Puffer zurueckgesetzt |
31 | }
|
32 | ......usw |