Forum: Compiler & IDEs habe Probleme mit WINAVR


von thomas w. (Gast)


Lesenswert?

Hallo,
ich habe mir die neueste WINAVR-Version (vom 23.04.2003)  runtergeladen 
und installiert. Ich möchte mit PN2 C-Programme
erstellen und einen ATmega128 im STK500/501-Board von Atmel 
programmieren. Bloß wie mache ich jetzt weiter ? Ich habe versucht 
Beispielprogramme zu benutzen und ein makefile zu benutzen, kriege es 
aber einfach nicht hin. Was mir fehlt ist ein einfaches funktionierendes 
C-Programm, wie LEDx einschalten oder blinken lassen (das demo.c von 
WINAVR funktioniert z.B. nicht mit ATmega128) ,ein Beispielmakefile und 
eine Anleitung wie ich damit den MC über ISP programmieren kann.
Kann mir da vielleicht jemand weiterhelfen ?

von Joerg Wunsch (Gast)


Lesenswert?

Naja, wenn Du Microcontroller programmieren können willst,
solltest Du IMNSHO eigentlich in der Lage sein, das simple
demo.c der avr-libc auch für einen ATmega128 anzupassen.  Außer
ein paar Namen, die beim m128 anders sind als bei den kleineren
Controllern, ist da wohl nicht viel zu ändern...  Ganz ehrlich,
wenn Du das nichtmal schaffst, wie bekommst Du dann ein eigenes
Projekt auf die Füße?  Hier scheiterst Du ja nicht an WinAVR
oder GCC-Eigenheiten, sondern am simplen Verständnis für die
AVR-Controller selbst.

Außerdem, hast Du denn die Doku zu diesem Beispiel wenigstens
mal gelesen?  Eigentlich ist da alles haarklein auseinandergenommen...

Was Du natürlich unbedingt haben solltest, ist eine ausgedruckte
(liest sich einfacher nach) und eine Online-Version (es sucht
sich einfacher darin und Du hast Querverweise im PDF) des
Atmel-Datenblattes für den ATmega128.  Alle Namen von IO-Registern
in <avr/io.h> sind so, wie sie das Datenblatt beschreibt.

Ein Makefile an sich ist dabei, das führt bis zum iHex File.
avrdude gab's noch nicht, als wir das Demo integriert haben,
sonst wäre wohl auch mein ursprüngliches "make program"
dringeblieben.  Ein allgemeines Beispiel-Makefile mit der
Einbindung von avrdude liegt WinAVR allerdings auch bei, Du
mußt nur noch die Namen Deiner eigenen Quelldatei(en) eintragen.

Caveat emptor: die LDFLAGS in Erics Beispiel binden die
Gleitkommaversion von printf() mit ein, damit ist selbst
das simpelste Progrämmchen einige Kilobyte groß.  Auf einem
m128 stört das zwar nicht weiter, aber Du brauchst es natürlich
auch nicht, als kannst Du vor alle LDFLAGS-Zeilen getrost
ein # schreiben.

von Joerg Wunsch (Gast)


Lesenswert?

p.s.: Beim ATmega128 bitte die LED nicht ohne Vorwiderstand
betreiben.  Dessen Ausgangsstufen sind selbst gegen GND deutlich
stromergiebiger als die all seiner Vorgänger, so daß man sich
(anders als bei jenen) jenseits der zulässigen Grenzdaten
bewegen würde.  Habe ich in der Doku auch nochmal drauf
hingewiesen...

von Thomas W. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
in der Doku ist schon alles genau beschrieben, das Problem was ich habe 
liegt vielmehr darin, dass der Inhalt der files welche man damit erzeugt 
nicht mit dem listing in der Doku übereinstimmt. Ich bin genau nach der 
Anleitung vorgegangen, das mit dem makefile erzeugte demo.hex stimmt 
nicht mit dem in der Doku abgedruckten überein. Ich kann nicht 
ausschließen dass ich was falsch mache, aber ich habe es immerhin 
mehrfach probiert mit dem gleichen Ergebnis.
(die demo.hex die ich erhalte habe ist angehängt)

Da es an dieser Stelle schon Unstimmigkeiten gab und ich gerade erst 
anfange mich in dieses Thema einzuarbeiten habe ich noch gar nicht 
versucht das demo.c auf den ATmega128 passend umzuschreiben.

Gruß Thomas

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.