Hi
ich hab da ein kleines Problem. Ich bin Anfänger was Mikrocontroller
angeht. Habe mir für den Einstieg ICCAVR besorgt (die demoversion), da
das Programm schon diverse initialisierungen des µc vornimmt.
Nun habe ich den Timer1 Programmiert (µc: atmega8535) so dass er alle
3sec nen overflow interrupt hat.
der Compiler spuckt aber nun beim compilieren folgenden Fehler aus:
!W H:\µc\PROJEK~4\timer12.c(82):[warning] source code specifies an
infinite loop
iccavr -o timer12 -g -Wl-W -bfunc_lit:0x4.0x2000 -dram_end:0x25f
-bdata:0x60.0x25f -dhwstk_size:16 -fihx_coff -S2 @timer12.lk
!E timer12.o(99): Code address 0x10 already contains a value
!E timer12.o(99): Code address 0x11 already contains a value
die endlos-schleife is beabsichtigt ... aber ich weiß nicht wie man die
beiden Fehler umgehen soll. Die tauchen ja erst in der objekt datei auf
und sind insofern keine direkten programmierfehler.
Hat evtl irgendjemand mal etwas ähnliches gehabt und weiß woran das
liegen könnte? ich weiß nämlich nicht wie ich das beeinflussen kann
danke schonmal im vorraus
Hast Du dort den richtigen Controller in ICC eingestellt? Notfalls mal
versuchen, das hex-File mittels AVR-Studio oder WinAVR auf den
Controller flashen. (Eventuell auch einmal den Quelltext anhängen)
Gruß müllo
Controller sollte in dem Fall ja erstmal egal sein - da würde er ja erst
beim schreiben meckern
aber beim mega8535 hab ich in der liste halt den 'M8535' gewählt mit
internen 8MHz und die include datei 'iom8535v.h' genommen
stellt er ja automatisch ein ... wenn ich nur die ports initialisiere
kommt der fehler auch nicht. Der kommt nur wenn ich einen der timer
dazu aktiviere (sei es der timer0 oder der 16 bit timer1)
ich schreib in dem original quellcode aus dem application builder auch
nur noch 'void main (){}' um zu obs evtl an meinem quellcode liegt
aber selbst da kommt der Fehler:
!E timer12.o(99): Code address 0x11 already contains a value
Hab ich bei den Einstellungen für den timer was übersehen? Dort stell
ich eigentlich nur ein das der timer 0 aktiviert wird mit einem
prescaler von 1024 und einer Zeit von 100ms (er errechnet mir das ich
den Wert mit nem Fehler von 0,2% erreiche) und natürlich aktiviere ich
noch den overflow interrupt.
Im Quellcode selbst scheint der Fehler ja auch nicht zu liegen da er ja
über die xyz.o datei nörgelt ...
> Nun habe ich den Timer1 Programmiert (µc: atmega8535) so dass er> alle 3sec nen overflow interrupt hat.
Nö! Du hast den application builder benutzt, der dir fertige Routinen
geliefert hat. Nur solltest du die auch mal in main() aufrufen, denn
von alleine wird init_devices() nicht ausgeführt.
Das aber nur am Rande, denn ich denke, dass das nicht der Grund für den
Fehler ist.
der quellcode den ich hier gepostet hab is auch schon lang nich mehr der
erste sondern ein kurz generierter quellcode der den gleichen fehler
ausspuckt ... und ich hätte selbst die main funktion weggelassen würde
der compiler da nicht meckern sigh ich weiß schon wie ich mit c
programmiere, hab schon ein paar kleine progrämmchen programmiert, was
der grund dafür is das ich c als programmiersprache für µc gewählt hab
und nicht assembler - aber das steht hier ja nich zur debatte ...
wollt den ursprung der fehlermeldung wissen und keine konstruktive
kritik hören ...
Entschuldigung, dann mach dein Scheiß doch selbst.
> E timer12.o(99): Code address 0x10 already contains a value
Ist doch wohl eindeutig, oder? Streng halt mal dein "Hirn" an.
danke - das zeigt schonmal das mit meinem compiler nich alles in ordnung
scheint - ich werde den mal kurz deinstallieren und neu drüber bügeln -
vlt hilft es ja was
@Germo
Du hast nicht zufällig einen Crack aus dem Internet installiert, um die
Beschränkungen des Compilers aufzuheben? Herr Milton von Imagecraft hat
mir das nämlich mal erzählt, jedenfalls kommt mir die Fehlermeldung
sehr bekannt vor. Ich kann da heute Nachmittag nochmal fragen.
ne, kein crack
nur die v7 demo mit dem 45 tage limit bzw anschließende beschränkung
auf 4k flash oder so - steht aber auch beim programm oben in der
leiste. erneutes installieren brachte auch keinerlei änderung - der
fehler besteht weiterhin
habe gerade auf 7.03 aktualisiert - funktioniert auch. Mit und ohne
Dongle. Hatte vorher noch die Version 6.0x drauf weil ich seit über
einem Jahr nur den WinAVR nutze.
Es muss also bei Dir liegen...
hmm ... seltsam ...
vlt werd ich auch mal auf einen anderen compiler zurück greifen - die
sind dann leider nicht ganz so komfortabel aber damit sollte es ja auch
gehen.
Ja, aber lass die Finger weg vom GCC. Der ist Kindergarten, der erzeugte
Code ist langsam und groß (trotz Optimierungen). Außerdem ist der
Compiler sehr buggy und wird auch schlecht gepflegt. Zwar kommen immer
wieder neue Versionen raus, aber alte Fehler werden grundsätzlich nicht
behoben. Compiler sollten wirklich nur Profis entwickeln, sowas ist kein
Hobby für zwischendurch.
könnt ihr mir einen tauglichen freeware c-compiler für die avr µc
empfehlen? habe gerade noch die empfehlung für codevision bekommen,
aber das is auch nur eine demo version und natürlich non-commercial
und assembler mag zwar für den eingefleischten µc kenner am besten
geeignet sein aber da ich mehr ahnung von c habe wollte ich da auch
schon bleiben. ist für mich persönlich ein wenig logischer strukturiert
und auch komfortabler als asm
"gut" und "freeware" ist leider ein Widerspruch in sich. Versuche
doch, ICCAVR v6 zu bekommen, dieser Compiler ist sehr gut. Ich habe
schon oft gehört, dass es mit V7 Probleme gibt. Allerdings kannst dich
ja auch mal direkt an Imagecraft wenden. Die reagieren sehr schnell und
hilfsbereit.
Ich hab die V7 Demo Version nun auch mal auf einem anderen Rechner
probiert mit demselben Ergebnis. Auch da trat der Fehler auf. Die V6
Demo konnte ich gar nicht erst starten. Ich hab nun mal eine mail mit
den Fehlerberichten an ImageCraft geschickt. Bin mal gespannt ob die
darauf eine antwort wissen =)
trotzdem danke für eure Hilfe =)