Compiler- Fehler?

Gast #1828774
Hi Leute,
ich verwende AVR Studio und mache gerade meine ersten Gehversuche.
Leider komme ich hier (trotz tollem Tutorium) nicht weiter...

Sieht jemand an folgenden Fehlermeldungen vll. was ich falsch mache?

Danke!


rm -rf main.o lcd.o adc.o  C_STARTUP.elf dep/* C_STARTUP.hex 
C_STARTUP.eep
Build succeeded with 0 Warnings...
avr-gcc -I"N:\abcd\.." -I"C:\Program Files\WinAVR-20100110\avr" 
-mmcu=atmega32 -Wall -gdwarf-2 -std=gnu99    -mmcu=atmega32 
-DF_CPU=8000000UL -Os -fsigned-char -MD -MP -MT main.o -MF dep/main.o.d
 -c  ../main.c

../main.c: In function 'main':
../main.c:335: warning: implicit declaration of function 'ADC_Init'
../main.c:378: warning: implicit declaration of function 'ADC_Read_Avg'
../main.c:329: warning: unused variable 'mein_zeichen'
../main.c:327: warning: unused variable 'lauf_laenge'
../main.c:325: warning: unused variable 'l'
../main.c:324: warning: unused variable 'k'
avr-gcc -I"N:\Eigene Dateien\Frank\Elektronik\AVR-Projects\C_STARTUP\.." 
-I"C:\Program Files\WinAVR-20100110\avr"  -mmcu=atmega32 -Wall -gdwarf-2 
-std=gnu99    -mmcu=atmega32          -DF_CPU=8000000UL -Os 
-fsigned-char -MD -MP -MT lcd.o -MF dep/lcd.o.d  -
c  ../lcd.c

avr-gcc -I"N:\Eigene Dateien\Frank\Elektronik\AVR-Projects\C_STARTUP\.." 
-I"C:\Program Files\WinAVR-20100110\avr"  -mmcu=atmega32 -Wall -gdwarf-2 
-std=gnu99    -mmcu=atmega32          -DF_CPU=8000000UL -Os 
-fsigned-char -MD -MP -MT adc.o -MF dep/adc.o.d  -
c  ../adc.c

../adc.c: In function 'ADC_Init':
../adc.c:6: error: 'uint16_t' undeclared (first use in this function)
../adc.c:6: error: (Each undeclared identifier is reported only once
../adc.c:6: error: for each function it appears in.)
../adc.c:6: error: expected ';' before 'result'
../adc.c:8: error: 'ADMUX' undeclared (first use in this function)
../adc.c:8: error: 'REFS0' undeclared (first use in this function)
../adc.c:9: error: 'ADCSRA' undeclared (first use in this function)
../adc.c:9: error: 'ADPS1' undeclared (first use in this function)
../adc.c:9: error: 'ADPS0' undeclared (first use in this function)
../adc.c:10: error: 'ADEN' undeclared (first use in this function)
../adc.c:15: error: 'ADSC' undeclared (first use in this function)
../adc.c:19: error: 'result' undeclared (first use in this function)
../adc.c:19: error: 'ADCL' undeclared (first use in this function)
../adc.c:20: error: 'ADCH' undeclared (first use in this function)
../adc.c:21: error: expected expression before ')' token
../adc.c:21: warning: 'return' with a value, in function returning void
../adc.c: At top level:
../adc.c:26: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'ADC_Read'
../adc.c:41: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'ADC_Read_Avg'
make: *** [adc.o] Error 1
Build failed with 17 errors and 7 warnings...
#1828790
Jetzt gehst du dein main.c mal von oben nach unten durch.
Und fragst dich bei jeder Zeile, ob sie dem Compiler mitteilt, dass es 
eine Funktion ADC_Init gibt

(Was macht eigentlich der Inhalt von lcd.h in main.c. Das gehört da so 
nicht rein. Du inkludierst ja sowieso lcd.h)
Gast #1828805
Karl heinz Buchegger schrieb:
> (Was macht eigentlich der Inhalt von lcd.h in main.c. Das gehört da so
> nicht rein. Du inkludierst ja sowieso lcd.h)

Ja das hab ich aus der Not heraus gemacht, weil ich nicht geschafft hab, 
lcd.h zu inkludieren.


Ich hab jetzt in meinem Verzeichnis adc.h angelegt und in main.c 
folgends editiert:

#include "adc.h"

adc.h enthällt folgende Prototypen:

void ADC_Init(void);
uint16_t ADC_Read( uint8_t channel );
uint16_t ADC_Read_Avg( uint8_t channel, uint8_t average );

funktioniert aber trotzdem nicht.
immernoch 17 errors
#1828812
zbf schrieb:

> funktioniert aber trotzdem nicht.
> immernoch 17 errors

Dann fang mit dem ersten an ihn zu bearbeiten.

Immer daran denken: Jedes *.c File wird für sich selbst compiliert.

Wenn du in adc.c zb das ADMUX Register verwenden willst, dann musst du 
in adc.c auch etwas inkludieren, was den Compiler mit dem ADMUX Register 
bekannt macht. Zum Bleistift <avr/io.h>

Wenn du in adc.c den Datentyp uint16_t verwenden willst, dann musst du 
in adc.c etwas inkludieren, was den Compiler mit uint16_t bekannt macht.


Was du in main.c inkludierst, interessiert den Compiler nicht, wenn er 
adc.c compiliert. Denn: Jedes *.c File wird für sich selbst, völlig 
eigenständig und losgelöst von allen anderen, compiliert.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.