Hi! Ich benutze für mein Projekt einen AT90S2313. Programmiert wird mit AVRstudio (Assembler). Nun ist der Quellcode immer mehr geworden und auch die Register sind fast ausgeschöpft. Ich benutze den SRAM zur Ablage von empfangenen Daten. Also maximal 100 Byte von diesem! Sichergestellt wird dies mit einem Rigbuffer. Nun habe ich folgendes beoabchtet. Ist der Code im Ergebniss < 882 Worte läuft mein Prg. wie es soll erst men die Worteanzahl >= 882 ist dann hängt sich der controller in einer Schleife auf in der nur nach "unten" gezählt wird. Doppelte Verwendung von dem gleichem Register kann man ausschließen. Es ist egal welche Zeilen ich ausklammere, ob im Hauptprogramm oder im Interrupt... Fakt ist bin ich unter 882 gehts... ;-( Was soll das denn sein? Oder ist der Chip voll? MfG AVRli
Hi... ja ich befürchte auch... :-( Nun habe ich ebend gesehen was da noch ist... Er bleibt ja hängen in der folgenden Schleife. .def DIMMER = r24 ldi DIMMER,0 FLASH_INITIAL_DIMMER_OFF: adiw DIMMER,10 ldi wrH,SEC50 rcall LOAD_AND_WAIT_FOR_TIMER cpi DIMMER,250 brne FLASH_INITIAL_DIMMER_OFF ich habe nun versucht das DIMMER Reg auf einen anderes Register zu legen (23 z.B.) das schlägt fehl da meckert er in der Zeile "adiw DIMMER,10" Aja... ;-) Nun ist wohl doch was "Hausgemachtes"... verwende ich "Inc DIMMER" gehts wieder... was habe ich falsch gemacht oder übersehen? Ich wollte eigendlich in 10er Schritten hochzählen... MfG AVRli
ADIW geht nur für die 4 oberen Registerpaare... Bit- & Bytebruch... ...HanneS...
Hi! Vielen Dank für die Antworten. Hat Reg 24 intern noch eine andere Funktion? MfG AVRli
Hallo, Reg 24 bildet mit Reg 25 ein 16bit Register. Zu Deinem anderen Problem, kann es sein daß das Statusregister überläuft? Bei so wenig SRam und 100 Byte Daten wäre das eine Möglichkeit. Oder du hast irgendwo ein "ret" oder "reti" vergessen. Gruß, Arno
Hallo Arno, kann es sein, dass du den Stack meinst? ;-)) Bit- & Bytebruch... ...HanneS...
Hi Arno! ;-) Ich habe einfach das adwi nicht mehr verwendet... Dann klappt alles... also Reg24 wird nun nicht mehr mit ADIW geändert... Das es 4 Doppelregister gibt war mir neu. Ich dachte es gäbe nur X,Y und Z... also R26+R27, R28+R29 und R30+R31... Ok Leut's ich danke für die Infos! ;-D MfG AVRli
@ HanneS, ja da haste Recht, ich meinte natürlich Stack, war wohl noch etwas früh am Tage. :-) Gruß, Arno
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.