Wybudzanie procesora z trybu powerdown przerwaniem int1.
Wybudzanie procesora z trybu powerdown przerwaniem int1.
Witam. Mam takie pytanie:
buduję prostu układ w celu nauki przerwań. Chodzi mi o to żeby sterować dwoma przyciskami:
Po naciśnięciu pierwszego przycisku układ:
a)Wyłącza timery
b)zeruje porty
c)przechodzi do trybu powerdown
I to wiem jak zrealizować.
Natomiast po naciśnięciu przycisku połączonego z wejściem int i masą układ powinien po prostu przejść do pętli.
I tu mam pytanie:
Wiem że po przerwaniu układ wchodzi do podprogramu. Proszę o poradę co zrobić bo po tym przerwaniu układ wybudził się i zaczął normalnie kręcić się w pętli, aż do ponownego przejścia w tryb powerdown.
Pozdrawiam
spanner
buduję prostu układ w celu nauki przerwań. Chodzi mi o to żeby sterować dwoma przyciskami:
Po naciśnięciu pierwszego przycisku układ:
a)Wyłącza timery
b)zeruje porty
c)przechodzi do trybu powerdown
I to wiem jak zrealizować.
Natomiast po naciśnięciu przycisku połączonego z wejściem int i masą układ powinien po prostu przejść do pętli.
I tu mam pytanie:
Wiem że po przerwaniu układ wchodzi do podprogramu. Proszę o poradę co zrobić bo po tym przerwaniu układ wybudził się i zaczął normalnie kręcić się w pętli, aż do ponownego przejścia w tryb powerdown.
Pozdrawiam
spanner
Panie kolego. Podstawy się kałaniają.Spanner pisze:niestety nie mam pojęcia co to jert i na czym polega, czy możesz to wyjasnić?
ISR - Interrupt Service Routine. Po prostu zrób puste przerwanie. A wcześniej drugie przerwanie zbuduj tak, co by pętla główna robiła to co napisałeś wcześniej i po tym lulu spać.
Uczę się...keruseykaryu pisze:Panie kolego. Podstawy się kałaniają.Spanner pisze:niestety nie mam pojęcia co to jert i na czym polega, czy możesz to wyjasnić?
Czyli może być na przykład tak:
Kod: Zaznacz cały
Deklaracje itp.
Enable interrupts
on int1 (i co mam wpisać tutaj?) [nosave]
Do
If pind.4 = 0 then:
disable timer0
Wyłacznie portów
powerdown
(dalsza część programu)
loop
end
Prosiłbym o jakiś przykład bo uczę się i nie wszystko rozumiem.
pozdrawiam
spanner
Nie podałeś o jaki procesor chodzi, a to może być istotne, na przykład z powodu sposobu w jaki INT1 wybudza procesor z trybu Power Down.
Poza tym, zastanów się nad używaniem C i zakupieniem książki, bo to zaoszczędzi Ci czas który tracisz na tak proste problemy. Ja proponuję Ci tę: http://helion.pl/view/5314./jcmikr.htm
Dlaczego C?: Jaki język wybrać?
Poza tym, zastanów się nad używaniem C i zakupieniem książki, bo to zaoszczędzi Ci czas który tracisz na tak proste problemy. Ja proponuję Ci tę: http://helion.pl/view/5314./jcmikr.htm
Dlaczego C?: Jaki język wybrać?
Patrząc na w/w kod zakładam, że chodzi o procesory AVR.Qwertxx pisze:Nie podałeś o jaki procesor chodzi, a to może być istotne, na przykład z powodu sposobu w jaki INT1 wybudza procesor z trybu Power Down.

AVRy z trybu power down wybudza się nie zmainą stanu a tzw. poziomem na INTx. Pierwsza lepsza karta katalogowa Atmela.
Jeżeli układ ma być resetowany po to żeby go zbudzić, to po co go zasilać w czasie snu. Trzeba zrobić funkcję autowyłączania zasilania.RcTomek pisze:Ale z praktycznego punktu widzenia, jeśli ma być wykonywany każdorazowo ten sam program, to chyba najlepsze rozwiązanie.
Po to są tryby usypiania, by je wykorzystać, a nie poddawać się, bo nie umie się czegoś zrobić. Oczywiście jeżeli układ działa i spełnia swoją rolę, to każde rozwiązanie jest akceptowalne.
Pisząc 'najlepsze' miałem na myśli najszybsze/najprostsze rozwiązanie.

Pomysł dobry, ale wzrasta nieco stopień skomplikowania układu. Przede wszystkim zależy do czego to ma służyć.Qwertxx pisze:Jeżeli układ ma być resetowany po to żeby go zbudzić, to po co go zasilać w czasie snu. Trzeba zrobić funkcję autowyłączania zasilania.
No to fakt, w ten sposób niewiele się wyniesie z tej naukiPo to są tryby usypiania, by je wykorzystać, a nie poddawać się, bo nie umie się czegoś zrobić. Oczywiście jeżeli układ działa i spełnia swoją rolę, to każde rozwiązanie jest akceptowalne.
