Michał 'Aeddin' Ogiński
Guest
Fri Apr 13, 2007 3:23 pm
Witam!
Mam ci ja PIC'a z kawałkiem LCD (własny softwareowy driver do niego)
zasilanego bateryjką. Próbuję go uśpić poprzez #asm sleep #endasm, i budzić
na odświeżenie LCD (60Hz) przerwaniem z Timer'a nr 1. Oscylator jest
wewnętrzny (INTCLK w CONFIG). Problem polega na niewstawaniu PIC'a z
uśpienia - wyłącza się wewnętrzny oscylator i wszystko zdycha. Jakoś nie
mogę połapać się w dokumentacji do niego czy da się zrobić to bez
zewnętrznego zegara.
Czy ktoś z Was może mi podpowiedzieć jak to zmusić do poprawnego działania?
--
Michał 'Aeddin' Ogiński
A. Grodecki
Guest
Mon Apr 16, 2007 12:21 pm
Michał 'Aeddin' Ogiński napisał(a):
Quote:
Witam!
Mam ci ja PIC'a z kawałkiem LCD (własny softwareowy driver do niego)
zasilanego bateryjką. Próbuję go uśpić poprzez #asm sleep #endasm, i budzić
na odświeżenie LCD (60Hz) przerwaniem z Timer'a nr 1. Oscylator jest
wewnętrzny (INTCLK w CONFIG). Problem polega na niewstawaniu PIC'a z
uśpienia - wyłącza się wewnętrzny oscylator i wszystko zdycha. Jakoś nie
mogę połapać się w dokumentacji do niego czy da się zrobić to bez
zewnętrznego zegara.
Czy ktoś z Was może mi podpowiedzieć jak to zmusić do poprawnego działania?
Z całą pewnością się da. Nie używałem tego układu, choć planowałem.
Musisz BARDZO dokładnie prześledzić fragmenty na temat obniżonego poboru
mocy, startu oiscylatora i stanów specjalnych - nie ma rady
Zwracaj też uwagę na teksty w ramkach, które traktuja o najczęstszych
błędach popełnianych przez programistów.
--
Pozdrawiam,
A. Grodecki
"Wszystkie zwierzęta sa równe.
Ale te, które mają futerko w trzykolorowe pasy, są równiejsze."
Andrzej Ekiert
Guest
Mon Apr 16, 2007 1:04 pm
Michał 'Aeddin' Ogiński napisał(a):
Quote:
Mam ci ja PIC'a [...]
Próbuję go uśpić poprzez #asm sleep #endasm, i budzić
[...] przerwaniem z Timer'a nr 1. Oscylator jest
wewnętrzny (INTCLK w CONFIG). Problem polega na niewstawaniu PIC'a z
uśpienia - wyłącza się wewnętrzny oscylator i wszystko zdycha. [...]
W trybie SLEEP, jak sam zauważyłeś, główny zegar jest wyłączony. Jeśli
Timer1 jest skonfigurowany do pracy z głównym zegarem, to w trybie SLEEP
nie dostaje zegara i nigdy nie wybudzi procesora.
Timer1 może budzić procesor ze SLEEP wyłącznie gdy pracuje z zewnętrznym
źródłem zegara.
Pozdrawiam,
--
Andrzej Ekiert
http://www.ekiert.com/microchip
Michał 'Aeddin' Ogiński
Guest
Mon Apr 16, 2007 1:17 pm
Dnia 16.04.2007 o 14:04:11, Andrzej Ekiert napisał(a):
[...]
Quote:
W trybie SLEEP, jak sam zauważyłeś, główny zegar jest wyłączony. Jeśli
Timer1 jest skonfigurowany do pracy z głównym zegarem, to w trybie SLEEP
nie dostaje zegara i nigdy nie wybudzi procesora.
Timer1 może budzić procesor ze SLEEP wyłącznie gdy pracuje z zewnętrznym
źródłem zegara.
Właśnie się doczytałem

. W takim razie, spróbuję skorzystać z watchdoga
- o ile rozumiem, w trybie uśpienia, watchog nie resetuje tego PICa, tylko
go budzi i program jest dalej wykonywany, zgadza się?
PS. I dzięki za linka do forum ;)
--
Michał 'Aeddin' Ogiński
Andrzej Ekiert
Guest
Mon Apr 16, 2007 2:57 pm
Michał 'Aeddin' Ogiński napisał(a):
[quote:cb6eaa3651]- o ile rozumiem, w trybie uśpienia, watchog nie resetuje tego PICa, tylko
go budzi i program jest dalej wykonywany, zgadza się?
[/quote:cb6eaa3651]
Zgadza się.
--
Andrzej Ekiert
http://www.ekiert.com/microchip
Michał 'Aeddin' Ogiński
Guest
Tue Apr 17, 2007 3:11 pm
Dnia 16.04.2007 o 14:17:55, Michał 'Aeddin' Ogiński napisał(a):
Quote:
Właśnie się doczytałem

