Hallo! Ich nutze einen PIC18F4550 für einen Frequenzzähler. Als Compiler nutze ich den C18. Für eine Periodendauermessung nutze ich das CCP1-Modul zum im Capture Mode mit dem Timer1. Ich möchte mehrer Capture´s erstellen, eine Zeitaufwenfige Routine stellt mir dann den mittelwert auf einem Display dar. Wenn ich das Capture-Modul, oder den zugehörigen Timer1 stoppe, bekomme ich bei erneutem Start immer flasche anfangswerte. Ich dachte nun, ich lasse das CCP immer laufen. Die werte werden gespeichert und über die Differenz der Speicherwerte kann ich die Frequenz berechnen. Aber wenn das Capture-Modul zufällig dort reinschreibt wo ich gerade rechnen möcht hab ich Probleme. Wenn Timer1 nach jedem Capture auf 0h00 zu setze bekomme ich falsche Werte. Wenn ich das CCP stoppe, bekomme ich falsche Werte. Wie würdet ihr das realisieren? Vielleicht ein Ping-Pong Puffer? Oder gibt es da eine einfachere Methode? Gruß Stefan
Stefan schrieb: > Frequenz berechnen. Aber wenn das Capture-Modul zufällig dort > reinschreibt wo ich gerade rechnen möcht hab ich Probleme. Nicht nur Du. Das Problem haben alle, die zum ersten mal mit Interrupts arbeiten. Generell gilt, Variablen, die ein Interrupt benutzt, müssen im Main atomar zugegriffen werden. D.h.: - Interruptsperre, - Interruptvariable in Tempvariable speichern, - Interruptfreigabe Peter
Nur mal so aus Interesse: Welche Frequenzen willst du denn mit dem Capture-Modul messen?
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.