Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyj±tek www.elektroda.pl do Adblock.
Dzięki temu, że ogl±dasz reklamy, wspierasz portal i użytkowników.

Re: AVR-C Dydaktyczny kod: u¶pienie / wybudzenie mikrokontrolera

yogi009 02 Wrz 2017 00:07 1248 16
  • #1 02 Wrz 2017 00:07
    yogi009
    Poziom 42  

    W celu własnej edukacji chciałbym spytać o jaki¶ dydaktyczny kod Ľródłowy w C powoduj±cy wej¶cie mikrokontrolerka w stan u¶pienia, a potem jego wybudzenie (w reakcji np. na przytrzymanie microswitch'a przez 2 sekundy).

    Projekt zakłada wykorzystanie tego kodu do wł±czania/wył±czania lampki rowerowej z użyciem jakiego¶ skrajnie prostego (i małego) mikrokontrolera (Attiny5, 9, 11 - co¶ w tym stylu). Jeden microswitch na wej¶ciu, jeden LED na wyj¶ciu (z wyj¶ciami to już sobie poradzę), przycisk naciskany chwilowo pozwoli na zmianę trybu ¶wiecenia LED, a dłuższe przyci¶nięcie ma wła¶nie u¶pić/wybudzić mikrokontroler. Być może Ľle kombinuję, ale wersje L tych scalaczków maj± bardzo mały pobór pr±du w stanie u¶pienia.

    0 16
  • Arrow Multisolution Day
  • Pomocny post
    #2 02 Wrz 2017 02:27
    2675900
    Użytkownik usun±ł konto  
  • Arrow Multisolution Day
  • #3 02 Wrz 2017 12:47
    yogi009
    Poziom 42  

    Ok, rozumiem. W sumie wystarczy mi tylko funkcja usypiania mikrokontrolera po dłuższym przytrzymaniu klawisza. Wybudzanie tak, jak piszesz. Jeszcze raz dopytam, czy kto¶ może podrzucić jakie¶ proste, dydaktyczne przykłady kodu Ľródłowego?

    0
  • #4 02 Wrz 2017 13:25
    2675900
    Użytkownik usun±ł konto  
  • #6 02 Wrz 2017 14:25
    yogi009
    Poziom 42  

    Kolego Piotrus_999, to może jednak Ľle definiuję pewne sprawy. Zostawmy na chwilę to usypianie i jeszcze raz wróćmy do meritum. Mam lampkę rowerow±, jeden switch, kilka zaprogramowanych sekwencji mrugania i być może sterowanie jasno¶ci± (sprzętowy PWM). Najpro¶ciej (czyli bez zgłębiania wiedzy z dziedziny AVR C) byłoby dodać stały wł±cznik zasilania (bateryjnego). Jednak wszelkie podstawowe lampki działaj± z jednym switchem, który zarówno wł±cza/wył±cza urz±dzenie, jak też daje możliwo¶ć zmiany trybu pracy. Czy dobrze rozumuję, że trzeba tu wykorzystać stan u¶pienia mikrokontrolera? Jeżeli tak, to u¶pienie (wył±czenie lampki) nie może się odbywać po dłuższym nieużywaniu klawisza. System musi oczekiwać na naci¶nięcie switch'a analizuj±c, czy jest to krótkie naci¶nięcie, czy dłuższe przytrzymanie. Przynajmniej tak to widzę od strony logiki algorytmu. Wł±czenie także byłoby lepsze po dłuższym przytrzymaniu klawisza, pozwoli to wyeliminować niepoż±dane wł±czanie po krótkim, losowym przyci¶nięciu mikroswitch'a.

    0
  • Pomocny post
    #7 02 Wrz 2017 15:42
    2675900
    Użytkownik usun±ł konto  
  • #8 02 Wrz 2017 20:48
    yogi009
    Poziom 42  

    Czyli procesor usypia, ale jego wyj¶cia cały czas trzymaj± ustawiony stan? No... to temat jest rozwi±zany. Dziękuję bardzo za cenne wskazówki.

    0
  • Pomocny post
    #9 02 Wrz 2017 21:04
    2675900
    Użytkownik usun±ł konto  
  • Pomocny post
    #10 03 Wrz 2017 09:08
    22053
    Użytkownik usun±ł konto  
  • #11 03 Wrz 2017 15:36
    yogi009
    Poziom 42  

    Dzięki Kolego R-MIK. Na moim poziomie wiedzy w tym zakresie to najlepsza podpowiedĽ.

    0
  • Pomocny post
    #12 03 Wrz 2017 22:33
    dasej
    Poziom 29  

    Witam.

    Dołóż kwarc 32kHz i usypiaj procesor całkowicie.
    Ustawiaj±c odpowiednio Timer będziesz go budziła np. co sekundę.
    W trakcie "pobudki" procesora sprawdzaj stan klawisza czy jest wci¶nięty.
    Zatrzymuj±c wszystkie zbędne peryferia w procesorze uda Ci się zjechać z poborem pr±du poniżej 2uA.

    0
  • Pomocny post
    #13 03 Wrz 2017 23:02
    22053
    Użytkownik usun±ł konto  
  • Pomocny post
    #14 03 Wrz 2017 23:36
    dasej
    Poziom 29  

    Jeżeli procesor ma zadziałać na INT to musi chodzić główny zegar, czy się mylę.
    W trybie asynchronicznym wył±czamy wszystkie zasilania peryferiów ł±cznie z głównym zegarem.

    Jak już stosowałe¶ to rozwi±zanie to podaj ( jestem ciekaw ) jaki uzyskałe¶ pobór pr±du.

    Szczerze mówi±c to bez znaczenia czy procesor nic nie robi czy się budzi co sekundę,
    raczej przy zasilaniu bateryjnym chodzi o jak największ± oszczędno¶ć energii.

    Z wyliczeń wychodzi że to co zrobiłem pozwoli procesorowi działać i nadawać informacje radiem (RFM69)
    przez minimum 5 lat z baterii LS14250 (1.2Ah 3.6V).
    Obecnie działa już rok i napięcie nadal jest nominalne.

    0
  • Pomocny post
    #15 04 Wrz 2017 07:43
    dondu
    Moderator Mikrokontrolery Projektowanie

    dasej napisał:
    Jeżeli procesor ma zadziałać na INT to musi chodzić główny zegar, czy się mylę.

    Nie musi, dlatego s± to tak ważne przerwania:

    Re: AVR-C Dydaktyczny kod: u¶pienie / wybudzenie mikrokontrolera


    dasej napisał:
    Jak już stosowałe¶ to rozwi±zanie to podaj ( jestem ciekaw ) jaki uzyskałe¶ pobór pr±du.

    Z wł±czonym timerem 2: http://mikrokontrolery.blogspot.com/2011/04/SmartPIP-decyzje-strategiczne.html
    i pomiary: http://mikrokontrolery.blogspot.com/2011/04/SmartPIP-Licznik-czasu-testowanie.html

    dasej napisał:
    Z wyliczeń wychodzi że to co zrobiłem pozwoli procesorowi działać i nadawać informacje radiem (RFM69) przez minimum 5 lat z baterii LS14250 (1.2Ah 3.6V).
    Obecnie działa już rok i napięcie nadal jest nominalne.

    Wybrała¶ bardzo dobr± baterię, ale należy pamiętać o:

    Cytat:
    Maximum recommended continuous current 35 mA
    (Higher currents are possible, consult Saft)

    co być może w Twoim projekcie nie ma znaczenia.


    yogi009 napisał:
    Ok, rozumiem. W sumie wystarczy mi tylko funkcja usypiania mikrokontrolera po dłuższym przytrzymaniu klawisza. Wybudzanie tak, jak piszesz. Jeszcze raz dopytam, czy kto¶ może podrzucić jakie¶ proste, dydaktyczne przykłady kodu Ľródłowego?

    Proszę bardzo: http://mikrokontrolery.blogspot.com/2011/04/S...PIP-elektroniczny-dreczyciel-spis-tresci.html

    Przeczytaj także te 3 artykuły: http://mikrokontrolery.blogspot.com/2011/01/bateria-zasila-mikrokontroler-czesc-1.html

    Watchdog, to także dobre rozwi±zanie w niektórych przypadkach.

    0
  • #16 04 Wrz 2017 10:58
    yogi009
    Poziom 42  

    Zacny materiał i - jak widzę - systemowe podej¶cie do tematu. Wielkie dzięki.

    0
  • #17 04 Wrz 2017 11:15
    22053
    Użytkownik usun±ł konto