. W takim razie, spróbuję skorzystać z watchdoga
[ciach]
Kto czyta/pyta nie błądzi

Na razie wszystko wygląda całkiem dobrze,
pobór prądu wreszcie zaczął być znikomy.
Pytanie tylko mam: na jaką dokładność w pomiarze czasu przy użyciu
watchdoga mogę liczyć? Napędzany jest 31kHz oscylatorem, a nie udało mi się
znaleźć w nocie katalogowej informacji o jego tolerancji.
--
Michał 'Aeddin' Ogiński
Andrzej Ekiert
Guest
Tue Apr 17, 2007 3:52 pm
Michał 'Aeddin' Ogiński napisał(a):
Quote:
Pytanie tylko mam: na jaką dokładność w pomiarze czasu przy użyciu
watchdoga mogę liczyć? Napędzany jest 31kHz oscylatorem, a nie udało mi się
znaleźć w nocie katalogowej informacji o jego tolerancji.
LFINTOSC jest nieskalibrowanym oscylatorem RC. W dokumentacji do
PIC16F9xx faktycznie nie ma podanej jego tolerancji, ale można znaleźć
tę daną w dokumentacji innych procesorów z "technologią NanoWatt": np.
przy pic12f683 podają MIN=15kHz, TYP=31kHz, MAX=45kHz. Czyli dokładność
uzyskasz raczej niewielką.
Pozdrawiam,
--
Andrzej Ekiert
http://www.ekiert.com/microchip
A. Grodecki
Guest
Tue Apr 17, 2007 4:06 pm
Michał 'Aeddin' Ogiński napisał(a):
Quote:
Dnia 16.04.2007 o 14:17:55, Michał 'Aeddin' Ogiński napisał(a):
Właśnie się doczytałem

. W takim razie, spróbuję skorzystać z watchdoga
[ciach]
Kto czyta/pyta nie błądzi

Na razie wszystko wygląda całkiem dobrze,
pobór prądu wreszcie zaczął być znikomy.
Pytanie tylko mam: na jaką dokładność w pomiarze czasu przy użyciu
watchdoga mogę liczyć? Napędzany jest 31kHz oscylatorem, a nie udało mi się
znaleźć w nocie katalogowej informacji o jego tolerancji.
Bardzo zgrubną. Główne oscylatory RC u Microchipa, trymowane, dają błąd
na poziomie procenta w najbardziej udanych pod tym wzgledem procesorach.
Oscylator wdoga nie jest ani trymowany ani stabilny. Ale do odswieżania
LCD nie ma to żadnego znaczenia, bo i 30Hz i 200Hz będzie dobrze a
krótkoterminowa stabilnośc będziesz miał wystarczająco dobra, żeby
składowej stałej na LCD nie było.
--
Pozdrawiam,
A. Grodecki
"Wszystkie zwierzęta sa równe.
Ale te, które mają futerko w trzykolorowe pasy, są równiejsze."
Michał 'Aeddin' Ogiński
Guest
Wed Apr 18, 2007 8:06 am
Dnia 17.04.2007 o 16:52:08, Andrzej Ekiert napisał(a):
Quote:
Michał 'Aeddin' Ogiński napisał(a):
Pytanie tylko mam: na jaką dokładność w pomiarze czasu przy użyciu
watchdoga mogę liczyć? Napędzany jest 31kHz oscylatorem, a nie udało mi się
znaleźć w nocie katalogowej informacji o jego tolerancji.
LFINTOSC jest nieskalibrowanym oscylatorem RC. W dokumentacji do
PIC16F9xx faktycznie nie ma podanej jego tolerancji, ale można znaleźć
tę daną w dokumentacji innych procesorów z "technologią NanoWatt": np.
przy pic12f683 podają MIN=15kHz, TYP=31kHz, MAX=45kHz. Czyli dokładność
uzyskasz raczej niewielką.
Pozdrawiam,
Niedobrze... potrzebuję odliczyć 4 godziny a z takim rozrzutem to mogę mieć
różnie

