winavr Fehler beim compilieren

Gast #168379
Lesenswert?

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
Gast #168380
Lesenswert?

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
Gast #168381
Lesenswert?

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
Gast #168384
Lesenswert?

@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
Gast #168385
Lesenswert?

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...

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