sleep a Timer1 w PIC16F914

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?

Reply to
Michał 'Aeddin' Ogiński
Loading thread data ...

Michał 'Aeddin' Ogiński napisał(a):

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.

Reply to
A. Grodecki

Michał 'Aeddin' Ogiński napisał(a):

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,

Reply to
Andrzej Ekiert

Dnia 16.04.2007 o 14:04:11, Andrzej Ekiert napisał(a): [...]

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 ;)

Reply to
Michał 'Aeddin' Ogiński

Michał 'Aeddin' Ogiński napisał(a):

Zgadza się.

Reply to
Andrzej Ekiert

Dnia 16.04.2007 o 14:17:55, Michał 'Aeddin' Ogiński napisał(a):

[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.
Reply to
Michał 'Aeddin' Ogiński

Michał 'Aeddin' Ogiński napisał(a):

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,

Reply to
Andrzej Ekiert

Michał 'Aeddin' Ogiński napisał(a):

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.

Reply to
A. Grodecki

Dnia 17.04.2007 o 16:52:08, Andrzej Ekiert napisał(a):

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 :)
Reply to
Michał 'Aeddin' Ogiński

Michał 'Aeddin' Ogiński napisał(a):

Czemu nie, coś na pewno da się wymyślić. Np. timerem pędzonym z wewnętrznego zegara pomierzyć sobie rzeczwisty okres Watchdoga. Da się.

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,

Reply to
Andrzej Ekiert

Andrzej Ekiert napisał(a):

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.

Reply to
A. Grodecki

Dnia 18.04.2007 o 13:06:31, A. Grodecki napisał(a): [...]

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,

Reply to
Michał 'Aeddin' Ogiński

Michał 'Aeddin' Ogiński napisał(a):

No to jeśli nie da sie podlutowac kwarcu pod timer1, PCF przyklejony do płytki będzie dobrym rozwiązaniem. I dokładnym.

Reply to
A. Grodecki

Dnia 20.04.2007 o 10:21:22, A. Grodecki napisał(a):

[...]

Niestety, to ma być _tani_ układ. Nawet bardzo tani. Tylko procesor i garstka drobnicy ; ).

Reply to
Michał 'Aeddin' Ogiński

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.