www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM einlesen


Autor: Stefan Hiebl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hubert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: AxelR. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.