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
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
- 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.