Hallo,

Ik zou graag van een digitaal (0-5V) signaal de frequentie meten met een PIC.

Welke PIC neem je hiervoor het beste? Ik heb een klein beetje ervaring met PicBasic en hierbij werd de 16F628A voor gebruikt. (Gaat het met deze?)

En hoe zou je dit het beste doen?

mvg Nick

Volgens mij moet dit wel kunnen.
Want je zet je frequentie op een pootje van je PIC en onderwijl laat je een programma draaien die (sneller is dan je snelste frequentie) met een vaste periode samples neemt.
Aan de hand van deze waardes kan je de frequentie berekenen.

Was maar even een ingeving hoor.. dus ik weet niet exact hoe of wat. Ik ga even proberen.

Het makkelijkste gaat het met de CCP (Capture-compare) module die in de meeste(?) PIC's zit.
Hoe je die moet configureren wordt uitgelegd in de bijbehorende datasheet die je van microchip.com kunt downloaden.
Hoe dat in basic moet weet ik niet, in asm is 't goed te doen.

[Bericht gewijzigd door Zonnepaneeltje op ]

in Basic KAN het bijna het zelfde gaan als in ASM, gewoon registers volstampen en misschien nog een interrupt instellen? Veel meer kan het nooit zijn.
De PIC16F88 heeft in ieder geval een CCP module aan boord.

Deze gebruiken, werkt met een 16F628: http://www.piclist.com/techref/piclist/weedfreq.htm.
De voorversterker in het schema haal je eruit als je een 5V signaal hebt. Het werkt tot 50 MHz. CCP en dat soort fratsen zijn niet nodig, gewoon TMR1 gebruiken om de pulsjes te tellen.

freq van je PIC moet hoger zijn dan je max te meten freq.
interrupt laten komen op het moment dat je waarde door 0 gaat of door een topwaarde met een topdetector.
we hebben het wel es gedaan in asm maar weet alleen niet meer presies hoe...
interrupt, timer van 1 ms, en dan teller per seconde geloof ik...

Op 2 november 2006 18:53:14 schreef MAH:
freq van je PIC moet hoger zijn dan je max te meten freq.

Oh ja, wat krijg ik van je als ik met een 32 KHz PIC een 50 MHz signaal kan meten? ;-)

een onnoukeurige meting...

Op 2 november 2006 20:02:02 schreef MAH:
een onnoukeurige meting...

Je kennis van microcontrollers is zeker net zo groot als die van de Nederlandse taal ? |:(

Dank u. Ik ben nog bezig met leren.
Maar aangezien we hier dus niet allemaal dermate kennis hebben zoals jojo en JoWi zullen zij vast wel een tipje van de digitale sluier omhoog willen houden.

Waarom kan je met een PIC frequenties meten die boven de CPU klok uitgaan?
In tegenstelling tot bij een AVR heeft de PIC timer/counter een asynchrone prescaler op de counter input. De beperking van het samplen van die input door de CPU heb je dus niet.
Nu gaat 50MHz niet met een 32kHz kristal omdat het maximale deeltal van de prescaler 1:256 is. Maar 1MHz gaat dus wel met een CPU die op 32kHz draait.
Zonder in het datasheet te kijken is de truuk iets van 128 * de kristalfreq / 4 met een maximum van 50 MHz.

Ik geef toe, je zult met 32KHz in je "gate tijd loop" ook timer0 overflows moeten tellen. Maar die puzzel lijkt me wel te doen. De nauwkeurigheid zal af gaan hangen van de faseruis van de 32KHz oscillator. Bij een 4MHz kristal zal dat probleem niet zo spelen.
@MAH je had die link van Jowi al bekeken voor je uitspraak?

jojo, ik had er even vlug naar gekeken en dacht toen dat het een pure bouwbeschrijving was.

Ik had inderdaad wel bedacht dat het met een frequentiedeler zou moeten kunnen maar ik wist niet dat zo'n ding standaard in een PIC was geinergreerd.

Ja goed he? Ik ben eigenlijk niet zo gecharmeerd van de PIC in het algemeen. Maar al die hardware (b.v. AD converters, PWM, EEPROM) voor die prijs hebben me er toch toe uitgenodigd er mee aan de slag te gaan.