Forum: Mikrocontroller und Digitale Elektronik Register werden langsam knapp...


von AVRli (Gast)


Lesenswert?

Hi,

wer meine Fragen hier verfolgt hat wirds gemerkt haben. ;-)

So langsam wächst mein Projekt und das Resultat ist das nun die
Register nicht mehr ausreichen. ;-(

Wie organisiert man denn größere Programm "richtig" oder besser
gefragt wie macht das einer der sich damit auskennt.

Ich lege alles in Register ab.
Nur wenn ich nun daran denke das man ja mit, Subroutinen Daten
austauschen will und sich auch ein paar Zustände merken will
(Hauptprogramm, Interrupt, Statusregister), wird es eng und es
überlappen sich doch dann Register.

Ok SRAM da kann man was ablegen das habe ich auch schon gemacht.
Es ist bestimmt ein Teil der Lösung.

Nur wie teilt man sich die Register richtig auf/ein?

Was würdet ihr empfehlen wie man vorgehen sollte?
Da ich noch nicht lange in Assembler schreibe
möchte ich mir keinen "falsche style" angewöhnen.

Alles wieder in Assembler... und ATMEGA8.

Gruß AVRli

von Martin Götzenberger (Gast)


Lesenswert?

Hallo!

ich mach's mir da einfach:

Ein paar Daten brauche ich immer in schnellen Interruptroutinen. Die
bleiben im Register. Alles was im Hauptprogramm läuft wird ins SRAM
ausgelagert. Bei langsameren Interruptroutinen entscheidet dann der
Restbestand an Registern, ob die Daten ausgelagert werden.

(alles in Assembler... und Haupsache AVR)

servus,
Martin

von Peter D. (peda)


Lesenswert?

- Register nur für lokale Variablen und Parameterübergabe verwenden.

- Extra Register für Interrupts reservieren, damit man sich unnötiges
PUSH/POP spart.

- Globale Variablen grundsätzlich im SRAM anlegen.

- Sind zum Schluß noch Register übrig, können besonders häufig benutzte
globale Variablen doch in Register gelegt werden.
Ist aber nur Codeoptimierung, d.h. wenn der Flash knapp wird.


Schau Dir mal meine Beispiele in der Codesammlung an.
Da werden zwar keine Variablen im SRAM abgelegt (da Tiny12), aber viele
Register werden local, d.h. mehrfach verwendet.


Peter

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.