Forum: Mikrocontroller und Digitale Elektronik Frage zu CCP


von Holla D. (schlucke)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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)

von Holla D. (schlucke)


Lesenswert?

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.

von Matthias (Gast)


Lesenswert?

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.

von Holla D. (schlucke)


Lesenswert?

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??

von Hannes L. (hannes)


Lesenswert?

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.

...

von Holla D. (schlucke)


Lesenswert?

>>CCP_1 kenne ich nicht, ich bin kein PICler

CCP_1 ist soweit ich das bisher rausgefunden habe der Variablenname der 
CCP-isr

von Brill (Gast)


Lesenswert?

Zu irgend einem Zeitpunkt sollte man das Datenblatt anschauen... genau 
anschauen.

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.