hallo leute, da habe ich eine gewisse zeit darauf verbracht, etwas in Atmel manuell zu programmieren. eigentlich sind es nur ein paar kleine befehle . aufgrund einer funktion meiner programmierung, die nicht erwartet war, bin ich der sache mal auf den grund gegangen und bin derzeit sehr skeptisch über die ursache: das Mysterium tritt auf beim Befehl: LD – Load Indirect from Data Space to Register using Index X und hier ein Beispiel: angenommener memory content: $0100 = 01 $0101 = 02 $0102 = 03 $0103 = 04 testprogramm mit LDI r26,00 'x lowbyte LDI r27,01 'x highbyte LD r24,x+ nach diesem durchlauf würde ich nun erwarten, dass der inhalt von r24 = 01 ist, da der speicher bei $100 gelesen wurde. Das ist auch so... also bin ich damit zufrieden!!! gleichzeitig sollte doch das lowbyte des x registers bereits auf 01 stehen ,da das x-register ja den post-increment durchgeführt hat. ... oder verstehe ich das instruction set falsch? Das ist bei meinem Prozessor leider nicht so. ob nun die daten oder das incremet zuerst kommen (innerhalb des zyklus) kann ich nicht sagen. defakto ist aber die ADRESSE und DATA nach dem befehl immer sychron auf dem gleichen stand. Das datenblatt des M88 verspricht mir aber // selbst nach 10maligen lesen der halben seite // etwas anderes es handelt sich um einen atmega 88. kennt jemand das problem oder habe ich da was falsch verstanden. Gruss klaus
Du denkst richtig. Das von Dir beschriebene Verhalten des Mega88 konnte ich noch nicht erleben. Ich habe den Mega88 allerdings noch nicht simuliert, kann also keinen Fehler des Simulators ausschließen. Ich vermute allerdings ein Missverständnis beim Benutzen und Bedienen der Software. ...
> gleichzeitig sollte doch das lowbyte des x registers > bereits auf 01 stehen ,da das x-register ja den post-increment > durchgeführt hat. So ist es. > ob nun die daten oder das incremet zuerst kommen (innerhalb des zyklus) > kann ich nicht sagen. Es handelt sich um Post-Inkrement, es erfolgt also zunächst der Zugriff und dann das Inkrement. > kennt jemand das problem oder habe ich da was falsch verstanden. Da es unwahrscheinlich ist, dass ausgerechnet dieser Teil des Prozessors kaputt ist und der Rest tut, sitzt das Problem meist in solchen Fällen vor der Tastatur. Bei der Fülle an Bedienbefehlen kann man sich leicht vertun, vor allem am Anfang. Oder man programmiert eine Schleife und springt zum ldi zurück.
NB: Die Befehlssatzbeschreibung findet man bei Atmel nicht im Datasheet, das ist ein eigenes Buch.
Hi >defakto ist aber die ADRESSE und DATA nach dem befehl immer sychron auf >dem gleichen stand. Wie hast du das festgestellt? Programm? MfG Spess
>defakto ist aber die ADRESSE und DATA nach dem befehl immer sychron auf >dem gleichen stand. Muss ja (abgesehen vom Offset 0x100) so sein: >angenommener memory content: >$0100 = 01 >$0101 = 02 >$0102 = 03 >$0103 = 04 > >testprogramm mit >LDI r26,00 'x lowbyte >LDI r27,01 'x highbyte >LD r24,x+ In r24 steht jetzt 0x01 und die Adresse ist nach dem Increment 0x101. Passt also :-o Besser hättest du solche Daten verwendet: $0100 = 00 $0101 = 01 $0102 = 02 $0103 = 03
danke für die antworten. zumindest kann ich jetzt davon ausgehen, dass ich die befehlsbeschreibung korrekt interpretiert habe. ich werde das nun nochmals genauer untersuchen und dann wieder darauf zurückkommen gruss klaus
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.