Speicherauslastung durch Interrupts

Gast #2283687
Lesenswert?

Hallo,
habe mal eine Frage zu den Interrupts von Timern.
Wenn man die Interrupt-Routine verwendet, wird dafür anscheinend viel 
Speicher benötigt. Ich verwende MPLAB und beim Kompilieren werden bei 
meinem PIC mit der Interrupt-Routine 46% des ROM benötigt, ohne 
Interrupt-Routine nur 8%.
Auszug aus dem Compiler:
1
Memory usage:   ROM=46%      RAM=39% - 67%

Ich weiß zum einen noch nicht genau, was der Compiler mit ROM (Read-only 
memory) meint. Geht es um den EEPROM?
Gibt es eine Möglichkeit, den für Interrupts benötigten Speicher zu 
reduzieren?

MFG
#2283708
Lesenswert?

Obacht, MPLAB steht für PICs, und die sind bisschen besonders. AVR 
Kenntnisse helfen da nur begrenzt. Einerseits weil sie oft einen 
Hardware-Stack für Returnadressen haben. Andererseits weil sie je nach 
Familie und Compiler und Compilereinstellung ihre lokalen Daten nicht 
auf den Stack legen, sondern statisch. Führt insgesamt zu zwei Stacks, 
einer für die Returnadressen und einer für Daten ja nach Einstellung und 
Attribut "reentrant".
Gast #2283971
Lesenswert?

Du hast Recht: In meiner Interrupt-Routine befindet sich der Code:
1
Interrupts=Interrupts+1;
(Ich schreibe in C)
Damit soll der Overflow des Timers gezählt werden. Und genau diese Zeile 
führt zu der hohen Speicherauslastung.
Der Code
1
Interrupts=1;
würde wesentlich weniger Speicher verbrauchen, allerdings würde das 
natürlich nicht dem Zweck entsprechen.
Hmm, kann man das irgendwie "günstiger" programmieren?

MFG

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren