Pulse zählen

Gast #4668079
Lesenswert?

Hallo Leute,
ich versuche aktuell mit einem STM32F29ZI... Pulse zu zählen. Ich möchte 
nicht messen wie lang dieser ist, sondern nach jeder steigenden Flanke 
einen Counter inkrementieren.
Es sollte möglichst ohne Interrupts ablaufen.
Nun habe ich mich in dem Datenblatt bereits informiert. Dort finde ich 
den Punkt mit der External Clock (ETR - PIN) ziemlich interessant. 
Allerdings würde ich gerne 4 Pulse "parallel" erfassen und unabhängig 4 
COunter pro pos. Flanke inkrementieren. Mit dem ETR-PIN würde ich ganze 
4 Timer dafür brauchen. Gibt es eine weitere Möglichkeit mehrere Channel 
eines TImers für diese Aufgabe in betracht zu ziehen?

Ich Danke euch!
#4668151
Lesenswert?

Wenn du nicht pollen willst UND deine Pulse kurz sind, kommst du um eine 
Interruptgeschichte wohl nicht herum.
Eine Möglichkeit wäre noch, dass du die Pulse per Monoflop verlängerst, 
aber da musst du mal genau nachrechnen, ob du das in der Haubtschleife 
noch mitbekommen kannst.

Gruß

Uwe
Gast #4668161
Lesenswert?

Ich habe ein ähnliches Problem. Dabei habe ich mich für Interrupts 
entschieden. Die Interrupt-Funktion ist ja sehr kurz (Hochzählen einer 
Speicherzelle). Das braucht in der Summe weniger Rechenzeit, als wenn 
ich die ganze Zeit irgendetwas polle...
Gast #4668311
Lesenswert?

Dietrich L. schrieb:
> Da müsste man mal rechnen, wie
> oft der Interrupt kommen muss und welche µC-Last das bewirkt.

Na ja, laß die Interruptroutine 100 ns dauern. Dann wird der µC bei 600 
Impulsen/s mit rund 60 ppm belastet. Da bleibt dann nicht mehr viel Zeit 
für andere Sachen. Man müßte mal probieren, ob das mit vier Kanälen auch 
noch funktioniert.

Wo war noch mal das Problem?
Gast #4668331
Lesenswert?

Das Problem scheint darin zu liegen, dass der TO befürchtet, dass der 
Chip sich schneller abnutzt, wenn er die komfortablen Hardwarefeatures 
desselben nutzt...


Up to 17 timers: up to twelve 16-bit and two 32-bit timers up to 180 
MHz, each with up to 4 IC/OC/PWM or pulse counter and quadrature 
(incremental) encoder input
Gast #4668346
Lesenswert?

m.n. schrieb:
> Dietrich L. schrieb:
> Da müsste man mal rechnen, wie
> oft der Interrupt kommen muss und welche µC-Last das bewirkt.
>
> Na ja, laß die Interruptroutine 100 ns dauern. Dann wird der µC bei 600
> Impulsen/s mit rund 60 ppm belastet. Da bleibt dann nicht mehr viel Zeit
> für andere Sachen. Man müßte mal probieren, ob das mit vier Kanälen auch
> noch funktioniert.
>
> Wo war noch mal das Problem?

Genau das habe ich mir auch überlegt. Bei 4 Interrupts, die aller 600hz 
kommen ist die Belastung nicht ohne!
Ich verweigere den Einsatz von den Timern ja nicht... Ich wollte bloß 
nach einer effizienteren Lösung suchen, mehrere Kanäle eines Timers für 
diese Anwendung zu nutzen.
Abschließend ist also zu sagen, dass wohl 4 Timer mit jeweils externen 
clockmode am sinnvollsten für einen unterbrechungsfreien Ablauf des 
Hauptprogramms ist.

Ich danke euch
Gast #4668368
Lesenswert?

Ein Hardwarezähler im µC braucht zum inkrementieren des Zählstandes 
keinen Interrupt. Auch das Vergleichen mit einem Sollwert benötigt 
keinen Int. Das geschieht über die Compareregister, welche nur beim 
Match einen Int generieren, falls gewünscht. Ansonsten kann das 
Match-Flag auch gepollt werden, da es i.d.R. nur mit einem Bruchteil der 
Zählfrequenz getriggert wird.
Gast #4668397
Lesenswert?

>Genau das habe ich mir auch überlegt. Bei 4 Interrupts, die aller 600hz
>kommen ist die Belastung nicht ohne!

@Felix: Du hast die Ironie im vorigen Beitrag nicht verstanden. 60 ppm.
Schmeiß mal google an. Der Zeitverbrauch ist ein Witz. Minimal. Ohne 
Interrupt mit Zählern noch weniger.
Gast #4668402
Lesenswert?

Thomas E. schrieb:
> Vielleicht ist im Hauptprogramm mit Hilfe von Delay-Schleifen eine Uhr
> Programmiert, und die geht ja dann durch die ISR-Zeiten später nach...

Dafür gibt es ja DMA!

Felix K schrieb:
> Genau das habe ich mir auch überlegt. Bei 4 Interrupts, die aller 600hz
> kommen ist die Belastung nicht ohne!

Du hast wohl keinen Sinn für Ironie. Laß mich Deine Aussage korrigieren:
Bei 4 Interrupts, die mit 600 Hz kommen, ist der µC ohne Belastung.
Im Gegenteil: der ..429 langweilt sich ohne Ende - egal wie ungeschickt 
man es auch anstellt (mache würden auch dämlich schreiben ;-)
Gast #4668581
Lesenswert?

In meiner Jugend habe ich auch nicht gerne mit Interrupts programmiert. 
Das ist wie eine Blockade, die man erst einmal überwinden muss.
So wie der erste Sprung vom Dreier, oder das erste Ansprechen einer 
weiblichen Person.

Wir sollten dem TO gut zureden, und vielleicht mal ein Auge auf seinen 
Interrupt Code werfen, damit er die Scheu verliert.

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