Programowanie mikrokontrolerów 2.0



Podobne dokumenty
Programowanie mikrokontrolerów 2.0

Programowanie mikrokontrolerów 2.0

3.2. Zegar/kalendarz z pamięcią statyczną RAM 256 x 8

Układy czasowo-licznikowe w systemach mikroprocesorowych

Układy czasowo-licznikowe w systemach mikroprocesorowych

Wbudowane układy peryferyjne cz. 2 Wykład 8

Hardware mikrokontrolera X51

MARM. Laboratorium 1 system zegarów, porty wejścia/wyjścia. M. Suchenek

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Układy czasowo-licznikowe w systemach 80x86

MSP430 w przykładach (2)

STM32 dla początkujących (i nie tylko)

WYKORZYSTANIE WEWNĘTRZNYCH GENERATORÓW RC DO TAKTOWANIA MIKROKONTROLERÓW AVR

Mikrokontroler ATmega32. System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe

STM32 tryby obniżonego poboru mocy (2)

Programowanie mikrokontrolerów 2.0

Programowanie mikrokontrolerów 2.0

INSTRUKCJA OBSŁUGI SYSTEM PRZYWOŁAWCZY KALER ZEGAREK GEN-700 TOUCH

Kasa fiskalna "TURKUS" Blok funkcji dostępnych dla Serwisu.

Wbudowane układy peryferyjne cz. 1 Wykład 7

Instrukcja obsługi programowalnego zegara cyfrowego

Programowanie mikrokontrolerów. 3 stycznia 2008

2. Architektura mikrokontrolerów PIC16F8x... 13

Synchronizowanie czasu kontrolera PACSystems do urządzeń HMI

ZAPRASZAMY NA NASZE AUKCJE SCIGANY81 (c) Copyright

Programowany układ czasowy

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1

Radiobudzik FM SoundMaster FUR

Moduł temperatury TMB-880EXF Nr produktu

INDU-22. Przemysłowy Sterownik Mikroprocesorowy. Przeznaczenie. masownica próżniowa

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Zewnętrzne układy peryferyjne cz. 1 Wykład 12

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Wstęp Architektura... 13

2. PORTY WEJŚCIA/WYJŚCIA (I/O)

WEJŚCIE W TRYB PROGRAMOWANIA

Budzik radiowy Eurochron

Krokomierz z czujnikiem 3D, Oregon Scientific PE-200, zintegrowany zegar, kalendarz

Programowanie mikrokontrolerów. 8 listopada 2007

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

ĆWICZENIE 7. Wprowadzenie do funkcji specjalnych sterownika LOGO!

Temat: Projektowanie i badanie liczników synchronicznych i asynchronicznych. Wstęp:

Programowanie mikrokontrolerów 2.0

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

ATS1170 Stacja zazbrajania dla jednych drzwi Instrukcja programowania

Programowany układ czasowy APSC

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

Radio kuchenne Soundmaster DAB 2035, FM, RDS, srebrne

Programowanie mikrokontrolerów

INSTRUKCJA OBSŁUGI. Przekaźnik czasowy ETM ELEKTROTECH Dzierżoniów. 1. Zastosowanie

Porty GPIO w mikrokontrolerach STM32F3

Wyłącznik czasowy GAO EMT757

Układy zegarowe w systemie mikroprocesorowym

Instrukcja ST-226/ST-288

Programowanie w językach asemblera i C

ODBIORNIK JEDNOKANAŁOWY AURA 1CF T

PODRĘCZNIK OBSŁUGI CR-421

Urządzenia do bezprzerwowego zasilania UPS CES GX. 1.5 kva. Wersja U/CES_GX_1.5/F/v01. Konfiguracja parametrów pracy UPS przy pomocy klawiatury

Urządzenia do bezprzerwowego zasilania UPS CES GX. 6 kva. Wersja U/CES_GX_6.0/F/v01. Konfiguracja parametrów pracy UPS przy pomocy klawiatury

Opis procedur asemblera AVR

Programator czasowy Nr produktu

3. Wyświetlacz LCD. 4. Przycisk [TIME]

EV Termostat cyfrowy do urządzeń chłodniczych

Programowanie mikrokontrolerów. 5 grudnia 2007

Interfejs analogowy LDN-...-AN

Mikrokontrolery ARM. Elektroniczny zegar / budzik / kalendarz z wyświetlaczem NIXIE. Opis projektu

Oznaczenie poszczególnych części.

Metody obsługi zdarzeń

Dokumentacja sterownika mikroprocesorowego "MIKSTER MCC 026"

