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