Forum: Compiler & IDEs interrupts in interrupts


von Eugen Dischke (Gast)


Lesenswert?

hallo an alle,
ja also ich frage mich die lezte zeit ob das was ich mir denke so
zulässig ist. ich programmiere ja immernoch an meiner lasershow, da ich
ja noch recht neu bin, dauert das schon ne halbe ewichkeit da ich
während ich das so langsam progge halt alles noch lernen muss. der
derzeitige entwiklungsstand ist das ich mittlerweile asynchron ne ps2
maus auslese und halt zugleich über nen timerinterrupt halt die
positionsdaten für den laser ausgebe. um die maus auszulesen, leg ich
die clockleitung der maus auf den externen interruptpin,  und wenn also
der controller aber grade im timerinterrupt iss, wollt ich wissen, ob
dieser sich nochmal unterbrechen liese um halt die maus auszulesen. zur
zeit führt der mc den timer interrupt noch zu ende, ehe er den externen
bearbeitet ( bzw umgekehrt) aber rein von der möglichkeit, iss es als
zulässig in einem interrupt die interrupt freigabe wieder zu
aktivieren, sich also quasi 2 interrupt prioritäten zu simlulieren.
mfg
eugen dischke

von Stefan (Gast)


Lesenswert?

Prinzipiell möglich.
Allerdings solltest Du beachten, dass der Interrupt, in dem Du Dich
gerade befindest, gesperrt wird, bevor Du alle anderen freigibst, sonst
wird der nämlich nochmal aufgerufen, wenn DU zu langsam (oder der Timer
zu schnell) bist.
Beim Stack musst Du einkalkulieren, dass 2 mal die Stackregister
gerettet werden (können) und entsprechend mehr Platz sein muss.

Viel Spass,

Stefan

von eugen dischke (Gast)


Lesenswert?

iss bei der standert konfiguration des rams nicht der stack groß genug?
bzw was meinst du damit das der interrupt gesperrt ist,
etwa das er nochmal aufgerufen wird sobalt ich den 2 interrupt
verlasse? ich benutze den M16 mit 16 Mhz

von Joerg Wunsch (Gast)


Lesenswert?

> ich benutze den M16 mit 16 Mhz

Dann solltest Du im AVR/MSP430 GCC Forum aber nicht unbedingt die
kompeteten Ansprechpartner erwarten...

von Stefan (Gast)


Lesenswert?

Meinst Du den M16C von Mitsubishi?

Mit dem hast DU es doch noch viel einfacher, weil der
Interrupt-Prioritäten hat. Einfach die IR-Prio des Interrupts
hochsetzen, der den anderen unterbrechen dürfen soll. Schau Dir dazu
mal das Kapitel Interrupts im Manual an.

Ob der Stack groß genug ist, kommt immer darauf an, was man macht ...
wollte Dich nur daran erinnern, dass sich beim Stack auch noch eine
Änderung ergibt, wenn Du die IRs schachtelst.
Und StandarT ist nur der nackte Chip, alles andere ist
Programmiererlaune ;-)

Stefan

von Eugen Dischke (Gast)


Lesenswert?

hey nee ich meine den Mega 16 , da hab ich wohl mich etwas falsch
ausgedrückt, sorry *g

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.