. A może jest jakiś sprytny sposób na jego synchronizację z,
powiedzmy, HFINTOSC? Tak się zastanawiam, czy zanim procesor pójdzie spać,
nie dałoby się sprawdzić czy obydwa oscylatory równo 'cykają' i na tej
podstawie wprowadzić korektę do odliczania czasu - sądzę, że dałoby się w
ten sposób wyeliminować rozrzut między różnymi PICami. Tylko co z
płynięciem częstotliwości ze zmianami temperatury? Dokumentacja mówi, że
maksymalne zmiany INTOSC dla 8MHz przy temperaturach od -40 do +85 st.C to
+/- 5%? A nieskalibrowany LFINTOSC jak popłynie?
Dziękuję Wam obydwom A. za pomoc :)
--
Michał 'Aeddin' Ogiński
Andrzej Ekiert
Guest
Wed Apr 18, 2007 10:00 am
Michał 'Aeddin' Ogiński napisał(a):
Quote:
[...] A może jest jakiś sprytny sposób na jego synchronizację z,
powiedzmy, HFINTOSC? Tak się zastanawiam, czy zanim procesor pójdzie spać,
nie dałoby się sprawdzić czy obydwa oscylatory równo 'cykają' i na tej
podstawie wprowadzić korektę do odliczania czasu
Czemu nie, coś na pewno da się wymyślić. Np. timerem pędzonym z
wewnętrznego zegara pomierzyć sobie rzeczwisty okres Watchdoga. Da się.
Quote:
maksymalne zmiany INTOSC dla 8MHz przy temperaturach od -40 do +85 st.C to
+/- 5%? A nieskalibrowany LFINTOSC jak popłynie?
Bardziej
Może nawet dużo bardziej.
Jeśli już masz LCD na pokładzie, to zastanów się czy na pewno nie stać
cię na zegarkowy oscylator podłączony do Timera1. T1OSC bierze tylko
3.4uA @ 5V, a da ci precyzyjny pomiar czasu.
Pozdrawiam,
--
Andrzej Ekiert
http://www.ekiert.com/microchip
A. Grodecki
Guest
Wed Apr 18, 2007 12:06 pm
Andrzej Ekiert napisał(a):
Quote:
maksymalne zmiany INTOSC dla 8MHz przy temperaturach od -40 do +85
st.C to
+/- 5%? A nieskalibrowany LFINTOSC jak popłynie?
Bardziej
Może nawet dużo bardziej.
Jeśli już masz LCD na pokładzie, to zastanów się czy na pewno nie stać
cię na zegarkowy oscylator podłączony do Timera1. T1OSC bierze tylko
3.4uA @ 5V, a da ci precyzyjny pomiar czasu.
On chyba juz ma projekt gotowy... Ale to jedyne rozsądne rozwiązanie
jesli ma to być RTC, zresztą po to właśnie ta opcja została stworzona...
Albo PCF-a i2c na zewnątrz, który będzie wyzwalał procesor co jakiś czas
do pomiaru RTC. Prądowo wyjdzie bardziej oszczędnie i tylko jeden pin
"zużyty". A odświeżanie na wdogu.
--
Pozdrawiam,
A. Grodecki
"Wszystkie zwierzęta sa równe.
Ale te, które mają futerko w trzykolorowe pasy, są równiejsze."
Michał 'Aeddin' Ogiński
Guest
Fri Apr 20, 2007 8:29 am
Dnia 18.04.2007 o 13:06:31, A. Grodecki napisał(a):
[...]
Quote:
On chyba juz ma projekt gotowy... Ale to jedyne rozsądne rozwiązanie
jesli ma to być RTC, zresztą po to właśnie ta opcja została stworzona...
Albo PCF-a i2c na zewnątrz, który będzie wyzwalał procesor co jakiś czas
do pomiaru RTC. Prądowo wyjdzie bardziej oszczędnie i tylko jeden pin
"zużyty". A odświeżanie na wdogu.
Masz rację - projekt niestety jest "na przedwczoraj" i przesiadając się z
AVRów nie doczytałem wszystkiego w dokumentacji PICa

.
A jeśli chodzi o RTC, to nie potrzebuję specjalnej dokładności. Co 15
minut zapalam segment na LCD i tak aż do 4 godzin. Potem już mi zegar nie
jest potrzebny, aż do wyzerowania tego czasu.
Pozdrawiam,
--
Michał 'Aeddin' Ogiński
A. Grodecki
Guest
Fri Apr 20, 2007 9:21 am
Michał 'Aeddin' Ogiński napisał(a):
Quote:
Masz rację - projekt niestety jest "na przedwczoraj" i przesiadając się z
AVRów nie doczytałem wszystkiego w dokumentacji PICa

.
A jeśli chodzi o RTC, to nie potrzebuję specjalnej dokładności. Co 15
minut zapalam segment na LCD i tak aż do 4 godzin. Potem już mi zegar nie
jest potrzebny, aż do wyzerowania tego czasu.
Pozdrawiam,
No to jeśli nie da sie podlutowac kwarcu pod timer1, PCF przyklejony do
płytki będzie dobrym rozwiązaniem. I dokładnym.
--
Pozdrawiam,
A. Grodecki
"Wszystkie zwierzęta sa równe.
Ale te, które mają futerko w trzykolorowe pasy, są równiejsze."
Michał 'Aeddin' Ogiński
Guest
Fri Apr 20, 2007 2:11 pm
Dnia 20.04.2007 o 10:21:22, A. Grodecki napisał(a):
[...]
Quote:
No to jeśli nie da sie podlutowac kwarcu pod timer1, PCF przyklejony do
płytki będzie dobrym rozwiązaniem. I dokładnym.
Niestety, to ma być _tani_ układ. Nawet bardzo tani. Tylko procesor i
garstka drobnicy ; ).
--
Michał 'Aeddin' Ogiński