Skocz do zawartości

Zdarzenia i przerwania w STM32


slawek7

Pomocna odpowiedź

Cześć.

Pewnie dla was to banalne pytanie, ale próbuję tak dość prosto zrozumieć różnicę pomiędzy

przerwaniami a zdarzeniami.

Jeśli chodzi o przerwania to sprawa jest oczywista, ale zdarzenia? O co chodzi?

Link do komentarza
Share on other sites

Najprościej jest pomyśleć o zdarzeniach jako o przerwaniach, ale bez funkcji obsługi przerwań. Typowe przerwanie, jak nazwa wskazuje, przerywa wykonywanie programu, przechodzi do funkcji obsługi przerwania, a następnie wznawia wykonywanie kodu. Takie działanie wbrew pozorom jest bardzo czasochłonne. Im bardziej jest rozbudowany procesor, tym obsługa przerwań jest "droższa".

Wprowadzono więc uproszczony mechanizm - powiadamiania o wystąpieniu pewnego zdarzenia (np. odebrania znaku), ale bez wywoływania funkcji obsługi przerwania.

W dokumentacji stm32 znajdziesz dwie instrukcje wprowadzające procesor w tryb uśpienia WFI oraz WFE.

Pierwsza to Wait-For-Interrupt - jest typowa dla większości układów. Procesor przechodzi w tryb uśpienia, i czeka aż wystąpi jakieś zdarzenie. Po jego wystąpieniu generowane jest przerwanie, procesor jest budzony.

Problem jest taki, że czasem procedura obsługi przerwania wcale nie jest potrzebna - to tylko komplikacja programu oraz marnowanie czasu procesora. Wystarczyłoby po prostu wznowić progam i obsłużyć np. odebrane dane.

Właśnie od tego służy instrukcja WFE, czyli Wait-For-Event. Po jej wywołaniu procesor jest usypiany i czeka na zdarzenie. Gdy zdarzenie wystąpi jest budzony i wznawia wykonywanie programu - ale bez skoku do procedury obsługi przerwania.

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

Coś świta, ale gdzie 🙂

Czy to by znaczyło że zdarzenia maja takie same źródła jak przerwania, czyli zbocze z linii zewnętrznej, przepełnienie licznika, przerwanie ADC z jedną różnicą że nie ma funkcji jego obsługi? Dobrze myślę? Nie jestem pewny czy tez to dobrze zrozumiałem, czy zdarzenia powodują tylko wybudzenie uC?

Inna sprawa, przy przerwaniach nie trzeba wprowadzać procesora w tryb uśpienia WFI, program może iść swoją drogą (jak w AVRach), a co ze zdarzeniami? chyba nie ma sensu stosować zdarzeń jak nie stosuję instr WFE?

Link do komentarza
Share on other sites

Usypianie processora ma związek z oszczędzaniem energii. Procesory są coraz szybsze, ale należy pamiętać, że pobierają też coraz więcej prądu. O ile w przypadku AVR często można było to pomijać, to już STM32 pracujący powiedzmy na 192MHz potrafi pobierać baaardzo dużo prądu. Tendencja w programowaniu jest więc taka, żeby w momencie kiedy tylko to możliwe, procesor oraz układy peryferyjne były usypiane.

Jeśli dopiero zaczynasz przygodę z STM32 możesz spokojnie darować sobie zdarzenia - zajmij się przerwaniami oraz samym programowaniem. A jak dojdziesz do układów niskomocowych, poczytasz o trybach pracy, zdarzeniach itd.

Pojęcie zdarzenia w systemach operacyjnych jest dość ogólne - ale w przypadku STM32 oznacza ono reakcję na zmianę w sprzęcie - np. odebranie danych z UART, zmianę stanu zbocza, czy przepełnienie licznika - jest to więc odpowiednik przerwania.

Można je wykorzystać też w inny sposób - przykładowo zdarzenie może wyzwalać określone działanie sprzętu. Powiedzmy ADC może wykonywać konwersję w odpowiedzi na zdarzenie, nie angażując w to CPU.

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 zaczynam dopiero.

W dokumentacji i opisie programowania do STM32 jest tak skąpo na ten temat że nie wie o co chodzi.

Z racji przyzwyczajenie do AVR i jego przerwań na razie tu też przy tym zostanę. Chciałem tylko poznać różnice.

  • Lubię! 1
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.