Pokrewne
menu      Niechciany sleep timer w Westa TC201
menu      pic16C84 a pic16F84A ?
menu      bedzie dzialac?
menu      Problem z wyborem podzespołów
menu      MoM na androida
menu      [Pytanie] Poszukuje dobrego serwera dedykowanego do gry "Tibia"
menu      Debian, polecenie mail i poczta w PHP'ie
menu      przedwzmacniacze...
menu      Gniazda Wentylatorów
menu      Serwosterownik DC
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • aniadka.keep
  • sleep a Timer1 w PIC16F914





    =?iso-8859-2?Q?Micha=B3_'Aeddin'_Ogi=F1ski?= - 13-04-2007 16:45
    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?
    --
    Michał 'Aeddin' Ogiński





    A. Grodecki - 16-04-2007 13:45

      Michał 'Aeddin' Ogiński napisał(a):
    > 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."




    =?iso-8859-2?Q?Micha=B3_'Aeddin'_Ogi=F1ski?= - 16-04-2007 14:45

      Dnia 16.04.2007 o 14:04:11, Andrzej Ekiert 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.
    >
    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 - 16-04-2007 14:45

      Michał 'Aeddin' Ogiński napisał(a):
    > 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





    Andrzej Ekiert - 16-04-2007 16:45

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

    > - o ile rozumiem, w trybie uśpienia, watchog nie resetuje tego PICa, tylko
    > go budzi i program jest dalej wykonywany, zgadza się?

    Zgadza się.
    --
    Andrzej Ekiert
    http://www.ekiert.com/microchip




    =?iso-8859-2?Q?Micha=B3_'Aeddin'_Ogi=F1ski?= - 17-04-2007 16:45

      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.

    --
    Michał 'Aeddin' Ogiński




    A. Grodecki - 17-04-2007 17:45

      Michał 'Aeddin' Ogiński napisał(a):
    > 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."




    Andrzej Ekiert - 17-04-2007 17:45

      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,
    --
    Andrzej Ekiert
    http://www.ekiert.com/microchip




    =?iso-8859-2?Q?Micha=B3_'Aeddin'_Ogi=F1ski?= - 18-04-2007 09:45

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

    > 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 - 18-04-2007 11:45

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

    > [...] 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ę.

    > 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 - 18-04-2007 13:45

      Andrzej Ekiert napisał(a):

    >> 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."




    =?iso-8859-2?Q?Micha=B3_'Aeddin'_Ogi=F1ski?= - 20-04-2007 09:45

      Dnia 18.04.2007 o 13:06:31, A. Grodecki 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.
    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 - 20-04-2007 10:45

      Michał 'Aeddin' Ogiński 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,

    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."




    =?iso-8859-2?Q?Micha=B3_'Aeddin'_Ogi=F1ski?= - 20-04-2007 15:45

      Dnia 20.04.2007 o 10:21:22, A. Grodecki 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.
    Niestety, to ma być _tani_ układ. Nawet bardzo tani. Tylko procesor i
    garstka drobnicy ; ).

    --
    Michał 'Aeddin' Ogiński
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • konstruktor.keep.pl
  • Design by flankerds.com