Hallo, kann mir vielleicht jemand sagen, was ich sofwaremäßig habe, wenn ich mit einem capture-eingang arbeite?? ich will eine Drehzahl einlesen, weiß aber nicht, was mir ich für werte habe, wenn ich die capturevariable weitergebe. ich arbeite immer noch mit dem picdem mechatroniks demoboard mit einem PIC16F917 (Beitrag "PICDEM Mechatronics Board mit PIC 16F917") generiert mir der PIC direkt eine Drehzahl, eine Zeit oder was macht der?? mit dem datenblatt komme ich da irgendwie nicht weiter. Gruß, Andreas.
Gegenfrage: Was macht den der Capture Eingang an deinem Board? Wenn das mehr oder weniger dasselbe macht wie auf einem AVR, dann macht es doch dieses: Ein Timer zählt frisch, fröhlich vor sich hin. Tritt ein Ereignis am Capture Eingang auf, dann wird der Zählerstand des Timers zur gefälligen Betrachtung durch das Programm gesichert. Nehemn wir mal an, der Timer beginnt bei 0 und zählt so vor sich hin. Kommt das Ereignis früher, dann kann er logischerweise nicht so weit zählen, als wie wenn das Ereignis später auftritt. Der Zählerstand ist also ein Mass dafür, wieviel Zeit vom Beginn der Zählerei (bzw. vom Auftreten des letzten Capture Ereignisses) bis zum Auftreten des Capture Ereignisses vergangen ist. Du weist ja wie schnell der Timer zählt. Aus dem Zähler- stand kann daher direkt die Zeit errechnet werden. Daraus kannst du dann zb. eine Frequenz erechnen. Denn wir wissen ja: F = 1/t (je größer die Zeit, desto kleiner die Frequenz und umgekehrt)
Jo, versteh ich.
Der Capture eingang wir über einen optischen interrupter
(drehzahlsensor) gepulst. wie krieg aus dem signal jetzt die
entsprechende frequenz??? das ist meine eigentliche frage.
zählt der timer immer von 0 los bis das nächste high signal kommt oder
wie läuft das?
>... ja: F = 1/t ...
ist schon klar.
Es ist völlig egal, bei welchem Zählerstand der Timer anfängt zu zählen. Entscheidend ist die Differenz von zwei Ereignissen. Anhand des Zähltaktes und der Pulse pro Umdrehung Deines Sensors kann man auf die Drehzahl schließen. Vielleicht müßte man noch schauen bei welcher Flanke (steigend,fallend,beide), der Capture-Interrupt ausgelöst wird. Wenn er auf beide Flanken reagiert bekommst Du doppelt so viele Impulse pro Umdrehung.
Wie kriege ich die Differenz denn? Muss ich dann in der capture isr sowas schreiben wie
1 | Differenz=wert-CCP_1 |
2 | |
3 | wert=CCP_1 |
oder ist CCP_1 dann schon der Differenzwert, sprich die Periode bzw. halbperiode??
Andreas H. wrote: > Wie kriege ich die Differenz denn? Durch Subtraktion. Du merkst Dir den aktuellen Zeitstempel und subtrahierst von einer Kopie des aktuellen Zeitstempels den beim letzten mal gemerkten Zeitstempel. > > Muss ich dann in der capture isr sowas schreiben wie Ja aber sicher doch. > >
1 | > Differenz=wert-CCP_1 |
2 | >
|
3 | > wert=CCP_1 |
4 | >
|
> > oder ist CCP_1 dann schon der Differenzwert, sprich die Periode bzw. > halbperiode?? CCP_1 kenne ich nicht, ich bin kein PICler. ...
>>CCP_1 kenne ich nicht, ich bin kein PICler
CCP_1 ist soweit ich das bisher rausgefunden habe der Variablenname der
CCP-isr
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.