Ha koll på tiden i en PIC18F452
Ha koll på tiden i en PIC18F452
Håller på med ett projekt där jag behöver ha ett "kopplingur" för att starta och stoppa olika aktiviter. Därför vill jag att processorn ska ha koll på dygnets tid. Vid start av systemet matas aktuell tid in. Sen vill jag att processorn håller tiden i ett par månader med en rimlig felmarginal.
Har kommit fram till två lösningar men vet inte vilken som är att föredra. Alternativ ett är att koppla in en extern klockkristall till TIMER1 på picen och det andra är att koppla in en extern RTC krets. Är bara i behov av att ha koll på tiden så en RTC kanske är överdrivet ? Eller finns det andra och bättre lösningar ?
MVH Magnus
Har kommit fram till två lösningar men vet inte vilken som är att föredra. Alternativ ett är att koppla in en extern klockkristall till TIMER1 på picen och det andra är att koppla in en extern RTC krets. Är bara i behov av att ha koll på tiden så en RTC kanske är överdrivet ? Eller finns det andra och bättre lösningar ?
MVH Magnus
Jag tycker det är lätt att programmera en klockbas som använder kristallen som driver picen.
Här är ett exempel på en interrupt-rutin(Pic16) som ska köras med 65536 cyclers intervall med valfri kristall.
Jag har inte fått någon respons när jag beskrivit metoden tidigare så om du undrar hur den funkar så fråga.
Här är ett exempel på en interrupt-rutin(Pic16) som ska köras med 65536 cyclers intervall med valfri kristall.
Kod: Markera allt
movlw 1 ;Subtrahera 1 till Count3
subwf Count3
btfsc STATUS,0
goto InteMinus ;Skippa om Count3 inte blev negativ
movf Add1,w ;Addera hela Count med KlockBasen(konstanter)
addwf Count1
movf Add2,w
btfsc STATUS,0
incfsz Add2,w
addwf Count2
movf Add3,w
btfsc STATUS,0
incfsz Add3,w
addwf Count3
incf Sekund ;+ en sekund
movf Sekund,w ;Nollställ om den är 60
xorlw .60
btfsc STATUS,2
clrf Sekund
InteMinus:
> med en rimlig felmarginal.
Eftersom ingen annan kan veta vad du anser är "en rimlig felmarginal"
under "ett par månader", så är det ingen större mening att svara på
de andra frågorna...
En eventuell (beroende på din definition av "rimlig felmarginal")
lösning 3: Använd huvudoscillatorn som tidbas.
Eftersom ingen annan kan veta vad du anser är "en rimlig felmarginal"
under "ett par månader", så är det ingen större mening att svara på
de andra frågorna...
En eventuell (beroende på din definition av "rimlig felmarginal")
lösning 3: Använd huvudoscillatorn som tidbas.
- bengt-re
- EF Sponsor
- Inlägg: 4829
- Blev medlem: 4 april 2005, 16:18:59
- Skype: bengt-re
- Ort: Söder om söder
- Kontakt:
Har annars för mig att det finns en del RTC till riktigt bra priser som går att batteribackuppa med en knappcell. Lite onödigt, men det är smidigt och skönt att ha en RTC om man behöver tid i sin krets. NOggranheten beror ju sedan bara på hur dyr kristall man sätter i RTC´n ( om den nu inte har inbyggd)
Tackar för tipsen. Säg en felmarginal på max 5 minuter per månad. Saken är att processorn ska gå konstant under ett par månader och då kanske det är bra med en RTC med batteribackup. Låter jag picen räkna tiden finns ju risken att den låser sig och vill man då använda en watchdog förlorar man tiden man ställt in.
Du behöver en RTC! "Strömsvigt" är riklig anledning till att välja det.
Det finns dock en lösning som kan användas:
Koppla dit en FRAM EEPROM som medger en jäkla massa skrivningar. Då kan du spara hur långt den har kommit för t.ex. varje minut.
Om den återstarter återkallas senaste värdet och den kör vidare.
Det finns dock en lösning som kan användas:
Koppla dit en FRAM EEPROM som medger en jäkla massa skrivningar. Då kan du spara hur långt den har kommit för t.ex. varje minut.
Om den återstarter återkallas senaste värdet och den kör vidare.