www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik winavr Fehler beim compilieren


Autor: Chris123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Detlef Wilken (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Detlef Wilken (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Chris123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke,

der Fehler lag im Makefile...

Die Zuweisung des Main-Files war nicht korrekt!

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist egal wie die Sosse heisst, man muss halt nur sein Makefile
entsprechend programmieren.

Probier es aber mal mit

int main(void)

Olaf

Autor: Detlef Wilken (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Chris123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.