Moin! Ich habe ein kleines Problem. Nachdem ich den Code in den ATmega644P geschrieben habe scheint er ab Adresse 0x0400 zu stehen. Da ich gerade mit dem AVR anfange (viele rieten mir dazu, dies nicht zu tun) und spezielle Anforderungen habe, arbeite ich mit eigenen Umgebungen und muss so den Fehler erst mal bei mir suchen. Bisher bin ich aber nicht fündig geworden. Vielleicht kommt dies ja wem bekannt vor. Derzeit kompiliere ich noch von Hand ... Folgendes Programm läuft - würde es nicht bei 0x0400 starten, würde es nicht laufen, bzw. PortA würde still stehen. Ich habe auch schon mit den Bootsize-Fuses gespielt - keine Änderung. Und bevor jetzt wieder wer mit dem Stack kommt: der wird hier nicht benötigt. Dieses Programm ist nur dazu da, dieses Problem einzukreisen. Dies ist der komplette Code, der ab Adresse 0x0000 geschrieben werden sollte (so kann man es auch aus dem HexFile entnehmen): 0xEF0F // LDI R16, #0xFF 0x8901 // OUT 0x01, R16 // DDRA mit 0xFF laden 0xE000 // LDI R16, #0 0x2E20 // MOV R2, R16 // Reset Zaehler 0xE011 // LDI R17, #1 0x94F8 // CLI // IRQs ausschalten - man weiß ja nie, was passiert // Sprung hier her (=0x0406) // dies ist ein 24-Bit-Zähler, dessen MSB auf PortA ausgegeben wird 0x0E31 // ADD R3, R17 // ++ 0x1E20 // ADC R2, R16 // Nur Übertrag 0x1E10 // ADC R1, R16 // Nur Übertrag 0xB812 // OUT 0x02, R1 // -> PORTA 0x940C // JMP 0x0406 // Sollte eigentlich 0x0006 sein, wenn er bei 0x0000 starten würde 0x0406 Vielleicht hat ja jemand eine Idee, wo ich suchen könnte. Gruß Jobst
>Derzeit kompiliere ich noch von Hand ...
wie geht das denn? Und warum macht man das?
Hi! Ist damit etwas anderes gemeint, als die BOOTSZ0 und BOOTSZ1 ? Wenn ja, wo finde ich Infos dazu? (Im Datanblatt des ATmega164/324/644P jedenfalls nicht) Gruß Jobst @Ich: Ich mache es. Punkt.
Habe den Fehler. Ist ein hausgemachtes Problem gewesen. :-( Man sollte ein Register nicht überschreiben, wenn man den Inhalt noch benötigt ... Ein eigener Controller auf dem Board ist dafür zuständig, den ATmega zu flashen. In der bewährten Routine hat sich bei Adaption auf ATmega ein kleiner Fehler eingeschlichen :-P Da suche ich schon eine Weile und nachdem ich um Hilfe bitte, finde ich den Bug - sowas ... Gruß Jobst
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.