logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Atmega8 - Jak wprowadzić i wybudzić z power down za pomocą Int0 w Bascom?

MICHAŁ6201 07 Paź 2013 19:49 3261 7
  • #1 12819434
    MICHAŁ6201
    Poziom 16  
    Posty: 832
    Pomógł: 3
    Ocena: 177
    Witam Wszystkich
    Chcę wprowadzić atmegę w power down za pomocą Int0, a także wybudzić go ze snu za pomocą Int0.

    Nigdy wcześniej tego nie robiłem i szukając w internecie też nie trafiłem na wsad, na którym mógłbym się wzorować.

    Program piszę w Bascom.
    Atmega8 ma wejść w stan power down jeśli na końcówce Int0 pojawi się 1, natomiast ma się wybudzić jeśli na Int0 pojawi się stan niski.

    Atmega8 taktowana zegarem wewnętrznym 1MHz.

    Ogólnie szkielet programy wyglądałby tak:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    I nie wiem teraz jak napisać część programu odpowiedzialną za wybudzenie procka jeśli na Int0 pojawi się stan niski.

    I jeszcze jedno pytanie - jeśli wprowadzę procek w power down i program będzie błędnie napisany, to jest taka możliwość, że procek zaśnie na wieki wieków?

    Z góry dziękuję za pomoc i sugestie.
  • #2 12820369
    Konto nie istnieje
    Poziom 1  
  • #3 12820379
    Konto nie istnieje
    Poziom 1  
  • #4 12821232
    MICHAŁ6201
    Poziom 16  
    Posty: 832
    Pomógł: 3
    Ocena: 177
    Czyli błędnie rozumowałem, że mogę wybudzić procka przez Int0, bo jeśli będzie procek w power down, to Int0 nie będzie działać, więc nie zareaguje na pojawienie się tam stanu niskiego.

    Ale nadal nie wiem jak obudzić procek. W helpie bascoma nie ma na to odpowiedzi. Może to jest tak oczywiste, że nie trzeba tego tłumaczyć...

    A może dopiąć do procka jakieś zewnętrzne taktowanie, np. z sygnał INT z PCF8583?

    Nie bardzo jestem to w stanie sobie wyobrazić i tak szukam po omacku.
  • #5 12821295
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    MICHAŁ6201 napisał:
    Czyli błędnie rozumowałem, że mogę wybudzić procka przez Int0, bo jeśli będzie procek w power down, to Int0 nie będzie działać, więc nie zareaguje na pojawienie się tam stanu niskiego.

    Ale nadal nie wiem jak obudzić procek. W helpie bascoma nie ma na to odpowiedzi. Może to jest tak oczywiste, że nie trzeba tego tłumaczyć...

    Zanim wyciągniesz wnioski zaglądnij do dokumentacji mikrokontrolera: http://www.atmel.com/devices/atmega8.aspx?tab=documents
    Znajdziesz tam odpowiedni rozdział "Power Management and Sleep Modes", a w nim punkt Power-down Mode, gdzie wszystko pisze.
    W rozdziale tym znajdziesz także tabelkę:

    Atmega8 - Jak wprowadzić i wybudzić z power down za pomocą Int0 w Bascom?

    Z niej także wyczytasz, co wybudza i w jaki sposób (patrz przypisy pod tablicą) z trybu, który potrzebujesz użyć.

    BTW. Porzuć BASCOM ... bo to ślepa ulica: http://mikrokontrolery.blogspot.com/2011/04/jaki-jezyk-wybrac.html
  • #6 12821340
    MICHAŁ6201
    Poziom 16  
    Posty: 832
    Pomógł: 3
    Ocena: 177
    Czyli wychodzi na to, że można go obudzić przez INT0 za pomocą LOW LEVEL czyli stanem niskim podanym na INT0.

    To skoro po uśpieniu nie działa INT0, to jak można obudzić za pomocą INT0. Nic już z tego nie rozumiem.
  • #7 12821435
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    Zapewne:
    1. nie włączyłeś przerwań globalnych,
    2. lub nie włączyłeś przerwań z INT0,
    3. lub nie ustawiłeś reakcji INT0 na low level.

    Zobacz w dokumentacji mikrokontrolera tabelkę Table 32. Interrupt 0 Sense Control oraz rejestr GICR.

    Jak to zrobić w BASCOM nie wiem :)
  • #8 12821804
    Konto nie istnieje
    Poziom 1  

Podsumowanie tematu

✨ Użytkownik poszukuje sposobu na wprowadzenie mikrokontrolera Atmega8 w tryb power down oraz jego wybudzenie za pomocą przerwania INT0 w języku Bascom. W odpowiedziach podkreślono, że aby obudzić procesor z trybu power down, należy skonfigurować przerwanie INT0 na niski poziom (low level). Wskazano również na konieczność aktywacji przerwań globalnych oraz odpowiedniego ustawienia rejestrów. Użytkownik został skierowany do dokumentacji mikrokontrolera oraz do rozdziału dotyczącego zarządzania energią i trybów uśpienia. Wskazano, że użycie tego samego przerwania do wprowadzenia w tryb power down i jego wybudzenia może prowadzić do konfliktów.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA