1Hz Med PIC 16F628 ?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Crille
Inlägg: 63
Blev medlem: 1 juli 2003, 11:56:21

1Hz Med PIC 16F628 ?

Inlägg av Crille »

Hur gör jag för att få en av portarna på min 16F628 att klocka i exakt 1Hz, ska nämligen ha det till en klocka.
Användarvisningsbild
Jine
Inlägg: 1795
Blev medlem: 21 juli 2004, 20:25:56
Skype: Jim.Nelin
Ort: Trångsund, Stockholm
Kontakt:

Inlägg av Jine »

Vad jag et du brukar man änvända nån speciel klockkristall som ligger på typ 32...khz

Men en hz = en svängning per sekund.. Så borde det inte gå att sätta den låg 500ms o hög 500ms? o sen får man kolla i databladet hur många mircosekunder man kan ta bort i fördröjningen
Användarvisningsbild
babbage
Inlägg: 655
Blev medlem: 10 november 2004, 11:33:17
Ort: N-tälje

Inlägg av babbage »

Man kan använda en klockkristall på 32768Hz. Om man delar den med 2^15 så får man 1Hz. Man kan även använda kristaller för andra frekvenser.

Om du vill använda pic:en till andra saker som att driva en display, alarm, något användarinterface för inställningar av tid mm och ändå ha en hög noggrannhet så kan det kanske vara en god idé att generera klockans tidsreferens utanför pic:en. Klocka pic:en med en hög frekvens (MHz) och kolla några hundra (exakt hur många är inte kritiskt) gånger per sekund på statusen på en inpinne.

Ex 32768/2^16 ger 0.5Hz. Läs av inpinnen och spara värdet (0 eller 1) i ett register. Om det inlästa värdet är samma som det gamla värdet i registret så gör man ingenting, om det däremot skiljer sig får man räkna upp sekundvärdet med 1.
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Man kan även, om man vill ha lite noggranhet, införskaffa en MAX32KHZ. Det är en 32768Hz oscillator som är temperaturkompenserat, man får då en noggranhet på ±2 min/år imon -40°C - +80°C, ±1 min/år vid rumstemperatur.

Ta signalen från MAX'en, kasta det in i en 4020 (eller är det 4040?) som nerdelning och *poooooffff*: 1 Hz!
Användarvisningsbild
Henry
Inlägg: 24576
Blev medlem: 20 april 2005, 02:52:47
Ort: Lund

Inlägg av Henry »

4020 är en 14 stegs alltså bara 16384 ggr delning, en 4040 har bara 12. Men tex en 4045 däremot har 21 steg så en sådan räcker gott och väl.
Användarvisningsbild
grapetonix
Inlägg: 293
Blev medlem: 14 juli 2004, 17:20:50
Skype: grapetonix
Ort: Hägersten, Stockholm

Inlägg av grapetonix »

babbage skrev: och kolla några hundra (exakt hur många är inte kritiskt) gånger per sekund på statusen på en inpinne.
Eller använd 16-bitars timern, många nya picar har ju den, avbrott sker vid rollover.
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Om man inte vill ha en (extra) klockkristall så skulle jag föreslå 16bits timern ihop med CCP-modulen (man kan använda den som periodregister till 16bits timern med "special event trigger").

Med det kan man få ett timer-interrupt på exakt 100Hz (t.ex.), och därifrån lätt räkna fram 1Hz i mjukvara. Jag gjorde precis så till en klocka i en PIC18 på 40MHz, men F628 har det som behövs tror jag (och olika frekvens betyder bara lite olika värden i registren).
Crille
Inlägg: 63
Blev medlem: 1 juli 2003, 11:56:21

Inlägg av Crille »

Humm, jag har en kristall på 32768Hz liggandes här också.

Men hade nån kunnat ge lite kod exempel hur jag ska göra i picbasic för detta ?
Skriv svar