Bezpłatna biblioteka techniczna ENCYKLOPEDIA RADIOELEKTRONIKI I INŻYNIERII ELEKTRYCZNEJ Projektujemy urządzenia na mikrokontrolerach. Encyklopedia elektroniki radiowej i elektrotechniki Encyklopedia radioelektroniki i elektrotechniki / Mikrokontrolery Pomiędzy początkowym pomysłem stworzenia urządzenia opartego na mikrokontrolerze (MCU) a opracowaniem jego programu następuje ważny etap – sporządzenie schematu blokowego algorytmu. Często się o tym zapomina lub, co gorsza, zaniedbuje. Programowanie odbywa się „heurystycznie”, zasadniczo metodą prób i błędów. Efektem jest słabo działający, uciążliwy program, który nie jest w pełni zrozumiały nawet dla jego twórcy i jest trudny do modernizacji. Jednak od dawna znane są dość proste metody, stosowane przez programistów, pozwalające już od werbalnego sformułowania algorytmu kompetentnie zaprojektować jego schemat blokowy. Zainteresowania zawodowe autora artykułu dotyczą opracowań MK serii Z8, ale prezentowany przez niego materiał dotyczy w równym stopniu innych typów MK. Interakcję dowolnego systemu MK z operatorem i obiektem sterującym można przedstawić w sposób pokazany na rys. 1 schemat [1]. W ogólnym przypadku obiekt sterujący jest wyposażony w elementy wykonawcze i czujniki. Operator oddziałuje na mikrokontroler za pomocą urządzeń nadrzędnych i otrzymuje informacje o stanie obiektu z odczytów urządzeń wyświetlających. Te pierwsze to przełączniki, przyciski, rezystory zmienne, drugie to wskaźniki świetlne (w tym graficzne i alfanumeryczne), urządzenia emitujące dźwięk i inne urządzenia sygnalizacyjne. Wszystkie jednostki funkcjonalne i połączenia pokazane na schemacie są wymagane tylko w złożonych interaktywnych systemach monitorowania i sterowania. W tzw. układach sterowania w otwartej pętli mikrokontroler pracuje „na ślepo”, nie otrzymując żadnej informacji o stanie obiektu. Czasami nawet nie dostarcza operatorowi żadnych informacji o pracy (zarówno własnej, jak i obiektu), zwłaszcza jeśli możliwa jest ocena wyników kontroli poprzez obserwację samego obiektu. W zamkniętych układach sterowania MC dostosowuje działania sterujące na obiekcie w zależności od odczytów czujników, ale tutaj również nie są wymagane urządzenia wyświetlające. Układy sterowania nie zawierają elementów wykonawczych, a za pomocą urządzeń nadrzędnych operator jedynie dobiera kontrolowane parametry lub przełącza tryby pracy wskaźników. Metodologia projektowania systemów na MK [2, 3] obejmuje sformułowanie i analizę problemu, jego inżynierską interpretację, opracowanie schematu blokowego algorytmu i tekstu programu aplikacyjnego. W takich systemach mają tendencję do przypisywania maksymalnej liczby funkcji oprogramowaniu. Skuteczność ich wdrożenia ostatecznie determinuje wymaganą ilość pamięci, szybkość i niezawodność systemu jako całości. Oczywiście musimy jeszcze opracować diagram koncepcyjny i projekt samego produktu, ale poruszymy je tylko w zakresie niezbędnym do rozwoju programu MK. Stwierdzenie problemu to słowne sformułowanie wymagań dla projektowanego systemu. Przede wszystkim opisują jego przeznaczenie, charakterystykę obiektu sterującego, czujniki, wskaźniki, elementy wykonawcze i urządzenia nadrzędne. Następnie należy szczegółowo porozmawiać o pożądanym zachowaniu systemu we wszystkich możliwych sytuacjach, w tym także „nienormalnych”. W żadnym wypadku nie należy polegać na bezbłędnych działaniach operatora. Na przykład, po usłyszeniu sygnału alarmowego, może nacisnąć przycisk „START” zamiast przepisanego przycisku „STOP” lub losowo nacisnąć wszystkie przyciski z rzędu. Oczywiście nie da się przewidzieć wszystkich takich sytuacji, ale trzeba do tego dążyć. Konieczne jest określenie wartości liczbowych parametrów projektowanego układu. Po pierwsze, zadanie jest formułowane z reguły „na poziomie użytkownika”. Na przykład początkowe zadanie opracowania systemu sterowania wentylatorem może brzmieć następująco: „Włącz i wyłącz wentylator, dostosuj intensywność przepływu powietrza i zmień jego kierunek (wywiew / wywiew)”. Analiza inżynierska sprowadzi ten problem do sterowania prędkością i kierunkiem obrotów napędu wentylatora – silnika elektrycznego prądu stałego. Ponieważ moc sygnałów wyjściowych MC jest oczywiście niewystarczająca do bezpośredniego sterowania silnikiem, konieczne będzie zainstalowanie między nimi specjalnego urządzenia sterującego, generującego sygnały o wymaganej mocy, a zadanie rozwiąże MC. będzie ograniczona do zapewnienia kierowcy działań kontrolnych. Nie będziemy szczegółowo omawiać wyboru elementów sterujących mocą, czujników i urządzeń do ich interfejsu z MK. Dziś do tych celów produkowane są specjalistyczne mikroukłady, których zastosowanie jest znacznie efektywniejsze niż budowanie układu z dyskretnych elementów. Załóżmy, że zastosowany zostanie zintegrowany sterownik silnika prądu stałego LMD18200 firmy National Semiconductor. Typowy schemat jego podłączenia pokazano na ryc. 2. Zawiera mostek potężnych tranzystorów MOS, których przekątna zawiera silnik. Sterowanie sterownikiem odbywa się za pomocą trzech sygnałów logicznych. Na wejście PWM (modulacja szerokości impulsu) podawane są impulsy prostokątne, których stosunek czasu trwania do okresu powtarzania (współczynnik wypełnienia) określa prędkość obrotową silnika. Poziom logiczny sygnału na wejściu DIR (kierunek) wyznacza polaryzację napięcia podawanego do silnika, a co za tym idzie, kierunek jego obrotów. Ustawiając dziennik poziomu. 1 na wejściu BR (hamulec) silnik jest wyłączony i jeśli w tym momencie jest log na wejściu PWM. 0, obwód zasilania silnika zostanie po prostu otwarty, w przeciwnym razie przewody silnika zostaną również połączone ze sobą, co zapewni hamowanie awaryjne. Sterownik ma wbudowane dwa czujniki. Jeden z nich generuje prąd płynący z pinu CUR (prąd) i jest proporcjonalny do prądu silnika ze współczynnikiem 377 μA/A. Wyjście czujnika temperatury TF (flaga termiczna) jest dyskretne w przypadku otwartego kolektora. Przechodzi w stan dziennika. 0. jeśli kryształ sterownika nagrzeje się powyżej 145°C. Sformułujmy wymagania dla urządzenia sterującego silnikiem wentylatora, a w istocie sterownika silnika. Urządzenie sterujące musi być wyposażone w przyciski, za pomocą których operator (użytkownik) może włączyć i wyłączyć silnik, zmienić kierunek, zwiększyć i zmniejszyć jego prędkość. Musi istnieć wskazanie kierunku obrotu silnika za pomocą sygnałów świetlnych w różnych kolorach oraz alarm dźwiękowy o wypadku (przegrzanie lub przeciążenie). Po podaniu napięcia zasilającego urządzenie musi, bez włączania silnika, poczekać na komendę określającą kierunek obrotów. Jej otrzymanie należy potwierdzić sygnałem świetlnym. Po wydaniu polecenia „START” silnik musi zostać włączony i zacząć obracać się w określonym kierunku ze średnią częstotliwością (cykl pracy sygnału PWM = 0.5). Dla poleceń „WOLNIEJ” i „SZYBCIEJ” współczynnik pracy powinien odpowiednio się zmniejszać lub zwiększać, nie przekraczając wartości 0.2... 1. Komenda „STOP” powinna natychmiast zatrzymać silnik, po czym można go ponownie uruchomić wydając klawisz Komenda „START”. W przypadku przekroczenia dopuszczalnej wartości poboru prądu, co może być następstwem np. mechanicznego zablokowania wału silnika, należy go wyłączyć i włączyć przerywany sygnał dźwiękowy o częstotliwości 1000 Hz. w formie krótkich serii (czas ich trwania i przerwy pomiędzy nimi wynoszą 1 s). W przypadku przegrzania mikroukładu należy zatrzymać silnik i włączyć sygnał dźwiękowy długimi seriami (czas trwania serii i przerw wynosi 2 s). Do tego czasu alarm dźwiękowy powinien pozostać włączony. do czasu wydania przez operatora komendy STOP, przywracając urządzenie do stanu pierwotnego. Przed wydaniem takiego polecenia nie powinno ono reagować na żadne inne. Już na tym etapie należy abstrahować od szczegółów, które nie są istotne dla opracowania programu MK. Na przykład w tym przypadku nie ma to znaczenia. że obiekt sterujący (silnik) służy jako napęd wentylatora, rodzaj wentylacji (wywiewny lub nawiewny) zależy od kierunku jego obrotu, a natężenie przepływu powietrza zależy od częstotliwości. Co więcej, opracowując algorytm, można całkowicie zapomnieć o silniku i jego sterowniku, skupiając się na generowaniu sygnałów sterujących PWM. DIR, BR i przetwarzanie sygnałów z czujników CUR i TE. Analizując sformułowany problem, warto od razu zidentyfikować pewne problemy, które nieuchronnie ujawnią się w kolejnych etapach. Na przykład, czy system powinien odpowiedzieć na polecenie RUN, jeśli kierunek obrotu nie jest ustawiony? Jeśli tak. w jakim zatem kierunku w takim wypadku powinien obracać się silnik? Czy po zatrzymaniu i ponownym uruchomieniu silnika należy zachować zadaną prędkość i kierunek obrotów? A po rozwiązaniu sytuacji awaryjnej? Na wszystkie takie pytania należy odpowiedzieć jak najszybciej. Na podstawie opisu słownego sporządzane są listy sygnałów wejściowych i wyjściowych MK. Pierwsza z nich zawiera polecenia wydawane przez operatora oraz sygnały z czujników: „WYCIĄG”. "POMPOWANIE". "POCZĄTEK". "SZYBCIEJ". „WOLNIEJ”. "ZATRZYMYWAĆ SIĘ". „PRZECIĄŻENIE” (CUR). „PRZEGRZANIE” (TF). Druga zawiera sygnały sterujące dla sterownika silnika oraz wskaźniki: PWM – prędkość obrotowa. DIR - kierunek obrotów, BR - wyłącz silnik. G - włącz zieloną diodę LED. Y - włącz żółtą diodę LED. S - dźwięk. Biorąc pod uwagę powyższe, możemy wyciągnąć wstępny wniosek. czego wymaga MK. posiadający co najmniej 14 pinów do podłączenia obwodów zewnętrznych (osiem wejść i sześć wyjść). Ponieważ sygnał CUR jest analogowy, potrzebny będzie komparator, aby porównać odczyty czujnika z akceptowalną wartością i wygenerować sygnał logiczny „PRZECIĄŻENIE”. Dlatego preferowany jest MK. wyposażony w wbudowany komparator. Odpowiednia jest na przykład minimalna 18-pinowa modyfikacja serii Z86 MK. Najtańszą opcją jest mikroukład. Z86E02. To wszystko na teraz. jeśli chodzi o sprzęt urządzenia. Rozkład sygnałów wejściowych i wyjściowych na pinach MC nie jest na tym etapie znaczący. Następnie zaleca się zobrazowanie ustnie określonego algorytmu w postaci tzw. grafu maszyny skończonej. Urządzenie dyskretne uważa się za maszynę o skończonych stanach, jeśli możliwe jest wyliczenie wszystkich stanów, w jakich może się znajdować, wszystkich zdarzeń (wpływów zewnętrznych) prowadzących do zmiany stanu oraz wszystkich generowanych sygnałów wyjściowych. To właśnie urządzenia bazujące na MK. Przykład wykresu automatu pokazano na ryc. 3. Stany są reprezentowane przez węzły (wierzchołki) grafu. W tym przypadku są ich cztery: A. B. C i D. Wierzchołki połączone są łukami wyposażonymi w strzałki wskazujące kierunek przejścia, nad łukiem wskazane jest zdarzenie Xi powodujące to przejście, a poniżej znajduje się zbiór sygnałów wyjściowych Yi generowanych przez maszynę w tym momencie i niezmiennych aż do następnego przejścia. Teoretycznie z każdego wierzchołka grafu powinno wychodzić dokładnie tyle łuków. ile różnych wpływów zewnętrznych na maszynę jest możliwych. Jeśli jakieś zdarzenie nie zmieni stanu automatu, pokazany zostanie odpowiadający mu łuk wchodzący do tego samego wierzchołka, z którego wyszedł. Aby jednak nie zaśmiecać rysunku, w praktyce pozostają tylko te łuki. z którymi powiązane są zmiany sygnałów wyjściowych. Przykładowo, z wykresu pokazanego na ryc. 3. Możesz usunąć łuki A-A i B-B. W języku potocznym oznacza to, że maszyna w stanach A i B nie reaguje na zdarzenie X3. Zdarzenia mające wpływ na maszynę, realizowane w formie programu MK. są nie tylko „bezpośrednie”, spowodowane zmianami poziomów logicznych sygnałów dostarczanych na zewnętrzne piny MC, ale także „pośrednie”. Te ostatnie obejmują na przykład pewien wynik porównania obliczonych i określonych wartości określonego parametru lub zakończenie długotrwałej operacji. Granica między zdarzeniami bezpośrednimi i pośrednimi jest czasami trudna do wytyczenia. Na przykład takie powszechne zdarzenie, jak wyzwolenie timera wbudowanego w MK, można uznać za pośrednie, jeśli zostanie zarejestrowane. analizując liczbę znajdującą się w odpowiednim rejestrze lub bezpośrednio, reagując na sygnał wygenerowany przez timer na zakończenie zliczania. Sygnały wyjściowe mogą być również pośrednie, nie zmieniające bezpośrednio poziomów logicznych na wyjściach MK. Często przy przejściu pomiędzy stanami automatu przypisują one jedynie określone wartości zmiennym programowym. Wracając do omawianego problemu, zbudujmy wykres maszyny sterującej silnikiem. Analizując zadanie możemy wyróżnić następujące stany:
Skonstruowany wykres pokazano na ryc. cztery. Łatwo zauważyć, że nie da się zmienić przypadkowo ustawionego błędnego kierunku obrotów bez włączania i wyłączania silnika. Dodatkowo, aby go uruchomić, zawsze trzeba wydać dwie komendy – kierunek i start. Odmawiając wydania polecenia „START”, można wyeliminować warunek STOP2. i skieruj łuki poleceń „PUSH” i „EXTRACTION” bezpośrednio do stanu PRACA. W rezultacie na panelu sterowania będzie o jeden przycisk mniej, a jedno wejście MK zostanie zwolnione. a silnik włączy się natychmiast po naciśnięciu dowolnego przycisku ustawiającego kierunek. Ściśle rzecz biorąc, jakakolwiek zmiana danego algorytmu sterowania musi uzyskać zgodę klienta lub przyszłego użytkownika urządzenia. Jednak w praktyce amatorskiej klient, wykonawca i użytkownik to często jedna osoba i wystarczy „skonsultować się ze sobą”. Uderzające jest to, że wykres nie odzwierciedla sposobu generowania sygnału PWM przy zmiennym współczynniku wypełnienia. Generalnie można to zrobić za pomocą specjalnego urządzenia sterowanego z MK. Ale staramy się zaimplementować wszystko czysto programowo, więc będziemy musieli podzielić stan WORK na dwa. W pierwszym z nich (PRACA) PWM = 0, w drugim (PRACA 1) - PWM = 1. Teraz uwzględnimy zdarzenia powodujące przejścia między nimi - naprzemienne wyzwalanie dwóch timerów, z których jeden ustala czas trwania impulsów PWM, a drugi - przerwy między nimi, a każdy timer po uruchomieniu uruchamia drugi. Z uwagi na to, że w tym przypadku timery „logiczne” nigdy nie działają jednocześnie, można je zrealizować wykorzystując jeden timer „fizyczny”, programowo zmieniając jego opóźnienie po każdej operacji. Komendy „SZYBCIEJ” i „WOLNIEJ” regulują opóźnienia czasowe timerów, pozostawiając ich sumę niezmienioną i równą zadanemu okresowi powtarzania impulsów PWM. Maszyna może reagować na te polecenia w obu rozpatrywanych stanach. Aby jednak uprościć algorytm, dopuszczalne jest ograniczenie reakcji tylko do jednego z nich. Ze względu na krótki czas trwania tych stanów, opóźnienie wykonania pozostanie niewidoczne dla operatora. Kolejnym niezbędnym wyjaśnieniem jest sprawdzenie dopuszczalności wartości opóźnienia czasowego. W zależności od zadania cykl pracy sygnału PWM. równe T1/(T1+T0). gdzie T1 i T0 są opóźnieniami czasowymi timerów, muszą zawsze mieścić się w przedziale 0,2...1. Zatem po każdym wydaniu polecenia zmiany prędkości maszyna musi przejść w stan KONTROLA i dopiero stamtąd wrócić do PRACY stan wzdłuż jednego z dwóch łuków. Pierwszy odpowiada pozytywnemu wynikowi testu, po kliknięciu na niego ustawiane są nowe wartości czasu otwarcia migawki. Drugi - wynik jest negatywny, poprzednio obowiązujące fragmenty pozostają niezmienione. Kontynuując analizę wykresu zauważamy, że stany PRZEGRZANIE i PRZECIĄŻENIE różnią się jedynie okresem powtarzania sygnału dźwiękowego. Warto połączyć je w jedno, nazywając to WYPADKIEM. Sygnał audio S może być generowany przy użyciu dwóch timerów, podobnie jak omówiony powyżej sygnał PWM. Ponadto wskazane jest użycie tego samego „fizycznego” timera, który w tym stanie pozostaje bezczynny. Aby dźwięk był przerywany, można zastosować inny timer, ale łatwiej jest się bez niego obejść, zliczając okresy generowanego sygnału za pomocą licznika zaimplementowanego w oprogramowaniu, włączając i wyłączając sygnał wyjściowy po określonej ich liczbie. Wszystko to będzie wymagało zapewnienia dodatkowych stanów maszyny i przejść pomiędzy nimi. Opracowany wykres automatycznego sterowania silnikiem przedstawiono na ryc. 5. Należy pamiętać, że słowne stwierdzenia dotyczące wykonanych czynności zastępuje się przypisywaniem określonych wartości zmiennym. Przykładowo, zamiast wyrażenia „włącz żółtą diodę LED” wskazane jest Y = 1 i określono, że zielona dioda LED powinna być wyłączona, G = 0. Oprócz wspomnianych wcześniej sygnałów wyjściowych i opóźnień timerów, stała T to okres powtarzania impulsów PWM, a zmienna N to liczba impulsów S pozostałych do końca wygenerowanego interwału sygnału audio. Kolejnym krokiem jest konwersja wykresu na schemat blokowy algorytmu działania MK. Przede wszystkim należy ponumerować wszystkie wierzchołki grafu (stany maszyny). Kolejność numeracji jest bardzo ważna w implementacji sprzętowej maszyny. Wybierając go prawidłowo, możesz znacznie uprościć urządzenie. W przypadku implementacji oprogramowania nie ma to tak dużego znaczenia i w większości przypadków numeracja może być dowolna. Program musi udostępniać tzw. „zmienną stanu”, której podczas pracy przypisywane są wartości równe numerom aktualnych stanów. W złożonych programach może być kilka takich zmiennych. Wiele języków programowania pozwala na nadawanie wartościom liczbowym nazw symbolicznych. Można to zastosować szeroko, gdyż linia programu, w której zmiennej przypisuje się wartość RABOTA, jest znacznie wyraźniejsza niż linia przypisująca np. wartość 6. Na ryc. Na rys. 6 przedstawiono typowy schemat blokowy algorytmu sterowania w jego najbardziej ogólnej postaci. Po inicjalizacji program działa cyklicznie. Po przeanalizowaniu zmiennej stanu wykonuje w każdym cyklu odpowiednią procedurę. Zmiana stanu maszyny odzwierciedlana jest poprzez przypisanie zmiennej stanu nowej wartości, w wyniku czego w kolejnym cyklu zostanie wykonana inna procedura. Procedury realizujące każdy stan maszyny zbudowane są według schematów blokowych podobnych do tych pokazanych na rys. 7. Przede wszystkim analizowane są wpływy zewnętrzne (zdarzenia). Następnie proces dzieli się na tyle gałęzi, ile jest łuków wychodzących z odpowiedniego wierzchołka grafu automatu, każdy z nich przewiduje wykonanie funkcji niezbędnych do realizacji tego przejścia, a na koniec wartość równą numerowi wierzchołka do którego skierowany jest łuk, przypisuje się do zmiennej stanu. Możliwe jest również inne podejście: najpierw realizują łuki wchodzące w wierzchołek, a następnie reagują na wpływy. Jego główną wadą jest to, że program musi „wiedzieć”, z jakiego stanu maszyna przeszła do tego, co w poprzednim przypadku nie było wymagane. Należy pamiętać, że na rys. Rysunek 7 przedstawia dwie możliwe opcje wyjścia z procedury stanu. W pierwszym zdarzenia analizowane są cyklicznie do momentu wykrycia jednego z nich powodującego wyjście z tego stanu. W drugim - jeśli nie ma takich wpływów. procedura jest zakończona, jak pokazano linią przerywaną. Jeżeli wpływów zewnętrznych jest niewiele i reakcja na nie w każdym stanie jest specyficzna, w blokach przetwarzania stanu zawarte są procedury detekcji zdarzeń. Można np. sprawdzić, czy przycisk „START” jest wciśnięty tylko w takim stanie, w jakim maszyna powinna na to zareagować. Często procedura filtrowania zdarzeń jest umieszczana w pętli głównej (na rys. 6 jest ona pokazana linią przerywaną) i dostarczana jest zmienna, której przypisuje się wartość jednoznacznie powiązaną ze zdarzeniem, które miało miejsce. Na przykład wynikiem odpytywania klawiatury jest kod naciśniętego klawisza. W bloku przetwarzania stanu, realizowanym według drugiej z omówionych powyżej opcji, analizowana jest jedynie wartość tej zmiennej. W przeciwieństwie do modelu teoretycznego, rzeczywiste zdarzenia często zachodzą jednocześnie. W takiej sytuacji maszyna musi najpierw zareagować na zdarzenie, które ma najwyższy priorytet. Najprostszym sposobem ustalenia priorytetów jest wybranie właściwej sekwencji analizy zdarzeń. Przykładowo, zgodnie ze schematem blokowym pokazanym na ryc. 7, zdarzenie X1 ma najwyższy priorytet. najniższy dotyczy HZ. Jeśli zdarzenia o wysokim priorytecie występują znacznie częściej niż zdarzenia o niskim priorytecie, kolejka może nigdy nie dotrzeć do ostatnich. Aby tego uniknąć, należy nadać najwyższy priorytet rzadkim zdarzeniom. Czasami trzeba zmienić rozkład tych ostatnich w trakcie działania programu, np. umieszczając każde nowo przetworzone zdarzenie na końcu kolejki. Nieprzewidywalne zachowanie systemu w MK często tłumaczy się zakłóceniami lub odbijaniem styków sterujących. Takie fałszywe zdarzenia należy „odfiltrować” za pomocą filtrów programowych. Najczęściej, aby rozpoznać zdarzenie jako mające miejsce, wystarczy upewnić się, że poziom sygnału logicznego na odpowiednim wejściu MK nie zmienił się przez pewien czas. W krytycznych przypadkach stosuje się bardziej złożone procedury. Wśród wielu zdarzeń często można wyróżnić te „awaryjne”, na które trzeba natychmiast zareagować. Typowy przykład. Aby nie przegapić momentu uruchomienia timera, program musi na bieżąco sprawdzać stan swojego rejestru, nie będąc w stanie zrobić nic innego, dopóki timer nie upłynie. Sygnał żądania przerwania wygenerowany przez licznik czasu na koniec zliczania rozwiązuje problem. Po zaakceptowaniu tego. MK natychmiast (w każdym razie znacznie szybciej niż podczas normalnego przetwarzania programu tego samego zdarzenia) przystępuje do wykonania podprogramu obsługi tego przerwania, którego adres (wektor) musi być podany w specjalnie wyznaczonych komórkach pamięci programu. W zdecydowanej większości mikrokontrolerów przewidziano urządzenie obsługujące przerwania wektora priorytetu wykonywanego programu. Przerwania mogą być zewnętrzne lub wewnętrzne. W tym drugim przypadku wejście żądania przerwania nie ma wyjścia zewnętrznego, ale jest podłączone do źródła żądania zlokalizowanego bezpośrednio w chipie MK. Zazwyczaj wewnętrzne przerwania są dostarczane nie tylko z timera, ale także z innych urządzeń wbudowanych w ten MK: kontrolerów portu szeregowego, komparatorów sygnału analogowego, przetworników analogowo-cyfrowych. Często jedna z wewnętrznych zakłóceń współczesnych MK jest powiązana z tzw. Watch Dogiem, który służy do ochrony przed przypadkowymi awariami. Ten licznik czasu wymaga stałej inicjalizacja poprzez zapisanie określonego kodu w określonym miejscu w przestrzeni adresowej. Program MK jest zbudowany w taki sposób, że podczas normalnego przebiegu taka procedura jest wykonywana dość często. Jeżeli MK jest zamrożony, inicjalizacja timera watchdoga zostaje zatrzymana i po chwili wysyła żądanie przerwania, którego przetworzenie ma na celu przywrócenie normalnej pracy systemu. Zwykle reakcja na przerwanie watchdoga jest taka sama. jako sygnał zewnętrzny, który ustawia MK do stanu początkowego. Przerwania są kontrolowane poprzez włączanie lub wyłączanie ich w zależności od stanu wdrażanej maszyny. Jeżeli to samo przerwanie w różnych stanach ma zostać przetworzone w różny sposób, procedura przetwarzania jest zbudowana podobnie jak główna pętla programu, zapewniając analizę stanu. Różnica jest taka. że taka procedura nie jest zamknięta w pierścieniu. Po jego zakończeniu MK będzie kontynuował wykonywanie programu od miejsca, w którym został przerwany. Jest to obarczone awariami, ponieważ w stanie, który zmienił się w wyniku przetwarzania przerwań, kontynuowanie przerwanych działań może dać nieprawidłowy wynik. Są one chronione przed takimi błędami, zakazując przerw w wykonywaniu krytycznych odcinków przebiegu programu, które. niewątpliwie spowalnia reakcję systemu. Jeśli w systemie jest więcej źródeł żądań przerwań niż przewidzianych dla nich wejść MK, żądanie grupowe jest implementowane sprzętowo, łącząc wyjścia kilku źródeł za pomocą obwodu OR. Przyjmując taką prośbę. MK ma obowiązek dowiedzieć się, kto go wysłał i odpowiednio go przetworzyć. Cały algorytm działania urządzenia jest czasami implementowany przez zestaw procedur obsługi przerwań. W tym przypadku główna pętla rozpada się na kilka instrukcji maszynowych, aż do jednego polecenia bezwarunkowego przeskoku do siebie. Wielu MK udostępnia specjalne polecenia HALT lub IDLE, których używa. Zasadniczo przestają działać (czasami wyłącza się nawet generator zegara). Tylko przychodzące żądanie przerwania może wyprowadzić MC z tego stanu. Po zakończeniu przetwarzania żądania. Mikrokontroler wykonuje bezwarunkowe przejście na polecenie stop podane w pętli głównej i ponownie „zasypia”. Ten tryb jest bardzo ekonomiczny, ponieważ moc pobierana przez zatrzymany MK jest wielokrotnie zmniejszana, zwiększając się tylko podczas reakcji na wpływy zewnętrzne. Schemat blokowy algorytmu sterowania silnikiem wentylatora, opracowany z uwzględnieniem powyższego, składa się z dwóch części, przedstawionych na rys. 8 (cykl główny) i ryc. 9 (przetwarzanie przerwań czasowych). Obydwa odpowiadają w zasadzie typowym schematom blokowym omówionym powyżej, z tą różnicą, że łączone są te same operacje wykonywane podczas przetwarzania różnych zdarzeń. Funkcja obsługi przerwań czasowych generuje sygnały PWM i S. Przy przejściu ze stanu STOP do stanu RUN przerwanie jest włączone, a po powrocie do stanu STOP jest wyłączane. Program posiada teraz zmienną stanu ST, której dla przejrzystości przypisane są wartości łańcuchowe – nazwy odpowiednich stanów. Jak wspomniano powyżej, w programie będą to liczby - numery stanów lub ich symboliczne nazwy. Wartości przypisane zmiennej N0 dobierane są w oparciu o założenie, że okresy powtarzania generowanych impulsów PWR i S są takie same i wynoszą 1 ms. Jeśli tak nie jest. Schemat blokowy będzie musiał zostać nieco zmieniony. Teraz możesz przejść do wyboru MK, rozprowadzić sygnały wejściowe i wyjściowe na jego pinach i opracować kompletny schemat obwodu urządzenia. Po ustaleniu, do jakich obwodów zewnętrznych zostaną podłączone bity konkretnego portu wejścia/wyjścia MK oraz poziomów logicznych sygnałów w tych obwodach, programista może przystąpić do tworzenia programu. literatura
Autor: M. Gladshtein, Rybinsk Zobacz inne artykuły Sekcja Mikrokontrolery. Czytaj i pisz przydatne komentarze do tego artykułu. Najnowsze wiadomości o nauce i technologii, nowa elektronika: Hałas drogowy opóźnia rozwój piskląt
06.05.2024 Bezprzewodowy głośnik Samsung Music Frame HW-LS60D
06.05.2024 Nowy sposób kontrolowania i manipulowania sygnałami optycznymi
05.05.2024
Inne ciekawe wiadomości: ▪ Monitor Samsung U32D970Q UHD ▪ Smartfony Samsung Galaxy S6 i Galaxy S6 Edge Wiadomości o nauce i technologii, nowa elektronika
Ciekawe materiały z bezpłatnej biblioteki technicznej: ▪ sekcja witryny Film artystyczny. Wybór artykułu ▪ artykuł Substancje psychoaktywne i mechanizmy powstawania narkomanii. Podstawy bezpiecznego życia ▪ artykuł Gdzie jest jezioro, składające się z czystego płynnego asfaltu? Szczegółowa odpowiedź ▪ artykuł Słodki ogórek. Legendy, uprawa, metody aplikacji ▪ artykuł Wielopoziomowy wskaźnik napięcia. Encyklopedia elektroniki radiowej i elektrotechniki ▪ artykuł Zasilacz do chorej baterii. Encyklopedia elektroniki radiowej i elektrotechniki
Zostaw swój komentarz do tego artykułu: Wszystkie języki tej strony Strona główna | biblioteka | Artykuły | Mapa stony | Recenzje witryn www.diagram.com.ua |