Forum: Mikrocontroller und Digitale Elektronik STM8 external interrupt auswertung


von SCHWB (Gast)


Lesenswert?

Hallo zusammen,

Ich möchte mit meinem STM8 drei PWM-Signale mit Hilfe von externen 
Interrupts und Timer 4 auswerten. (Ich weiß es gibt einen PWMI auf TIM1, 
aber dieser wird anderweitig benötigt).
Die Auswertung des PWM-Signals eines Pins funktioniert so weit so gut. 
Da die PWM-Input Pins auf einem Port liegen kann es leider dazu kommen, 
dass ein Interrupt von einem anderen Pin kommt und dieser somit die 
Werte verfälscht.
Meine Idee dazu wäre gewesen, dass ich jeweils nur den Pin, der 
ausgewertet werden soll "interruptfähig" mache und so zyklisch die 3 
PWM-Signale auslesen.
Nun meine Frage, funktioniert das so? Darf ich die Pin-Konfiguartion 
einfach zyklisch mitten im Programm ändern, ohne etwas zu beachten? 
Sollte ich ein asm(rim) -> asm(sim) um diese "neukonfiguration" packen?
Ich bin natürlich auch gerne offen für andere Lösungsvorschläge!

Viele Grüße

von georg (Gast)


Lesenswert?

SCHWB schrieb:
> dass ein Interrupt von einem anderen Pin kommt und dieser somit die
> Werte verfälscht.

Aber sowas lässt sich doch lösen: eine gemeinsame Interupt Service 
Routine stellt als erstes fest was genau den IRQ ausgelöst hat und 
verzweigt dann in die spezielle Routine, die Verzögerung beträgt ja nur 
Mikrosekunden. Natürlich müssen die alle minimal sein damit nicht das 
System mit IRQs überladen wird.

Georg

von SCHWB (Gast)


Lesenswert?

georg schrieb:
> Aber sowas lässt sich doch lösen: eine gemeinsame Interupt Service
> Routine stellt als erstes fest was genau den IRQ ausgelöst hat und
> verzweigt dann in die spezielle Routine

Die ISR wird ja trotzdem ausgelöst und ich müsste ständig schauen, ob 
sich bei dem PWM-Signal, das ich auswerten will gerade ein 
Flankenwechsel stattgefunden hat mit einer if-Abfrage in diesem Stile 
denke ich mal: {if(stateNew != stateOld)}.
Wäre da nicht eine Änderung der Interruptfähigkeit, falls sie so 
funktioniert, wie oben beschrieben, viel effizienter?

von georg (Gast)


Lesenswert?

SCHWB schrieb:
> dass ich jeweils nur den Pin, der
> ausgewertet werden soll "interruptfähig" mache und so zyklisch die 3
> PWM-Signale auslesen.

SCHWB schrieb:
> falls sie so
> funktioniert, wie oben beschrieben, viel effizienter?

Dann kannst du doch gleich die IO-Pins pollen.

Ob das überhaupt so problemlos geht müsste man im Hardware und 
Softwaremanual des Controllers prüfen, das wäre mir aber viel zu 
unübersichtlich.

Georg

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.