mikrocontroller.net

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


Autor: AVRli (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: andré (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaub ohne code wird dir keiner helfen koennen.

mfg

Autor: AVRli (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: HanneS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ADIW geht nur für die 4 oberen Registerpaare...

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

Autor: AVRli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

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

MfG AVRli

Autor: Conlost (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: HanneS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Arno,

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

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

Autor: AVRli (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Conlost (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ HanneS,

ja da haste Recht, ich meinte natürlich Stack,
war wohl noch etwas früh am Tage.  :-)

Gruß,
Arno

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.