Forum: Mikrocontroller und Digitale Elektronik Einlesen von frequenz über CCP Eingänge


von gast (Gast)


Lesenswert?

Hallo an alle PWM Profis,

Ich versuche gerade ein Programm zu schreiben. Das Programm sollte die 
Frequenz der Frequenzgenerator über die CCP Eingänge einlesen. Ich weiss 
leider nicht, wie ich anfangen sollen.

Die letzten Tage habe ich mich mit der Einstellung in Compiler 
beschäftigt.


Um den PWM-Mode zu aktivieren habe ich folgendes gemacht:
Die Periode der Rechteckschwingung eingestellt.
Das pulsverhältnis (duty-cycle) eingestellt.
Das CCP Pin zum Ausgang gemacht.
Den PWM-Mode aktiviert

war es richtig was ich gemacht habe?

von Gerd B. (silicat) Benutzerseite


Lesenswert?

Bei fast allen Controllern kann man den Pin entweder als

CCP Eingang ODER als
PWM Ausgang konfigurieren

Wie ich das lese, hast Du bisher den als PWM Ausgang konfiguriert.
Du must jetzt also dein µC auf CCP Einlesen konfigurieren.
Bei jeder steigenden oder fallenden Flanke muss dann ein Interrupt 
ausgelöst werden. Dann muss eine Funktion aufgerufen werden, die die 
aktuelle Zeit speichert die Differenz zur letzten Flanke berechnet.

Hier ein Beispiel, wie ich es mal bei einem HC08 gemacht habe:
1
@interrupt void Isr_Tim1Ch0(void)
2
{
3
volatile char dummybyte;
4
typ_word captured; 
5
6
  /* Interrupt Flag loeschen*/
7
8
  dummybyte=t1sc0.byte;
9
  t1sc0.bit.ch0f=0;
10
11
12
  captured.byte.high=t1ch0h.byte; /* erst MSB */
13
  captured.byte.low =t1ch0l.byte; /* dann LSB lesen       */
14
15
16
 /* Flanke */
17
18
  // Berechnung Periodendauer
19
  pwmin_periode0=captured.word-starttime_periode0;
20
    
21
  /* Timer Wert sichern */
22
  starttime_periode0=captured.word;

Gruß, siliCAT

von gast (Gast)


Lesenswert?

Danke siliCAT,

Leider hat mir das Beispiel nicht zu viel geholfen!

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.