Wie finde ich das Tastverhältnis einer PWM mithilfe der Eingangserfassung?

Ich habe einen Controller PIC18F und er unterstützt Peripheriegeräte zur Eingabeerfassung. Ich verstehe, dass es verwendet werden kann, um die Frequenz des eingehenden Signals zu finden. Wie kann das Tastverhältnis von PWM aus den folgenden Angaben im Datenblatt ermittelt werden ? Gibt es dafür eine Möglichkeit?

> bit 3-0 
 CCPxM<3:0>: CCPx Module Mode Select bits 0000 =
> Capture/Compare/PWM disabled (resets CCPx module) 0001 = Reserved 0010
> = Compare mode, toggle output on match (CCPxIF bit is set) 0011 = Reserved 0100 =    
  Capture mode:
  every falling edge 0101 = 
  Capture mode:
> every rising edge 0110 = 
  Capture mode: every 4th rising edge 0111 =
> Capture mode: every 16th rising edge 1000 = Compare mode: initialize
> CCPx pin low; on compare match, force CCPx pin high (CCPxIF bit is
> set) 1001 = Compare mode: initialize CCPx pin high; on compare match,
> force CCPx pin low (CCPxIF bit is set) 1010 = Compare mode: generate
> software interrupt on compare match (CCPxIF bit is set, CCPx pin
> reflects I/O state) 1011 = Compare mode: Special Event Trigger; reset
> timer on CCPx match (CCPxIF bit is set) 11xx = PWM mode
> 

Datenblatt Seite 257. PIC18F46J53.

Gibt es eine Möglichkeit, das Tastverhältnis zu berechnen? Ich vertraue darauf, dass nur diese Frequenz erhalten werden kann.

Antworten (2)

Mein Verständnis ist, dass ein CCP-Modul entweder eine steigende oder eine fallende Flanke erfassen kann, aber nicht beides.

Um das Tastverhältnis zu erhalten, müssen Sie sowohl die ansteigenden als auch die abfallenden Flanken erfassen, um dann die Zeiten beider zu vergleichen und das Verhältnis zu ermitteln. Das geht nicht mit nur einem Modul.

Nichts hindert Sie jedoch daran, das Signal an zwei separate CCP-Module zu senden, von denen eines für die steigende Flanke und das andere für die fallende Flanke konfiguriert ist, und die beiden zur Berechnung der Differenz zwischen steigender und fallender Flanke zu verwenden.

Sie würden im Grunde zwei Perioden haben, die beide gleich sein sollten, aber eine Phasendifferenz zwischen ihnen, und diese Phasendifferenz würde dem Arbeitszyklus entsprechen.

That can't be done with just one module.Es kann tatsächlich getan werden. Ich habe es kürzlich mit einem PIC18 gemacht. Sie müssen das CCP-Modul auf eine steigende Flanke einstellen, auf den Interrupt warten und den Modus auf eine fallende Flanke ändern und so weiter.
@Majenko Vielen Dank. Ich habe einen ähnlichen Artikel in der Anwendungsnotiz des DSPIC CCP-Moduls zum Tastverhältnismodus (Edge Detection Mode) gefunden.
@m.Alin vielen Dank. Ich werde Ihre Methode ausprobieren.

Um Ihre Frage zu anderen Methoden zu beantworten, einige PICS haben ein sehr praktisches Timer-Gate, das unabhängig vom CCP-Modul agiert. Wenn Sie eines davon verwenden können, ist es für diese Berechnung SEHR praktisch. Zählen Sie, während das Signal hoch ist, indem Sie das Gate verwenden, und erhalten Sie Ihre Periode mit dem CCP.

Eine schnelle Suche zeigt, dass PIC18(L)F2X/4XK22 (Link zum PDF-Datenblatt) diese Funktion zu haben scheint (siehe Abschnitt 12)