Forum: Mikrocontroller und Digitale Elektronik Speicher voll oder was ist das?


von AVRli (Gast)


Lesenswert?

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

von andré (Gast)


Lesenswert?

Ich glaub ohne code wird dir keiner helfen koennen.

mfg

von AVRli (Gast)


Lesenswert?

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

von HanneS (Gast)


Lesenswert?

ADIW geht nur für die 4 oberen Registerpaare...

Bit- & Bytebruch...
...HanneS...

von AVRli (Gast)


Lesenswert?

Hi!

Vielen Dank für die Antworten.
Hat Reg 24 intern noch eine andere Funktion?

MfG AVRli

von Conlost (Gast)


Lesenswert?

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

von HanneS (Gast)


Lesenswert?

Hallo Arno,

kann es sein, dass du den Stack meinst? ;-))

Bit- & Bytebruch...
...HanneS...

von AVRli (Gast)


Lesenswert?

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

von Conlost (Gast)


Lesenswert?

@ 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
Noch kein Account? Hier anmelden.