Sida 1 av 1

Tid i PIC

Postat: 26 augusti 2004, 22:29:10
av Fredrick
Kan man använda en PIC16F84 för att hålla reda på tiden, klockan alltså??

Typ visa tiden i en LCD display

Använder PBP 2.45

Postat: 26 augusti 2004, 22:52:53
av $tiff
Ja, men man behöver en klockkristall på 32,7680 kHz.
Antingen låter du PICen tuffa på i denna frekvens som arbetsfrekvens, eller så anväder du den som sekundär kristall ansluten till RA4 (eller vad det nu är...).
Sen måste du plugga på lite om counters/timers och interrupts för att konfigurera dessa rätt till att göra exakt en sekunds interrupts som ökar tiden hela tiden.


Alternativet (för den slöe :wink: ) är att använda en RTC, d.v.s. en extern krets som håller reda på tiden åt dig och från dennas minne läser man av aktuell tid via en µC.

Postat: 27 augusti 2004, 13:01:23
av Chribbe76
Om man vill ha högre klockfrekvens än 32.768 Khz så finns det andra kristaller som är jämnt delbara med 2-potenser.
Tex 8,388608 Mhz

Men man kan givetvis använda vilken kristall som helst (lämpligtvis max-frekvens för den pic:en).

Ett exempel på hur jag brukar göra:

Kristall = 10 Mhz (dvs 2.5 Mhz internt)
Prescaler = 256
Man sätter en 24bitars-räknare till 2500000

Timer-interruptet kommer att interrupta varje 65536:e klockcykel eller 38.14697266 gånger/sekund.

I interruptrutinen minskar man den högsta byte:en av 24bitars-räknaren med 1 (vilket motsvarar 65536).
Om den blir negativ så adderar man hela 24bitars-räknaren med 2500000 och ökar sekund-räknaren med 1.

Man kan även göra detta utan interrupt, bara att med jämna(eller ojämna) mellanrum kolla hur mycket TMR0 har ökat och subtrahera det till 24bitars-räknaren (man får aldrig nollställa TMR0 för då blir det fel).

En stor fördel med den här metoden är att man lätt kan kalibrera klockan för kristallerna stämmer aldrig exakt.

Om man vill ha nogrannare upplösning på kalibreringen än 1 klockcykel/sekund så kan man ändra siffrorna så att man utnyttjar större del av 24bitars-räknaren.