Forum: Mikrocontroller und Digitale Elektronik PWM einlesen


von Stefan Hiebl (Gast)


Lesenswert?

Hi,

muss die Temperatur über einen Sensor der mir ein PWM Signal gibt
verarbeiten. Hab das einlesen einer PWM noch nie gemacht.

Ich hab mir überlegt das ich das über einen Interrupt der bei
steigender Flanke auslöst und dann mit X=X+1 zählz mache. Dann müsste
ja das X der Pulseite entsprechen.
Programm sieht folgendermasen aus:

int X=0;


void TAST (void) interrupt 0  /*Interruptroutine*/
{
X = X +1;
printf("Zahl = %d \n",Zahl);
}

Hab aber das Problem das ich das PWM Signal anscheinend zu schnell ist
und deswegen zählt der µC immer weiter und hört nicht auf.

Wie macht man das normalerweise mit dem einlesen einer PWM?

DANKE schon mal im Vorhinein.

LG Stefan

von Hubert (Gast)


Lesenswert?

Woher weist du wann der Impuls wieder die fallende Flanke hat?
Steigende Flanke erkennen, Zeit zählen, auf fallende Flanke erkennen
umstellen, wenn erkannt dann Zeit ende. Dann hast du die Impulsbreite.

von AxelR. (Gast)


Lesenswert?

Sieh mal bei den Modellbauern nach, die müssen das auch machen.
Kann man beispielsweise so machen:
Interrupt0 auf beide Flanken stellen.(geht z.B. beim Mega8)
In der Interuptroutine pin auf high testen, war steigende flanke.
Variable "X" auf null setzen.
ist der Portpin LOW, war es eine fallende Flanke, Variable "X"
auslesen und anzeigen.
Die Variable "X" wird im Timerinterrupt unabhängig vom Int0 langhin
hochgezählt. Die Genauigkeit/Auflösung hängt von der
Zählgeschwindigkeit des Timers ab.
AxelR.

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.