Klocka av PIC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Tyvärr är de inte speciellt exakta heller...
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Inlägg av blueint »

Kanske denna är en möjlighet (se bilden på NIST mini klocka):
http://en.wikipedia.org/wiki/Atom_clock

Eller någon GPS modul.
Trodde förresten att 32 kHz kristallerna var exakta eftersom syftet med dom är att driva en klocka..
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Icecap: Jaha, jag trodde att om man hade den på prescale 1:1 så räknade den alla vad det nu heter, så man bara skulle dela den på fyra om man körde med prescale 1:4. :)

Då blir det till att räkna om.

Mvh
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

blueint: Varför GPS-modul? :roll:
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Inbakad i GPS-datan finns en exakt tidsangivelse också...
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Känns som lite onödigt :P Då är det ju lättare (och billigare) med radio klocka eller vad det nu heter (från sändaren i tyskland(?)) för den är ju också rätt exakt :)

Mvh
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Får se, om jag har tänkt rätt denna gången. En 4,194304MHz kristall:

4 194 304 / 65536 = 64 / 4 = 16

Vilket betyder att om jag kör prescale på 1:1 så kommer det blir 16 interrupt per sekund. Men om jag då sätter prescale för timer1 på 1:8 så kommer jag bara få 2 interrupt per sekund. Vilket betyder att varranan gång ska sekund variabeln öka.

Nu har jag tänkt rätt hoppas jag? :)

Mvh.
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Verkar helt rätt.

Och radio-klockan från Tyskland är just DCF77 som jag skrev tidigare...
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Icecap: Jepp, det var så namnet var! :D Hade en tillfällig minnesförlust trots att jag precis läst det :)

Då blir det till att skaffa en sån kristall!

Mvh.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

hmm.. Jag har kollat lite i denna tråden: låång url... Och här (på sidan 2) fattar jag det som att han har en 32,768KHz kristall som han räknar upp timer1 med och när han kör prescale på 1:1 så blir det interrupt varannan sekund. Och det skulle ju betyda att timern räknar alla och inte bara var fjärde "slag" från kristallen som du sa Icecap? Eller har jag missuppfattat något?? :S

(32 768Hz / 65536 = 0,5 interrupt per sekund = ett interrupt varrannan sekund).

Tacksamm för all hjälp och alla förklaringar! :)
Mvh.
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

Kan inte PIC men som det ser ut i databladet så är input till Timern FOSC/4 eller om extern klocka används 1/1 (Figur 6-2 i databladet).
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7461
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Inlägg av Marta »

Varför göra det enkla svårt?

Räknaren i min kod fungerar så att istället för att bara ställa den till ett heltal så finns det i det här fallet tre bytes till "nedanför" heltalsdelen som ju räknas ned som vanligt. När denna kommer ner så istället för att bara stoppa in ett 1-bytes heltalsvärde så adderar man in ett 4-bytes värde i den. När de tre decimalbytes genererar en carry så kommer heltalsdelen att ökas med 1. Däremd kommer räknaren att dela med ett tal som varierar. Medelvärdet blir exakt. Med t.ex. 9.5..... Hz så ser man inte på sekundsiffran ifall den delar med 9 eller med 10.

För att räkna ut talen för decimalbytes så tar man bort heltalsdelen på önskad divisor och multiplicerar med 256. Upprepa för det antal decimalbytes som används.

Det fina som ännu ingen har kommenterat är att man kan ställa klockan i mycket små steg utan att dribbla med en trimkonding.

Som instrument används en vanlig klocka som går exakt, t.ex. text-TV. Mäter man över en månad för slutjusteringen och kan mäta med 1 sekunds noggrannhet så någ man antagligen den noggrannet som kristallen medger.
Användarvisningsbild
persika
EF Sponsor
Inlägg: 1541
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Inlägg av persika »

I Martas exempel ovan är det flera instruktioner jag inte känner igen, vad betyder dom ?

DSZ, RTS, LOD, ISZ....
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7461
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Inlägg av Marta »

DSZ = Decrement Skip if Zero

RTS = ReTurn from Subroutine

LOD = LOaD

ISZ = Increment Skip if Zero


Det är inte standard PIC-assembler, utan min egen assemblator som bygger på koderna för 6502. Den kan hantera 65(C)02, 8086/88, V20 och PIC16/18.
Användarvisningsbild
persika
EF Sponsor
Inlägg: 1541
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Inlägg av persika »

En egen assemblator.. intressant, är det inte svårt att få den att funka för olika processorer ? Intruktionerna är så olika...

För länge sen, "på stenåldern", gjorde jag en assembler för Z80
Skriv svar