SCIGANY81 (c) Copyright

Wbudowane układy komunikacyjne cz. 1 Wykład 10

Przerwania, polling, timery - wykład 9

DEKODER FUNKCJI SPECJALNYCH

Architektura Systemów Komputerowych. Bezpośredni dostęp do pamięci Realizacja zależności czasowych

Kod produktu: MP01611-ZK

Multi-CZUJNIK 68. Programowany Multi-CZUJNIK zawierający czujnik. położenia, uderzenia i spadku napięcia.

Kod produktu: MP01611

Mikroprocesory i Mikrosterowniki Liczniki Timer Counter T/C0, T/C1, T/C2

HIBERNATUS_PLUS ALARM MOTOCYKLOWY

Pobór mocy przez układy mikroprocesorowe

Radiobudzik FM, Karcher Radiobudzik UR , Pamięć programów: 10

Programowalne układy logiczne

Układy czasowe / liczniki (timers/counters)

Radioodtwarzacz CD, FM SoundMaster RCD1750SI. Strona 1 z 9

INSTRUKCJA OBSŁUGI K3-3. Czytnik kart i zamek kodowy z kontrolerem dostępu i interfejsem Wiegand. Copyright Domster T. Szydłowski

SML3 październik

INSTRUKCJA OBSŁUGI ZEGARKA ANALOGOWEGO

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania. Sterowniki Urządzeń Mechatronicznych laboratorium. Ćw. 3: Timer v1.0

Magistrala I 2 C. Podstawy systemów mikroprocesorowych. Wykład nr 5 Interfejsy szeregowe c.d.

Instrukcja integracji urządzenia na magistrali Modbus RTU. wersja 1.1

Instrukcja integracji urządzenia na magistrali Modbus RTU

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Cyfrowy programator czasowy Nr produktu

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Przetwornik ADC procesora sygnałowego F/C240 i DAC C240 EVM

Instytut Teleinformatyki

1.2. Architektura rdzenia ARM Cortex-M3...16

Timery w mikrokontrolerach STM32F3

PL CYFROWY ZEWNĘTRZNY WYŁĄCZNIK CZASOWY Instrukcja obsługi (Tłumaczenie oryginalnej instrukcji) Ważne! Przed użyciem uważnie przeczytaj instrukcję

REGULATOR TEMPERATURY. programowalny - TVR 295. instrukcja obsługi. Thermoval Polska Warszawa ul. Bokserska 25.

Transkrypt:

Programowanie mikrokontrolerów 2.0 Zegar czasu rzeczywistego Marcin Engel Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 5 maja 2015

Zegar czasu rzeczywistego Niezależny układ RTC (ang. Real Time Clock) udostępniający: zegar i kalendarz pamiętające aktualny rok, miesiąc, dzień, dzień tygodnia, godzinę, minutę, sekundę, ułamki sekundy dwa alarmy budzik wybudzający mikrokontroler z trybu uśpienia zabezpieczenie antysabotażowe z funkcją zapamiętania czasu zdarzenia 20 rejestrów wielofunkcyjne wejście-wyjście poprzez wyprowadzenie PC13 Należy do domeny awaryjnej (ang. backup domain)

Domena awaryjna Zawiera: układ RTC, układ AWU (ang. auto-wakeup unit) Może być zasilana awaryjnie poprzez wyprowadzenie VBAT, do którego można podłączyć na przykład baterię W przypadku braku zasilania VDD domena awaryjna przełącza się na zasilanie awaryjne Zasilane są wówczas: RTC i AWU oscylator LSE wyprowadzenie PC13 (pracujące jako wejście-wyjście układu RTC), PC14, PC15 (wyprowadzenia oscylatora LSE) Gdy mikrokontroler jest zasilany napięciem VDD, wyprowadzenia PC13, PC14, PC15 mogą pracować jako GPIO (z pewnymi ograniczeniami) W zestawie laboratoryjnym VBAT jest podłączone do VDD

Zerowanie mikrokontrolera Zerowanie systemowe (ang. system reset) Zerowanie na skutek zmian napięcia zasilania (ang. power reset) Zerowanie domeny awaryjnej (ang. backup domain reset) Informacja o przyczynie wyzerowania znajduje się w rejestrze RCC->CSR

Zerowanie systemowe Jest generowane: na skutek niskiego stanu wyprowadzenia NRST przez strażników (ang. watchdogs) programowo za pomocą funkcji bibliotecznej NVIC SystemReset() przy powrocie z jednego z trybów oszczędzania energii Przywraca do stanu początkowego wszystkie rejestry z wyjątkiem rejestrów domeny awaryjnej i rejestru RCC->CSR

Zerowanie na skutek zmian napięcia zasilania Jest generowane przez: układ zarządzania zasilaniem przy włączaniu i wyłączaniu zasilania (POR/PDR) przy spadku napięcia zasilania (BOD) Przywraca do stanu początkowego wszystkie rejestry z wyjątkiem rejestrów domeny awaryjnej i rejestru RCC->CSR

Zerowanie domeny awaryjnej Jest generowane: programowo RCC->BDCR = RCC_BDCR_BDRST; RCC->BDCR = 0; przy powrocie zasilania VDD lub VBAT po uprzednim zaniku ich obu Przywraca do stanu początkowego wszystkie rejestry układu RTC oraz rejestr RCC->BDCR

Taktowanie układu RTC i AWU Układ RTC jest taktowany zegarem RTCCLK, którego źródłem jest wewnętrzny generator (LSI) o czętotliwości ok. 32 khz niezalecane generator kwarcowym małej częstotliwości (LSE) wymaga podłączenia zegarkowego rezonatora kwarcowego 32768 Hz zewnętrzny sygnał o częstotliwości do 1 MHz (LSE bypass) przeskalowany sygnał zegarowym HSE (częstotliwość co najwyżej 1 MHz) niezalecane Częstotliwość zegara RTCCKL może być kalibrowana na kilka sposobów Taktowanie układu RTC/AWU generatorem LSE zapewnia: poprawne działanie przy zaniku zasilania VDD albo VBAT poprawne wybudzanie z trybów uśpienia

Taktowanie układu RTC i AWU, cd. Częstotliwość zegara RTCCLK jest zmniejszana przez dwa konfigurowalne preskalery: 7-bitowy asynchroniczny, wartość domyślna 128 15-bitowy synchroniczny, wartość domyślna 256 Wartości domyślne są tak dobrane, aby dla częstotliwości zegara RTCCLK uzyskać na wyjściu częstotliwość 1 Hz

Zabezpieczenie rejestrów RTC Po wyzerowaniu systemowym rejestry RTC oraz rejestr RCC->BDCR są zabezpieczone przed zapisem Odblokowanie polega na: włączeniu taktowania układu PWR ustawieniu bitu DBP w rejestrze PWR->CR RCC->APB1ENR = RCC_APB1ENR_PWREN; PWR->CR = PWR_CR_DBP;

Konfiguracja zegara LSE Oscylator LSE włącza się, ustawiając bit LSEON w rejestrze RCC->BDCR po jego odblokowaniu Znacznik LSERDY w rejestrze RCC->BDCR oznacza, że sygnał jest stabilny Wybór źródła taktowania odbywa się za pomocą bitów RTCSEL[1:0] Taktowanie układu RTC włącza się, ustawiając bit RTCEN Po wybraniu źródła taktowania jedyną możliwością jego zmiany jest wyzerowanie domeny awaryjnej! RCC->BDCR = RCC_BDCR_LSEON; while ((RCC->BDCR & RCC_BDCR_LSERDY) == 0); RCC->BDCR = RCC_BDCR_RTCEN RCC_BDCR_RTCSEL_0 RCC_BDCR_LSEON;

Rejestry czasu i daty Rejestr RTC->TR zawiera dane o aktualnej godzinie, minucie, sekundzie Rejestr RTC->DR zawiera dane o dwóch ostatnich cyfrach roku, dniu tygodnia, miesiącu i dniu miesiąca Wartości są pamiętane w formacie BCD Dokładny format tych pól znajduje się w dokumentacji Rejestr tylko do odczytu RTC->SRR zawiera dane o częściach sekundy domyślnie: ile 256-tych części sekundy pozostało do pełnej sekundy

Zabezpieczenie rejestrów RTC Po wyzerowaniu domeny awaryjnej rejestry RTC (z pewnymi wyjątkami) są zabezpieczone przed zapisem Odblokowanie polega na kolejnym zapisaniu do rejestru RTC->WPR wartości: 0xCA 0x53 Przywrócenie blokady następuje przez wpisanie innej wartości, np. 0xFF

