Hallo, wollte folgenden Code mit WinAVR compilieren: #include <inttypes.h> #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> DDRB=0xFF; PORTB=0xFF; int lauflicht; lauflicht=1; void main(void){ if(;;){ PORTB=lauflicht; lauflicht=lauflicht<<1; if (lauflicht==0) lauflicht=1; } } Bekomme folgende Fehlermeldung: > "make.exe" all -------- 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. Linking: lauflicht.elf avr-gcc -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns= -std=gnu99 -MD -MP -MF .dep/lauflicht.elf.d --output lauflicht.elf -Wl,-Map=lauflicht.map,--cref -lm C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/lib/avr4/crtm8.o(.ini t9+0x0): undefined reference to `main' make.exe: *** [lauflicht.elf] Error 1 > Process Exit Code: 2 Kann mir jemand weiterhelfen? Grüße Chris
Grob drübergeschaut vermute ich ein Problem im Makefile ! Wenn Du nur eine C-Datei hast, solltest Du diese main.c nennen. Im Auswahlfeld "C/C++ Source file(s)" solltest Du keinen Eintrag haben. Das Häkchen "include main.c" muß gesetzt sein. Im Makefile sollte u.a. in etwa folgendes stehen: # Output format. (can be srec, ihex, binary) FORMAT = ihex # Target file name (without extension). TARGET = main # List C source files here. (C dependencies are automatically generated.) SRC = $(TARGET).c Bitte um Info, wenn das geklappt hat Gruß Detlef
Hab mir Dein Programmcode genauer angesehen. Du scheinst noch nicht oft programmiert zu haben ! Du hast Zuweisungen vorgenommen, die ausserhalb jeglicher Funktion existieren ! Die If-Anweisung mit den beiden Simikola ist glaube ich nonsens ! Ich schau mir gerade mal die Logik an und schicke Dir mal eine korrigierte Version (Soll nicht besserwisserisch klingen !) Gruß Detlef
Danke, der Fehler lag im Makefile... Die Zuweisung des Main-Files war nicht korrekt!
Es ist egal wie die Sosse heisst, man muss halt nur sein Makefile entsprechend programmieren. Probier es aber mal mit int main(void) Olaf
@Chris 123: Schön dass es geklappt hat. Aber konntest Du wirklich fehlerfrei compilieren ? würde mich wundern, wenn der compiler den Code so schlucken würde. Wie wärs damit: #include <inttypes.h> #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> int main(void){ /* Hier Variablen deklarieren */ int lauflicht = 0x00; /* Hier Vorinitialisierungen */ lauflicht = 0x01; /* Bit 0 zunaechst eingeschaltet */ DDRB = 0xFF; /* Port B auf Output stellen */ While(1) { PORTB = lauflicht; lauflicht = (lauflicht<<1); if (lauflicht == 0x00) { lauflicht = 0x01; } } } Gruß Detlef
Fehlerfrei compilieren nein, allerdings beziehen sich die Fehlermeldungen jetzt auf den Code... Ist schon eine Weile her, als ich Student war, und C // C++ gelernt habe :-) Danke für deinen Code...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.