Hallo. Ich habe bisher den ICCAVR von ImageCraft genutzt. Zwecks Evalution-Version kann dort mein Programm aber nicht größer als 4Kb werden. Ich habe mir deswegen von Atmel das AVR-Studio heruntergeladen und nutze das AVR-GCC-Plugin. Ich hab auch schon mein Projekt zum Compilieren gebracht. Nun wollte ich das Hex-File auf den AVR aufspielen und nix ging. Ich hab dann mal die Hexen mit einander verlgichen (also das vom ICCAVR und GCC) und festgesellt, dass bereits die Interrupt-Vector-Tabelle, die ja am Anfang steht sehr komisch aussieht. Dass die verwendeten Stings jetzt am Ende stehen, ist sicherlich nicht weiter schlimm, aber das die Interrupt-Addressen mit Müll anstatt mit FF gefüllt sind, stört mich schon... muss ich noch irgendwas beachten?? Ich bitte um Hilfe. MFG
Hi, Albi, "dass bereits die Interrupt-Vector-Tabelle, die ja am Anfang steht sehr komisch aussieht. Dass die verwendeten Stings jetzt am Ende stehen, ist sicherlich nicht weiter schlimm, aber das die Interrupt-Addressen mit Müll anstatt mit FF gefüllt sind" Wie ist das zu verstehen? ":100000000C942A000C9445000C94E4000C94B3006A" So müßte der Hex-Code anfangen, und hier enthält er Sprungbefehle mit "0C94..." Poste doch mal, was Du für "Soll" hältst, und was Du als "Ist" gefunden hast. Ciao Wolfgang Horn
Vom GCC (geht nicht): :100000000C9446000C9463000C9463000C94630001 :100010000C9463000C9463000C9463000C946300D4 :100020000C9463000C9463000C9463000C946300C4 :100030000C94A0000C9463000C9463000C94EC00EE :100040000C9463000C9463000C9463000C946300A4 :100050000C9463000C9463000C9463000C94630094 :100060000C9463000C9463000C9463000C94630084 :100070000C9463000C9463000C9403010C946300D3 :100080000C9463000C9463000C94630011241FBE55 :10009000CFEFD0E1DEBFCDBF11E0A0E0B1E0EEE3F5 ...... Vom ICC (geht) :040000000C94BD009F :04002C000C94960298 :040038000C94090318 :040074000C941B03CA :14008C004465616B7469766965727400416B746976696572A5 :1400A000742020004465616B7469766965727420202020207C :1400B40000416B746976696572742020202020202000416EF6 :1400C8002020202020536574202020417573004772656E7AC9 :1400DC00653A202020202020004772656E7A653A202020208C :1400F000202020004772656E7A653A202020202020202020D7 :14010400002D20202020202053657420202020202B00552F7F :1401180073656300552F68202000552F6D696E002020202024 :14012C002020202020202020202020200020204B65696E2058 :140140005369676E616C20202000447265687A61686C3A2061 ......
Also ich habs jetzt wenigstend mal hinbekommen, dass er was macht. Aber bei jedem Interrupt, der auftrittt, springt mein AVR wieder in die Main-Funktion. Was soll das? (Es ist dabei egal, ob der Interrupt mit einer Rotiene abgehandelt wird, ober ob er nicht Programmteschnisch behandelt wird - also irgendwas ist mit der Vector-Tabelle noch faul) MFG
Ok.. wie ein Stückchen selber hinbekommen: ISR(__vector_default) { } führt zumindest dazu, dass der AVR bei einem Interrupt nicht wieder bei Main anfängt. Jedoch werden jetzt alle Interrupts auf diese Rotiene umgeleitet... hat jemand ein Tipp? MFG
Code? Kleiner Tipp: Wenn Du im AVR-Studio unter 'Project | Configuration Options' das Häkchen in das Kästchen 'Genarate List File' machst, erzeugt der Compiler eine .lss-Datei, in der genau drinsteht, welcher Assembler-Code aus welchen C-Anweisungen gemacht wurde. Schau Dir da mal die Vektortabelle an. Weitere Infos gibts nur mit Code...
Der ASM Text sieht OK aus... Code? Viel Code gibts da nicht... ISR(_VECTOR(12)) { ... // Wird eh nie erreicht } ISR(_VECTOR(15)) { ... // Wird eh nie erreicht } ISR(_VECTOR(30)) { ... // Wird eh nie erreicht } ISR(__vector_default) { //Hier kommen alle interrupts an. } Die jeweiligen Interrupts die ich eigentlich anbfangen wollte, werden freigegeben. Die kommen ja auch an - nur in der falschen Prozedur. MFG
ach herjee... kann mir den keiner mal sagen, das _VECTOR(12) der 13. anstatt der 12. Interrupt-Vektor in der Tabelle war!? :-D
Warum kommst du denn auf die Idee, deine Vektoren selbst zu nummerieren?
> ISR(_VECTOR(12))
Schon mal davon gehört, dass es dafür Makros
gibt, die den Interrupt Vektor mit einem sprechenden
Namen (na ja) identifizieren?
Ja, aber ich bin mitdem Compiler und dessen Includes noc nicht so vertraut.... das nummerieren bin ich halt gewoht... naja jetzt geht wieder alles.. zum Glück...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.