Inicjowanie Zaprogramowanie daty, czasu, formatu i (ewentualnie) wartości preskalerów wymaga przejścia do trybu inicjowania Sekwencja zdarzeń jest następująca: ustaw bit INIT w rejestrze RTC->ISR poczekaj, aż zostanie ustawiony znacznik INITF w rejestrze RTC->ISR jeśli jest to potrzebne, ustaw w rejestrze RTC->PRER wartości obu preskalerów za pomocą dwóch odrębnych operacji zapisu ustaw wartości rejestrów RTC->TR oraz RTC->DR wyzeruj bit INIT w rejestrze RTC->ISR Znacznik INITS w rejestrze RTC->ISR jest ustawiony, jeśli RTC został już zainicjowany

Przykład RTC->WPR = 0xCA; RTC->WPR = 0x53; RTC->ISR = RTC_ISR_INIT; while ((RTC->ISR & RTC_ISR_INITF) == 0); RTC->TR = 0x00130537; /* 13:05:37 */ RTC->DR = 0x00156505; /* wtorek, 5 maja 2015 */ RTC->ISR = ~RTC_ISR_INIT;

Czas letni/czas zimowy Ustawienie bitu ADD1H w rejestrze RTC->CR poza trybem inicjowania, powoduje dodanie jednej godziny Ustawienie bitu SUB1H w rejestrze RTC->CR poza trybem inicjowania, powoduje odjęcie jednej godziny Do dyspozycji użytkownika jest znacznik BKP

Odczyt daty i czasu Rejestry RTC->SRR, RTC->TR i RTC->DR są buforowane Aktualne wartości czasu i daty są kopiowane do nich co dwa cykle zegara RTCCLK Ustawiany jest wtedy także znacznik RSF w rejestrze RTC->ISR Częstotliwość zegara APB musi być co najmniej 7 razy większa niż częstotliwość RTCCLK Buforowanie można wyłączyć, ustawiając bit BYPSHAD w rejestrze RTC->CR

Odczyt daty i czasu Odczyt RTC->SRR lub RTC->TR blokuje uaktualnianie rejestrów wyższego rzędu Odczyt RTC->DR zdejmuje blokadę Sekwencja odczytu (nieco asekurancka?): wyzeruj bit RSF w rejestrze RTC->ISR poczekaj aż zostanie on znów ustawiony odczytaj potrzebne rejestry RTC->SRR, RTC->TR, RTC->DR (w takiej kolejności!) Przykład RTC->ISR = ~(RTC_ISR_RSF RTC_ISR_INIT); while ((RTC->ISR & RTC_ISR_RSF) == 0); czas = RTC->TR; data = RTC->DR;

Alarmy Dwa niezależne alarmy: ALARMA, ALARMB Czas alarmu programuje się, podając żądane wartości ułamków sekundy, sekund, minut, godzin, dnia tygodnia, dnia miesiąca, miesiąca, roku Każda z powższych wartości może być ignorowana Gdy czas i data osiągnie zaprogramowaną wartość, jest ustawiany znacznik ALRAF lub ALRBF w rejestrze RTC->ISR Wyzwolenie alarmu może generować przerwanie Wyzwolenie alarmu może zmieniać stan wyprowadzenia PC13

Ustawianie alarmu Wyzeruj znacznik ALRAE (ALRBE) w rejestrze RTC->CR Poczekaj na ustawienie znacznika ALRAWF (ALRBWF) w rejestrze RTC->ISR Ustaw rejestry RTC->ALRMASSR, RTC->ALRMAR (RTC->ALRMBSSR, RTC->ALRMBR) Ustaw znacznik ALRAE (ALRBE) w rejestrze RTC->CR RTC->CR &= ~RTC_CR_ALRAE; while ((RTC->ISR & RTC_ISR_ALRAWF) == 0); /* alarm w każdej sekundzie piątej minuty */ RTC->ALRMAR = 0x80800580; RTC->CR = RTC_CR_ALRAE;

Podtrzymywane rejestry z danymi 20 rejestrów 32-bitowych Podtrzymywane bateryjne Dane nie są usuwane przy zerowaniu systemowym

Zabezpieczenie antysabotażowe Wyprowadzenie PC13 może być użyte jako zabezpieczenie antysabotażowe wyzwalane: zmianą stanu stanem utrzymującym się przez wskazaną liczbę cykli zegara RTCCLK Wykrycie sabotażu powoduje: ustawienie znacznika TAMP1F w rejestrze RTC->ISR ewentualne utworzenie przerwania wyzerowanie podtrzymywanych rejestrów z danymi ewentualne zapamiętanie wartości rejestrów RTC->SSR, RTC->TR, RTC->DR odpowiednio w rejestrach RTC->TSSSR, RTC->TSTR, RTC->TSDR

