Skocz do zawartości

Przerywania które nóźki?


Kalc

Pomocna odpowiedź

Witam,
Pewnie dla wielu będzie to banalne pytanie ale szukałem w google i nic :/.

Chce aby w mikroprocesorze były 4 różne przerywania zewnętrzne z tego co widziałem na schematach nóżki PD2 i PD3 są oznaczone odpowiednio INT0, INT1 (używam procesora AVR mega 16 DIP40), wiem że jakoś da się włączyć dodatkowe przerywanie tylko nie wiem jaką komendą oraz która nóżka odpowiada danemu przerywaniu.

Bardzo proszę o pomoc i z góry dziękuje.

Link do komentarza
Share on other sites

Takie informacje znajdziesz w datasheecie pod nazwą external interrupts. I nie przrywania tylko przerwania 🙂 Do czego tego potrzebujesz? Może dałoby się rozwiązać to inaczej, sprytniej (m16 ma chyba tylko 3 piny przypisane do przerwań).

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Potrzebuje podpiąć 2 krańcówki, 1 przycisk i odbiornik podczerwieni do mikroprocka.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Tak jak napisał BoBBy, procesor ma tylko 3 wejścia przerwań. Pozostaje zmienić procesor, albo zrezygnować z przerwań.

Spokojnie możesz obsługiwać przycisk poza przerwaniami - i tak trzeba eliminować drgania styków.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

W zasadzie ja nie korzystam w ogóle z przerwań i da się obsłużyć to co chcesz i dużo dużo więcej bez nich, Elvis dobrze prawi.

Link do komentarza
Share on other sites

Aha, więc przycisk i podczerwień zrobię w pętli głównej natomiast krańcówki dam do przerwań bo jak procek ich nie zauważy to może być krucho.

Dzięki za pomoc, można zamknąć.

Link do komentarza
Share on other sites

Aha, więc przycisk i podczerwień zrobię w pętli głównej natomiast krańcówki dam do przerwań bo jak procek ich nie zauważy to może być krucho.

Jak może tego procek nie zauważyć? Już nie przesadzaj! Przy taktowaniu 1MHz żeby procek czegoś nie zauważył powinno to trwać poniżej 10^-6 sekundy i jeszcze trafić w odpowiednie dziursko czasowe, wyobrażasz sobie to jakoś? bo ja nie?

Link do komentarza
Share on other sites

Oj nie do końca. Zauważ, że proc taktowany 1MHz nie tylko sprawdza krańcówki. Sprawdzałby je z częstotliwością 1MHz jeśli tylko to robiłby w pętli, albo były na przerwaniach. W międzyczasie dochodzą jeszcze jakieś przerwania od timerów (pwm i te sprawy), waity (delaye)... Ale mimo wszystko, ciężko przy dobrze napisanym programie trafić na delaya, tym badzie, że krańcówka zostaje zwarta na baaaaaaaaaaardzo długo 🙂 Tak gwoli ścisłości, sprostowania.

Link do komentarza
Share on other sites

Z drugiej strony jeżeli krańcówka zostanie zwarta na bardzo długo zanim procesor zareaguje (mam na myśli czas liczony w ms lub s).

To może się okazać, że już nie ma po co reagować, zwłaszcza, jak układ wykonawczy ma bardzo dużą szybkość działania.

Pomijam fakt, że źle zamontowana krańcówka może ulec uszkodzeniu zanim układ sterowania zareaguje na jej zadziałanie, co może doprowadzić do tego, że uszkodzona krańcówka nie będzie już stykać (rozwierać) obwodu zanim US sprawdzi jej stan.

Tak, że albo z głową napisany program, w którym nie ma delayów programowych,
albo przerwania.

Może wykorzystanie instrukcji warunkowych i delay wykonany ręcznie zamiast stosować typowe pauzy.

Niestety, żeby doradzić coś konkretnego potrzeba więcej szczegółów.

A nie tylko "potrzebuje obsłużyć 2 krańcówki, przycisk i TSOPa".

Przyszło mi jeszcze do głowy wykorzystanie ATmega88 i nie tylko przerwań INTx ale także PCINTx, ale tymi się nie bawiłem więc nie mogę konkretnie doradzić.

Częstotliwość przerwań jest ograniczana także przez czas trwania samej procedury przerwania.

Sam skok oraz wyjście z procedury trwają kilka cykli zegarowych plus do tego kod obsługi przerwania.

W tym czasie, jeżeli mamy włączoną obsługę przerwań, kolejne przerwanie przerywa już wykonywane, aż do przepełnienia stosu (mówię o bardzo często występujących zdarzeniach)

Druga możliwość - jeżeli w trakcie wykonywania procedury przerwania mamy wyłączoną obsługę przerwań, w takim razie niezależnie od ilości występujących zdarzeń tego samego typu (np. przerwania INT) po przywróceniu obsługi przerwań, realizowanym automatycznie w trakcie wyjścia z aktualnie obsługiwanego przerwania, aktywowane jest nowe przerwanie ale tylko RAZ. Więc w takim przypadku tracimy bezpowrotnie informację o ilości zdarzeń.

Mam nadzieję, że nie zamieszałem za bardzo.

Link do komentarza
Share on other sites

Oj nie do końca. Zauważ, że proc taktowany 1MHz nie tylko sprawdza krańcówki. Sprawdzałby je z częstotliwością 1MHz jeśli tylko to robiłby w pętli, albo były na przerwaniach. W międzyczasie dochodzą jeszcze jakieś przerwania od timerów (pwm i te sprawy), waity (delaye)... Ale mimo wszystko, ciężko przy dobrze napisanym programie trafić na delaya, tym badzie, że krańcówka zostaje zwarta na baaaaaaaaaaardzo długo 🙂 Tak gwoli ścisłości, sprostowania.

Ale Ty precyzyjny 🙂, tez racja, nie brałem tego pod uwagę 🙂, zdarza się. Bardziej myślałem o .... tym że przy taktowaniu 1MHz, procek wykona 10^6 "czynności", no ale jak już ustaliliśmy mój wywód poniekąd w pewnym stopniu był prawdziwy 😃

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.