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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.