Budzenie mikrokontrolera z trybu uśpienia Realizowane przez programowalny 16-bitowy licznik Zmniejszanie licznika o 1 odbywa się z częstotliwością: zegara RTCCLK podzieloną przez 2, 4, 8 lub 16 lub sygnału z wyjścia preskalera synchronicznego (standardowo 1 Hz) w tym przypadku licznik może być rozszerzony o 1 bit Licznik włącza się, ustawiając bit WUTE w rejestrze RTC->CR Gdy licznik osiąga 0, jest ustawiany znacznik WUTF w rejestrze RTC->ISR Do licznika jest ponownie ładowana wartość początkowa

Ustawianie pobudki Wyzeruj znacznik WUTE w rejestrze RTC->CR Poczekaj na ustawienie znacznika WUTWF w rejestrze RTC->ISR Do rejestru RTC->WUTR wpisz 16-bitową początkową wartość licznika Ustaw preskaler i źrodło taktowania (bity WUCKSEL[2:0] w rejestrze RTC->CR) Ustaw znacznik WUTE w rejestrze RTC->CR RTC->CR &= ~RTC_CR_WUTE; while ((RTC->ISR & RTC_ISR_WUTWF) == 0); RTC->WUTR = 0xFFFF; /* Licznik = 2^16, zegar RTC/8 */ RTC->CR = RTC_CR_WUTE RTC_WUCKSEL_0;

Przerwania Przerwania RTC są podłączone do kontrolera EXTI i zgłaszane zboczem narastającym Oba alarmy (przerwanie o numerze RTC Alarm IRQn) są zgłaszane na linii 17 Pobudka (przerwanie o numerze RTC WKUP IRQn) jest zgłaszane na linii 22 Sabotaż (przerwanie o numerze RTC STAMP IRQn) jest zgłaszany na linii 21

Przykłady konfiguracji przerwań Przerwanie alarmu A EXTI->PR = EXTI_PR_PR17; EXTI->IMR = EXTI_IMR_MR17; EXTI->RTSR = EXTI_RTSR_TR17; RTC->ISR = ~(RTC_ISR_ALRAF RTC_ISR_INIT); RTC->CR = RTC_CR_ALRAIE RTC_CR_ALRAE; NVIC_EnableIRQ(RTC_Alarm_IRQn);

Przykłady konfiguracji przerwań, cd. Przerwanie sabotażu #define EXTI_PR_PR21 (1<<21) #define EXTI_IMR_MR21 (1<<21) #define EXTI_RTSR_MR21 (1<<21) EXTI->PR = EXTI_PR_PR21; EXTI->IMR = EXTI_IMR_MR21; EXTI->RTSR = EXTI_RTSR_TR21; RTC->ISR = ~(RTC_ISR_TAMP1F RTC_ISR_INIT); RTC->TAFCR = RTC_TAFCR_TAMP1E RTC_TAFCR_TAMPIE RTC_TAFCR_TAMP1TRG; NVIC_EnableIRQ(TAMP_STAMP_IRQn);

Przykłady konfiguracji przerwań, cd. Przerwanie pobudki #define EXTI_PR_PR22 (1<<22) #define EXTI_IMR_MR22 (1<<22) #define EXTI_RTSR_MR22 (1<<22) EXTI->PR = EXTI_PR_PR22; EXTI->IMR = EXTI_IMR_MR22; EXTI->RTSR = EXTI_RTSR_TR22; RTC->ISR = ~(RTC_ISR_WUTF RTC_ISR_INIT); RTC->CR = RTC_CR_WUTIE RTC_CR_WUTE; NVIC_EnableIRQ(RTC_WKUP_IRQn);

Przykład funkcji obsługi przerwania Trzeba pamiętać o wyzerowaniu znacznika przerwania w kontrolerze EXTI poprzez zapis 1 Trzeba pamiętać o wyzerowaniu znacznika przerwania w układzie RTC poprzez zapis 0 W przykładzie zakładamy, że przerwanie nie wystąpi w trybie inicjowania void RTC_Alarm_IRQHandler(void) { EXTI->PR = EXTI_PR_PR17; RTC->ISR = ~(RTC_ISR_ALRAF RTC_ISR_INIT);... }

Wyjście zewnętrzne Do wyprowadzenia PC13 można dołączyć: sygnał alarmu (push-pull lub open-drain, konfigurowalna polarność) sygnał kalibracji (1 Hz lub 512 Hz) sygnał pobudki Wyprowadzenie PC13 może także pracować jako wejście sygnału sabotażu Nie jest wymagana konfiguracja funkcji alternatywnej PC13