Forum: Mikrocontroller und Digitale Elektronik C-Source compilieren


von Blobb (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe die Schaltung (von Thomas Pfeifer) zur Temperaturregelung
meines Laminators nachgebaut. Nun mein Problem:

Die Software muß kalibriert werden. Da ich kein C "spreche" stehe ich 
vor diversen Fehlermeldungen (siehe Anhang). Zum Compilieren der 
Software verwende ich AVR-Studio 4.12 Build 472, in Kombination mit 
WinAVR 20070122.   Um es gleich vorweg zu nehmen: ...ich benötige keinen 
Lehrgang in C-Programmierung, sondern lediglich eine Hilfe um das File 
zu compilieren.



Hier der Link zu Thomas´ Software:

http://thomaspfeifer.net/

Vielen Dank
Blobb

von ozo (Gast)


Lesenswert?

Das erste warning kommt weil sich der pfad zu delay.h geändert hat, er 
ssagt dir ja sogar, wiw der neue heisst.
Die Signatur von fdevopen hat sich wohl geändert, in der Doku von der 
avr-libc steht sie jetzt als:

FILE* fdevopen   ( int(*)(char, FILE *)   put,
      int(*)(FILE *)  get
           )

Die 0 muss weg...

von pschober (Gast)


Lesenswert?

Sieht so aus, als ob das Programm unter einer älteren Version von WinAVR 
geschrieben wurde.
Am einfachsten dürfte es wohl sein, den Autor nach der Version zu 
fragen, und diese zu installieren.

von Oliver (Gast)


Lesenswert?

"AVR-Studio 4.12 Build 472, in Kombination mit
WinAVR 20070122.  "

Zumindest nach offiziellen Angaben von Atmel benötigt das aktuelle 
WinAVR mindestens die Studio-Version 4.13. Das Problem mit dem 
geänderten fdevopen löst das aber auch nicht.

Ich würde es mal mit der letzten 2006-WinAVR-Version probieren.

Oliver

von Oliver (Gast)


Lesenswert?

Nachtrag zum fdevopen-Problem:

Beitrag "too many arguments to function `fdevopen'"

Oliver

von Blobb (Gast)


Lesenswert?

Hallo,

ich habe jetzt versucht mit einer älteren Version von WinAVR 
(20050214)zu compilieren. Folgendes Ergebnis:


> "make.exe" all
avr-gcc -g -Wall -Os -mmcu=atmega8    -c -o Laminator.o Laminator.c
Laminator.c: In function `main':
Laminator.c:87: warning: 'pwm' might be used uninitialized in this 
function
avr-gcc -g -Wall -Os -mmcu=atmega8  -Wl,-Map,Laminator.map -o 
Laminator.elf Laminator.o
avr-objdump -h -S Laminator.elf > Laminator.lst
avr-objcopy -j .text -j .data -O ihex Laminator.elf Laminator.hex
avr-objcopy -j .text -j .data -O binary Laminator.elf Laminator.bin
avr-objcopy -j .text -j .data -O srec Laminator.elf Laminator.srec
avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O ihex 
Laminator.elf Laminator_eeprom.hex
avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O binary 
Laminator.elf Laminator_eeprom.bin
avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O srec 
Laminator.elf Laminator_eeprom.srec

> Process Exit Code: 0




Hierbei stört mich folgende Zeile:
Laminator.c:87: warning: 'pwm' might be used uninitialized in this 
function


Kann mir einer von Euch helfen ? Es geht mir lediglich darum das File zu 
compilieren, es in den AVR zu brennen, damit die Temparaturregelung 
korrekt arbeitet. Was mache ich eigentlich mit dem "makefile" ? Benötige 
ich das zum fehlerfreien compilieren ?

Gruß,

von Snake (Gast)


Lesenswert?

warnings zu ignorieren ist zwar nicht schön, aber ansonsten war dein 
make doch erfolgreich. brenn einfach mal und schau, obs funktioniert. 
(exit code 0 => kein fehler)

von Oliver (Gast)


Lesenswert?

"Was mache ich eigentlich mit dem "makefile" ? Benötige
ich das zum fehlerfreien compilieren ?"

Nix. Du hast schon fertig compiliert. Das hex-file findest du im Ordner 
"default".

"warning: 'pwm' might be used uninitialized in this
function" sagt genau das, was da steht. Der Compiler ist der Meinung, 
daß es eventuell möglich ist, daß die Variable pwm uninitialisiert 
benutzt werden kann. Das liegt nicht am Compiler, sondern am Sourcecode. 
Erfahrungsgemäß liegt der gcc mit der Warnung aber nicht immer richtig. 
Also kannst du dich jetzt beim Autor beschweren, oder das Problem selber 
lösen, oder es einfach so lassen. Fehlerfreie Software gibt es sowieso 
nicht :-)

Oliver

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
Noch kein Account? Hier anmelden.