Forum: Mikrocontroller und Digitale Elektronik ATmega8 Code kompilieren - Anfägerfrage


von Ralf J. (cosmicos)


Lesenswert?

Hallo zusammen,

ich habe eine Anfängerfrage:

Ich habe im Netz einen Bauplan für einen ATmega8 basierten Timer 
gefunden und das Teil nachgebaut.

Soweit hat alles gut geklappt und ich habe vom Entwickler auch noch den 
Quellcode sowie die .hex und die .eep Dateien bekommen.

Nun habe ich folgendes Problem:

Wenn ich mit avrdude die Original-Dateien vom Entwickler flashe, dann 
klappt alles erwartungsgemäß und der Timer funktioniert.

Wenn ich mit AVR-Studio 5 jedoch die (unveränderten) Sourcecodes 
kompiliere und diese dann flashe, dann erscheinen nur krypische Zeichen 
auf dem Display des Timers. Flashe ich die .hex des Entwicklers zurück, 
dann ist alles wieder gut.

Ich beziehe mich auf dieses Projekt: 
http://www.kaffee-netz.de/m-hlen/67316-m-hlentimer-im-eigenbau.html

Was mache ich beim kompilieren falsch? Ich habe explizit ATmega8 als 
Device angegeben. Verbaut ist ein ATMEGA8-16PU

Zweites Problem:
Das Kompilieren mit AVRStudio unter Windows ist nur ein Notbehelf. Viel 
lieber würde ich unter Linux arbeiten, da das mein Haupt-OS ist. Leider 
bekomme ich das mit dem Makefile noch nicht hin.

Hat vielleicht jemand ein Makefile zur Codeerstellung/Linux für ATMega8?

Danke vorab für Tipps und Hilfe
Gruß
Ralf

von Dietrich L. (dietrichl)


Lesenswert?

Ralf Jardon schrieb:
> Was mache ich beim kompilieren falsch?

Falsches Timing?
Falls das Timing mit SW-Delays arbeitet: F_CPU falsch oder an falscher 
Stelle definiert? Compiler-Optimierung falsch gewählt?

Zeig doch mal den Source-File.

Gruß Dietrich

von Ralf J. (cosmicos)


Lesenswert?

Dietrich L. schrieb:

> Falsches Timing?
> Falls das Timing mit SW-Delays arbeitet: F_CPU falsch oder an falscher
> Stelle definiert? Compiler-Optimierung falsch gewählt?
>
> Zeig doch mal den Source-File.
>

Hallo Dietrich,

die Sourcen sind öffentlich hier verfügbar:

http://dl.dropbox.com/u/3511265/Timer.rar

F_CPU sagt mir jetzt nichts, kommt in den Source-Files auch nicht vor! 
Die Compiler-Parameter sind wie folgt:

-funsigned-char -funsigned-bitfields -Os -fpack-struct -fshort-enums 
-Wall -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" 
-mmcu=($DEVICE)

Da ich blutiger Anfänger bin, sagt mir das nicht viel.

Was mir noch auffällt ist, dass die Files, die ich kompiliere, alle 
etwas größer sind (ein paar hundert Byte) als die, die mir der 
Entwickler zugesendet hat. Daher auch meine Theorie, dass ich in 
AVRStudio etwas falsch eingestellt habe.

Gruß
Ralf

von Fabian O. (xfr)


Lesenswert?

F_CPU ist die Taktfrequenz, mit der der Mikrocontroller läuft. Die musst 
Du bei den Compiler-Parametern mit übergeben. Falls er mit 8 MHz läuft 
also:
1
-DF_CPU=8000000

von Ralf J. (cosmicos)


Lesenswert?

Neue Erkenntnisse.

Ich habe mir nun ein Makefile angepasst, so dass ich auch unter Linux 
ohne AVRStudio kompilieren kann.

Dummerweise sind auch die unter Linux erzeugten .hex-Dateien nicht 
lauffähig. Es kommen wieder nur kryptische Zeichen auf das Display.

Was übersehe ich da nur?

Gruß
Ralf

von Ralf J. (cosmicos)


Lesenswert?

Fabian O. schrieb:

> F_CPU ist die Taktfrequenz, mit der der Mikrocontroller läuft. Die musst
> Du bei den Compiler-Parametern mit übergeben. Falls er mit 8 MHz läuft
> also:

Ahhhh... ok. Das kann man vermutlich im Makefile eintragen. Mache ich 
mal eben...

von Ralf J. (cosmicos)


Lesenswert?

SUPER!!! Das war es!!

Ich habe in dem Makefile, dass ich hier bei euch runtergeladen habe, 
folgendes eingetragen:

F_CPU = 16000000

[...]

CFLAGS += -DF_CPU=$(F_CPU)

Damit funktioniert es perfekt!

Jetzt kann ich endlich unter Linux loslegen. Danke nochmals!!!

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.