Kontrolery Avr. AVR – co to jest? Przypisanie automatycznego wpisu rezerwy. Jak działa AVR?
Źródła dostaw energii elektrycznej nie są całkowicie niezawodne i czasami wyłączają się, co ma negatywny wpływ na towary konsumpcyjne. Jest to niedopuszczalne w przypadku urządzeń krytycznych, dlatego zasilane są one z dwóch lub większej liczby dodatkowych źródeł. Do ich podłączenia wykorzystywane są urządzenia ATS. Co to jest, wyjaśnia dekodowanie skrótu - „automatyczne wprowadzanie rezerwy”. Jest to sposób na zapewnienie nieprzerwanego zasilania odbiornika z dwoma lub większą liczbą wejść zasilania. Zapewnia to automatyczne podłączenie wejścia zapasowego w przypadku utraty głównego.
Obydwa zasilacze można podłączyć jednocześnie. Wadami tej metody są wysokie prądy zwarciowe, duże straty i złożoność zabezpieczeń sieci. Rezerwę wprowadza się zwykle za pomocą urządzenia przełączającego, które wyłącza główne źródło zasilania. Rezerwa mocy musi odpowiadać obciążeniom. Jeśli to nie wystarczy, podłączani są tylko najważniejsi odbiorcy.
Wymagania dla ATS
- Szybkie wprowadzenie rezerwy po zadziałaniu
- Włącza się w każdym przypadku awarii zasilania, z wyjątkiem zwarć.
- Brak reakcji na spadek napięcia podczas uruchamiania dużych obciążeń u odbiorcy.
- Operacja jednorazowa.
Klasyfikacja
Urządzenia dzielimy ze względu na zasadę działania.
- Jednostronny. Obwód składa się z dwóch sekcji: zasilającej i rezerwowej. Ten ostatni jest podłączony w przypadku utraty napięcia głównego.
- Dwustronna. Dowolna z linii może pracować lub zastępować.
- Odzyskiwalne AVR. Po przywróceniu zasilania głównego następuje automatyczne uruchomienie poprzedniego obwodu i wyłączenie obwodu rezerwowego.
- Brak automatycznego odzyskiwania. Tryb pracy z głównym źródłem prądu konfiguruje się ręcznie.
Zasada działania AVR
W sieciach niskiego napięcia wygodnie jest stosować specjalne przekaźniki kontrolujące napięcie w obwodach zabezpieczających (obwody ATS itp.). Preferowany jest tutaj ATS, ponieważ nie wszystkie urządzenia wytrzymują częste przełączanie zasilania. Jak wygląda AVR? Co to jest i jak to działa? To urządzenie jest wyraźnie widoczne na każdym prostym schemacie.
- Przekaźnik EL-11 steruje napięciem trójfazowym, monitoruje asymetrię faz, przerwanie i zmienność.
- Do łączenia obciążeń służą przekaźniki elektromagnetyczne z mocnymi stykami. W trybie normalnym zasilana jest z niego główna cewka wejściowa, która za pomocą styków KM 1 łączy zasilanie z obciążeniem.
- W przypadku zaniku napięcia w obwodzie głównym przekaźnik KM 1 zostaje wyłączony i podawane jest napięcie na cewkę przekaźnika KM 2, która łączy wejście rezerwowe.
Ten obwód ATS można stosować w domach prywatnych, budynkach przemysłowych i administracyjnych, gdzie przełączane obciążenie osiąga dziesiątki kilowatów. Wadą tego schematu jest złożoność wyboru przekaźnika dla wysokich prądów. Nadal nadaje się do przełączania odbiorników małej mocy, ale w przypadku dużych obciążeń lepiej jest użyć rozrusznika lub triaka ATS.
Niezbędnymi źródłami dodatkowej mocy są benzyny lub te ostatnie są powszechnie stosowane ze względu na swoją wydajność i większą moc. Na rynku dostępna jest szeroka gama systemów zabezpieczeń przed wysokimi przeciążeniami.
Obsługa AVR-a
Jak działa AVR? Jaki jest stopień niezawodności dostaw energii elektrycznej do odbiorców? Urządzenia są podzielone na 3 kategorie. Zaopatrzenie mieszkań w energię elektryczną należy do najniższych. Jeśli często występują awarie zasilania, lepiej zainstalować w domu rezerwę, ponieważ od tego zależy trwałość urządzeń gospodarstwa domowego, a także komfortowe warunki życia. Systemy zasilania awaryjnego instalowane są w mieszkaniach na bateriach, które wykorzystywane są głównie w sprzęcie elektronicznym. Generatory są najczęściej stosowane jako zapasowe źródła zasilania w domach prywatnych.
W najprostszej formie generator benzynowy jest podłączony do zasilania domu za pomocą przełącznika. Zapobiega to zwarciu w przypadku nieprawidłowego wpisania rezerwy, gdy automatyczne zasilanie domu nie zostanie wyłączone. Przełącznik wybiera się z trzema pozycjami, przy czym środkowa całkowicie odcina prąd.
Możesz samodzielnie zainstalować ATS w trybie automatycznym, jeśli wyposażysz generator w automatyczne urządzenie rozruchowe i sterujesz nim z szafy za pomocą styczników, które również przełączają wejścia. Automatyka działa w oparciu o sterowanie mikroprocesorowe np. na sterownikach przekaźnikowych Easy. Czujniki napięcia służą do wprowadzania rezerwy ATS. Gdy tylko zasilanie zostanie wyłączone, silnik generatora uruchamia się natychmiast. Osiągnięcie trybu pracy zajmuje trochę czasu, po czym SZR przełącza obciążenie na rezerwę. Takie opóźnienia są akceptowalne dla potrzeb krajowych.
Automatyczny moduł rozruchu generatora (BAZG)
AVR to system dla domu prywatnego, który zapewnia uruchomienie i sterowanie generatorem rezerwowym w przypadku awarii zasilania. Ten ostatni wyposażony jest w specjalną jednostkę BAZG, która jest niedrogim rozwiązaniem w przypadku awarii zasilania w sieci głównej. Wykonuje pięć prób uruchomienia w ciągu 5 sekund w każdym odstępie czasu po zaniku głównego napięcia wejściowego. Dodatkowo steruje przepustnicą powietrza zamykając ją w momencie uruchomienia.
Jeżeli na wejściu głównym ponownie pojawi się napięcie, urządzenie ponownie przełączy obciążenie i zatrzyma silnik generatora. Gdy generator jest na biegu jałowym, dopływ paliwa jest odcinany przez zawór elektromagnetyczny.
Cechy AVR prywatnego domu
Najpopularniejszą metodą jest użycie dwóch wejść, przy czym pierwsze ma pierwszeństwo. Po podłączeniu do sieci obciążenia domowe działają głównie na jednej fazie. Jeśli zniknie, nie zawsze wygodnie jest podłączyć generator. Wystarczy podłączyć kolejną linię jako rezerwową. W przypadku wejścia trójfazowego moc jest kontrolowana przez przekaźnik na każdej fazie. Gdy napięcie wyjdzie poza normalny zakres, stycznik fazowy zostanie wyłączony, a dom będzie zasilany z dwóch pozostałych faz. W przypadku awarii innej linii całe obciążenie zostaje rozdzielone na jedną fazę.
W przypadku małego domku lub daczy stosuje się agregat prądotwórczy z silnikiem wysokoprężnym o mocy nie większej niż 10 kW dla panelu pracującego przy mocy 25 kW. Taki generator wystarczy, aby zapewnić domowi niezbędne minimum energii elektrycznej na krótki czas. W przypadku wystąpienia sytuacji awaryjnej przekaźnik kontroli napięcia przełącza magistralę odbiorczą na zasilanie rezerwowe i wysyła sygnał do uruchomienia agregatu prądotwórczego na olej napędowy. Po przywróceniu głównego zasilania przekaźnik przełącza się na niego, po czym generator zatrzymuje się.
Rozszerzenie funkcji ATS
Do sterowania wybranymi algorytmami wykorzystywane są programowalne sterowniki logiczne (PLC). Zawierają już program ATS, który należy jedynie skonfigurować w celu wdrożenia tego lub innego trybu pracy. Zastosowanie sterownika PLC, np. sterownika AC500, pozwala na uproszczenie obwodów elektrycznych, choć na pierwszy rzut oka urządzenie wydaje się skomplikowane. Sterowanie SZR może być umieszczone na drzwiach rozdzielnicy w postaci zestawu przełączników, przycisków i wskaźników.
Standardowe rozwiązanie zawiera już oprogramowanie. Jest on zainstalowany w sterowniku PLC.
Wniosek
Awarie zasilania mogą prowadzić do różnych negatywnych zjawisk dla konsumentów. Większość użytkowników ma jedynie mgliste pojęcie o ATS. Wiele osób nawet nie wie co to jest i myli je z urządzeniem przeznaczonym do zupełnie innych celów. Ze względu na wysokie koszty sprzętu elektrycznego ważny jest wybór odpowiedniego automatycznego przełącznika zasilania. Będzie to wymagało specjalistycznej porady. ATS pozwala poprawić wydajność urządzeń gospodarstwa domowego i obiektów, dla których ważne jest stałe zasilanie.
Mikrokontrolery (zwane dalej MK) mocno wkroczyły w nasze życie, w Internecie można znaleźć wiele ciekawych obwodów wykonywanych na MK. Czego nie można zamontować na MK: różne wskaźniki, woltomierze, sprzęt gospodarstwa domowego (urządzenia zabezpieczające, urządzenia przełączające, termometry...), wykrywacze metali, różne zabawki, roboty itp. Lista może zająć bardzo dużo czasu. Pierwszy obwód mikrokontrolera zobaczyłem 5-6 lat temu w czasopiśmie radiowym i niemal natychmiast przewróciłem stronę, myśląc sobie: „Nadal nie dam rady tego złożyć”. Rzeczywiście, w tamtym czasie MK były dla mnie bardzo skomplikowanym i niezrozumiałym urządzeniem, nie miałem pojęcia, jak działają, jak je flashować i co z nimi zrobić w przypadku nieprawidłowego oprogramowania. Ale około rok temu po raz pierwszy zmontowałem swój pierwszy obwód na MK; był to obwód woltomierza cyfrowego oparty na wskaźnikach 7-segmentowych i mikrokontrolerze ATmega8. Tak się złożyło, że przez przypadek kupiłem mikrokontroler, kiedy stałem w dziale podzespołów radiowych, facet przede mną kupował MK, i ja też zdecydowałem się go kupić i spróbować coś złożyć. W moich artykułach opowiem Ci o Mikrokontrolery AVR, nauczę Cię jak z nimi pracować, przyjrzymy się programom do oprogramowania, stworzymy prosty i niezawodny programator, przyjrzymy się procesowi oprogramowania i, co najważniejsze, problemom, które mogą się pojawić, nie tylko dla początkujących.
Podstawowe parametry niektórych mikrokontrolerów rodziny AVR:
Mikrokontroler |
Pamięć flash |
pamięć RAM |
Pamięć EEPROM |
Porty we/wy |
Moc |
|
Dodatkowe parametry AVR mega MK:
Temperatura pracy: -55…+125*С
Temperatura przechowywania: -65…+150*С
Napięcie na pinie RESET względem masy: max 13V
Maksymalne napięcie zasilania: 6,0 V
Maksymalny prąd linii we/wy: 40 mA
Maksymalny prąd zasilania VCC i GND: 200mA
Pinouty modelu ATmega 8X
Pinouty dla modeli ATmega48x, 88x, 168x
Układ pinów dla modeli ATmega8515x
Układ pinów dla modeli ATmega8535x
Układ pinów dla modeli ATmega16, 32x
Układ pinów dla modeli ATtiny2313
Na końcu artykułu załączono archiwum z arkuszami danych niektórych mikrokontrolerów.
Bity FUSE instalacyjne MK AVR
Pamiętaj, że zaprogramowany bezpiecznik to 0, niezaprogramowany to 1. Należy zachować ostrożność podczas ustawiania bezpieczników, gdyż źle zaprogramowany bezpiecznik może spowodować zablokowanie mikrokontrolera. Jeśli nie jesteś pewien, który bezpiecznik chcesz zaprogramować, lepiej za pierwszym razem flashować MK bez bezpieczników.
Najpopularniejszymi mikrokontrolerami wśród radioamatorów są ATmega8, w dalszej kolejności ATmega48, 16, 32, ATtiny2313 i inne. Mikrokontrolery sprzedawane są w pakietach TQFP i DIP, dla początkujących polecam zakup w DIP. Jeśli kupisz TQFP, trudniej będzie je flashować; będziesz musiał kupić lub przylutować płytkę, ponieważ ich nogi znajdują się bardzo blisko siebie. Radzę instalować mikrokontrolery w pakietach DIP na specjalnych gniazdach, jest to wygodne i praktyczne, nie trzeba wylutowywać MK, jeśli chcesz go przeflashować lub wykorzystać do innego projektu.
Prawie wszystkie nowoczesne MK mają możliwość programowania w obwodzie ISP, tj. Jeśli Twój mikrokontroler jest wlutowany do płytki, to w celu zmiany oprogramowania nie będziemy musieli wylutowywać go z płytki.
Do programowania służy 6 pinów:
RESETOWANIE- Zaloguj się MK
VCC- Plus zasilanie, 3-5V, w zależności od MK
GND- Przewód wspólny, minus moc.
MOSI- wejście MK (sygnał informacyjny w MK)
MISO- wyjście MK (sygnał informacyjny z MK)
SCK- wejście MK (sygnał zegarowy w MK)
Czasami używają także pinów XTAL 1 i XTAL2; do tych pinów podłączony jest kwarc, jeśli MK jest zasilany przez zewnętrzny oscylator; w ATmega 64 i 128 piny MOSI i MISO nie są używane do programowania ISP; zamiast tego piny MOSI są podłączony do pinu PE0, a MISO do pinu PE1. Podłączając mikrokontroler do programatora, przewody łączące powinny być jak najkrótsze, a kabel biegnący od programatora do portu LPT również nie powinien być zbyt długi.
Oznaczenie mikrokontrolera może zawierać dziwne litery z cyframi, np. Atmega 8L 16PU, 8 16AU, 8A PU itp. Litera L oznacza, że MK pracuje na niższym napięciu niż MK bez litery L, zwykle 2,7V. Liczby po myślniku lub spacji 16PU lub 8AU wskazują częstotliwość wewnętrzną generatora znajdującego się w MK. Jeżeli bezpieczniki są ustawione na pracę z zewnętrznego kwarcu, kwarc należy ustawić na częstotliwość nie przekraczającą maksymalnej zgodnie z arkuszem danych, jest to 20 MHz dla ATmega48/88/168 i 16 MHz dla innych atmegas.
Załóżmy, że otrzymałeś zadanie - sprawić, by dioda LED zaczęła migać.
Porozmawiajmy o tym, jak rozwiązać ten problem:
Opcja 1 jest najprostsza, weź przełącznik/przycisk, umieść obok niego niewolnika, który będzie włączał/wyłączał diodę LED za pomocą przełącznika. Zwykle w Rosji większość problemów rozwiązuje się w ten sposób. A co miga?)))
Opcja 2 - zmontuj multiwibrator. Już bardziej interesujące. Do mrugnięcia jedna dioda jest całkiem dobrym rozwiązaniem. Ponadto jest prosty, tani i niezawodny.
Opcja 3 - montaż na mikrokontrolerze. Droższe niż montaż multiwibratora, ale moim zdaniem łatwiejsze. Napisałem program, uruchomiłem go i otrzymałem wynik. Brak konfiguracji. Oczywiście jest to przypadek idealny.
Teraz skomplikujmy zadanie. Przykładowo 5 diod LED i 5 opcji ich migania (zmienia się prędkość i kolejność migania). Pierwsza opcja natychmiast znika, można wykonać metodę 2, ale rozmiar urządzenia gwałtownie wzrośnie. Opcja 3 pozostanie mniej więcej tego samego rozmiaru, wystarczy dodać kilka linii kodu. Dlatego są różne przypadki, w których jest to niemożliwe bez mikrokontrolera, i w których jest to zbędne. Dlatego zawsze oszacuj koszty pracy, czas i koszty finansowe.
Mikrokontroler pozwala więc elastycznie zarządzać systemami, procesami itp., ma niewielkie wymiary, a pod względem funkcjonalności jest minikomputerem. Mikrokontrolery są produkowane przez różne firmy. Jedna z odmian mikrokontrolerów AVR firmy Atmel. Dlaczego oni? Można je dość łatwo znaleźć w sklepie, łatwo znaleźć przykłady gotowego kodu, wbudowana funkcjonalność pozwala na rozwiązywanie nawet skomplikowanych problemów.
Aby mikrokontroler zrozumiał, czego od niego oczekujemy, musimy wgrać do niego firmware – sekwencję czynności, które musi wykonać. Oprogramowanie układowe to ciąg jedynek i zer. Aby było to wygodniejsze, wymyślono języki programowania. Przykładowo piszemy turn on, a kompilator sam konwertuje to na ciąg jedynek i zer zrozumiały dla mikrokontrolera. Rysunek przedstawia oprogramowanie sprzętowe HEX po otwarciu go za pomocą notatnika.
Mikrokontrolery są zwykle programowane w języku C lub asemblerze. W zasadzie nie ma różnicy w tym, o czym pisać. Ze względu na dużą liczbę gotowych przykładów zdecydowałem się na C. Ponadto istnieje kilka programów, które umożliwiają pisanie w języku C. Na przykład bezpłatne, markowe AVR Studio, CodeVision, WinAVR itp. Mimo że piszę w CodeVision, bardzo aktywnie wykorzystuję AVR Studio jako debugger.
Mam nadzieję, że przynajmniej część z tego stała się dla Ciebie jasna. Moim zdaniem najtrudniej jest zrobić pierwszy krok. Ten, kto to zrobi, pokona swój strach i lenistwo, z pewnością osiągnie rezultaty. Powodzenia w nauce mikrokontrolerów.
Wszystko do nauki i praktycznego programowania mikrokontrolerów AVR: literatura, oprogramowanie, obwody, projekty
Dzień dobry, drodzy radioamatorzy!
Witamy na stronie internetowej „”
Ta część serwisu jest poświęcona mikrokontrolery. Ze względu na osobiste preferencje (i nie tylko) główny nacisk zostanie położony na amatorskie urządzenia radiowe z mikrokontrolerami Rodzina AVR Tiny i Mega od ATMEL-a. Choć mikrokontrolery ATMEL nie są najpopularniejsze, posiadają kilka istotnych zalet, które wyróżniają je na tle innych mikrokontrolerów. Ponadto rodzina mikrokontrolerów AVR, ze względu na prostotę i uniwersalność urządzeń, ciągłość struktury dla różnych typów sterowników oraz prostotę konstrukcji obwodów, doskonale nadaje się dla początkujących radioamatorów. W przyszłości na stronie planowane jest opublikowanie serii artykułów skierowanych głównie do początkujących radioamatorów, zawierających szczegółowe badanie struktury i cech obwodów mikrokontrolerów AVR z rodzin Tiny i Mega, wykorzystanie ich głównych możliwości i programowanie w asemblerze.
Mikrokontrolery jednoukładowe są szeroko stosowane w wielu różnych obszarach: od przyrządów pomiarowych, aparatów fotograficznych i kamer wideo, drukarek, skanerów i kopiarek po produkty elektronicznej rozrywki i wszelkiego rodzaju sprzęt AGD.
Od czasu wprowadzenia pierwszych mikroprocesorów w latach 70. XX wieku ich złożoność stale wzrasta wraz z wprowadzaniem nowych rozwiązań sprzętowych i dodawaniem nowych instrukcji mających na celu rozwiązywanie nowych problemów. W ten sposób stopniowo rozwijała się architektura, która później otrzymała nazwę CISC (Complete Order Set Computers – komputery ze złożonym zestawem instrukcji). Następnie wyłonił się inny kierunek, który aktywnie się rozwijał: architektura RISC (Computers o zmniejszonym zestawie instrukcji - komputery ze zredukowanym zestawem instrukcji). To właśnie tej architekturze obejmują mikrokontrolery AVR firmy Atmel i PIC firmy Microchip, którym poświęcona jest ta książka.
Główną zaletą procesorów RISC jest to, że są proste, wykonują ograniczony zestaw instrukcji, a co za tym idzie, są bardzo szybkie. Zmniejsza to koszt i złożoność ich programowania.
Minusem architektury RISC była konieczność tworzenia dodatkowych instrukcji w języku asemblera, które są zaimplementowane sprzętowo dla urządzeń CISC. Przykładowo, zamiast po prostu wywołać instrukcję dzielenia, co jest typowe dla urządzeń CISC, projektant zajmujący się procesorem RISC musi zastosować kilka instrukcji odejmowania sekwencyjnego. Jednak tę wadę z nawiązką rekompensuje cena i szybkość urządzeń RISC. Ponadto, jeśli tworzysz programy w C, takie problemy przestają mieć w ogóle jakiekolwiek znaczenie dla programisty, ponieważ rozwiązuje je kompilator, który automatycznie generuje cały brakujący kod asemblera.
U zarania mikroprocesorów tworzenie oprogramowania odbywało się wyłącznie w tym lub innym języku asemblera skupionym na konkretnym urządzeniu. W istocie takie języki były symbolicznymi mnemonikami odpowiednich kodów maszynowych, a tłumaczenie mnemoników na kod maszynowy zostało wykonane przez tłumacza. Jednak główną wadą języków asemblera jest to, że każdy z nich jest powiązany z konkretnym typem urządzenia i logiką jego działania. Poza tym asembler jest trudny do nauczenia, co wymaga sporo wysiłku, aby się go nauczyć, co zresztą okazuje się zmarnowane, jeśli później trzeba będzie przejść na mikrokontrolery innych producentów.
Język C, będący językiem wysokiego poziomu, pozbawiony jest takich mankamentów i można nim zaprogramować dowolny mikroprocesor, dla którego istnieje kompilator C. W języku C wszystkie operacje niskiego poziomu wykonywane przez komputery przedstawiane są w postaci abstrakcyjnych konstrukcji, pozwalając programistom skoncentrować się na programowaniu tylko jednej logiki, nie martwiąc się o kod maszynowy. Kiedy już nauczysz się języka C, będziesz mógł łatwo przechodzić z jednej rodziny mikrokontrolerów do drugiej, poświęcając znacznie mniej czasu na rozwój.
Architektura mikrokontrolera AVR i PIC
Ogólnie rzecz biorąc, wszystkie mikrokontrolery są zbudowane według tego samego schematu. Układ sterujący składający się z licznika programu i układu dekodującego wykonuje instrukcje odczytu i dekodowania z pamięci programu, a urządzenie operacyjne odpowiada za wykonywanie operacji arytmetycznych i logicznych; Interfejs I/O umożliwia wymianę danych z urządzeniami peryferyjnymi; i wreszcie musisz mieć urządzenie pamięci masowej do przechowywania programów i danych (ryc. 1.1).
Ryż. 1.1. Uogólniona struktura mikrokontrolera
Rozważymy mikrokontrolery ogólnie, bez wiązania się z żadnym konkretnym typem mikrokontrolerów AVR, dlatego poniżej rozważymy jedynie cechy architektury pamięci wspólne dla większości mikrokontrolerów, kwestie wejścia/wyjścia, obsługę przerwań, resetowanie itp.
Pamięć mikrokontrolera AVR
W mikrokontrolerach AVR pamięć jest realizowana zgodnie z architekturą Harvarda, co zakłada oddzielenie pamięci instrukcji i danych. Oznacza to, że dostęp do poleceń jest niezależny od dostępu do danych. Zaletą tej organizacji jest zwiększenie szybkości dostępu do pamięci.
Pamięć danych
Pamięć danych przeznaczona jest do zapisu/odczytu danych wykorzystywanych przez programy. Jest niestabilny, co oznacza, że jeśli zasilanie mikrokontrolera zostanie wyłączone, wszystkie zapisane w nim dane zostaną utracone. W mikrokontrolerach AVR pamięć danych ma bardziej rozwiniętą strukturę w porównaniu do mikrokontrolerów PIC, co pokazano na rys. 2.1.
Ryż. 2.1. Struktura pamięci danych w mikrokontrolerach AVR i PIC
Obszar SRAM (Static Random Access Memory) jest pokazany na ryc. 2.1 jest kropkowany, ponieważ nie jest używany przez wszystkie mikrokontrolery AVR (dotyczy to zarówno wewnętrznej, jak i zewnętrznej pamięci SRAM). Jego adres początkowy to 0x060, a górny adres różni się w zależności od urządzenia.
W niektórych mikrokontrolerach AVR można zwiększyć przestrzeń pamięci SRAM, podłączając zewnętrzne bloki pamięci do 64 KB, wymaga to jednak poświęcenia portów A i C, które w tym przypadku służą do przesyłania danych i adresów.
Rejestry ogólnego przeznaczenia
Obszar rejestrów ogólnego przeznaczenia (rejestry robocze) przeznaczony jest do tymczasowego przechowywania zmiennych i wskaźników wykorzystywanych przez procesor do wykonywania programów. W mikrokontrolerach AVR składa się z 32 rejestrów ośmiobitowych (zakres adresów 0x000 - 0x01F). W mikrokontrolerach PIC rejestry ogólnego przeznaczenia są również ośmiobitowe, ale ich liczba i zakres adresów zależą od konkretnego typu urządzenia.
W programach napisanych w C bezpośredni dostęp do rejestrów ogólnego przeznaczenia zwykle nie jest konieczny, chyba że używany jest kod języka asemblerowego.
Rejestry funkcji specjalnych mikrokontrolera PIC
Rejestry funkcji specjalnych są używane w mikrokontrolerach PIC do sterowania różnymi operacjami. Podobnie jak w przypadku rejestrów ogólnego przeznaczenia, ich liczba i adresowanie różnią się w zależności od urządzenia. W programach napisanych w C bezpośredni dostęp do rejestrów funkcji specjalnych zwykle nie jest wymagany, chyba że używane są fragmenty języka asemblerowego.
Obszar we/wy mikrokontrolerów AVR
Obszar I/O mikrokontrolerów AVR zawiera 64 rejestry służące do sterowania lub przechowywania danych z urządzeń peryferyjnych. Dostęp do każdego z tych rejestrów można uzyskać poprzez adres I/O (zaczynając od 0x000) lub poprzez adres SRAM (w takim przypadku do adresu I/O należy dodać 0x020). Programy C zazwyczaj używają konwencjonalnych nazw rejestrów we/wy, a adresy mają znaczenie tylko dla programów w języku asemblera.
Nazwy, adresy I/O i SRAM oraz krótki opis rejestrów z obszaru I/O mikrokontrolerów AVR przedstawiono w tabeli. 2.1. Należy zaznaczyć, że w różnych modelach mikrokontrolerów część z wymienionych rejestrów nie jest wykorzystywana, a adresy nie są wymienione w tabeli. 2.1 są zastrzeżone przez firmę Atmel do wykorzystania w przyszłości.
Tabela 2.1. Opis rejestrów z obszaru I/O
Zarejestruj nazwę | Adres we/wy | Adres SRAM | Opis | |
ACSR | 0x08 | 0x28 | Kontrola komparatora analogowego i rejestr stanu | |
UBRR | 0x09 | 0x29 | Rejestr szybkości transmisji UART | |
UCR | 0x0A | 0x2A | Rejestr sterujący transceivera UART | |
USR | 0x0V | 0x2V | Rejestr stanu transceivera UART | |
UDR | 0х0С | 0x2С | Rejestr danych nadajnika-odbiornika UART | |
SPCR | 0x0D | 0x2D | Rejestr kontrolny interfejsu SPI | |
SPSR | 0x0E | 0x2E | Rejestr stanu interfejsu SPI | |
SPDR | 0x0F | 0x2F | Rejestr we/wy danych SPI | |
PIND | 0x10 | 0x30 | Styki portu D | |
DDRD | 0x11 | 0x31 | Rejestr kierunku danych portu D | |
PORTD | 0x12 | 0x32 | Rejestr danych portu D | |
PINK | 0x13 | 0x33 | Piny portu C | |
DDRC | 0x14 | 0x34 | Rejestr kierunku danych portu C | |
PORTC | 0x15 | 0x35 | Rejestr danych portu C | |
PINB | 0x16 | 0x36 | Styki portu B | |
DDRB | 0x17 | 0x37 | Rejestr kierunku danych portu B | |
PORTB | 0x18 | 0x38 | Rejestr danych portu B | |
PINA | 0x19 | 0x39 | Kołki portu A | |
DDR | 0x1A | 0x3A | Rejestr kierunku danych portu A | |
PORTA | 0x1V | 0x3V | Rejestr danych portu A | |
EKG | 0x1С | 0x3С | Rejestr sterujący pamięcią EEPROM | |
EEDR | 0x1D | 0x3D | Rejestr danych EEPROM | |
EEARL | 0x1E | 0x3E | Rejestr adresów pamięci EEPROM (młodszy bajt) | |
EEARH | 0x1F | 0x3F | Rejestr adresowy pamięci EEPROM (starszy bajt) | |
WDTCR | 0x21 | 0x41 | Rejestr kontrolny timera Watchdog | |
ICR1L | 0x24 | 0x44 | ||
ICR1H | 0x25 | 0x45 | Rejestr przechwytujący timera/licznika T/C1 (młodszy bajt) | |
OCR1BL | 0x28 | 0x48 | Rejestr porównawczy B timera T/C1 (młodszy bajt) | |
OCR1BH | 0x29 | 0x49 | Rejestr porównawczy B timera T/C1 (starszy bajt) | |
OCR1AL | 0x2A | 0x4A | Rejestr porównawczy A timera T/C1 (młodszy bajt) | |
OCR1AH | 0x2V | 0x4V | Rejestr porównawczy A timera T/C1 (starszy bajt) | |
TCNT1L | 0x2С | 0х4С | Rejestr zliczający timera/licznika T/C1 (młodszy bajt) | |
TCNT1H | 0x2D | 0x4D | Rejestr zliczający timera/licznika T/C1 (starszy bajt) | |
TCCR1B | 0x2E | 0x4E | Rejestr kontrolny B timera/licznika T/C1 | |
TCCR1A | 0x2F | 0x4F | Rejestr kontrolny A timera/licznika T/C1 | |
TCNT0 | 0x32 | 0x52 | Rejestr zliczający timera/licznika T/C0 | |
TCCR0 | 0x33 | 0x53 | Rejestr sterujący timerem/licznikiem T/C0 | |
MCUCR | 0x35 | 0x55 | Rejestr sterujący mikrokontrolera | |
TIFR | 0x38 | 0x58 | Rejestr flag przerwań timera/licznika | |
TIMSK | 0x39 | 0x59 | Rejestr maskowania przerwań czasowych | |
GIFR | 0x3A | 0x5A | Ogólny rejestr flag przerwań | |
GIMSK | 0x3V | 0x5V | Ogólny rejestr maskowania przerwań | |
SPL | 0x3D | 0x5D | Wskaźnik stosu (młodszy bajt) | |
SPH | 0x3E | 0x5E | Wskaźnik stosu (starszy bajt) | |
SREG | 0x3F | 0x5F | Rejestr stanu |
Rejestr stanu SREG mikrokontrolerów AVR
Rejestr stanu zawiera flagi stanu mikrokontrolerów AVR i znajduje się w obszarze we/wy pod adresem $3F (adres SRAM to $5F). Po podaniu sygnału resetowania jest on inicjowany do zer.