Opóźnienia w STM32 (1)
|
|
- Henryk Lis
- 6 lat temu
- Przeglądów:
Transkrypt
1 KURS Kurs grafika pochodzi z Opóźnienia w STM32 (1) Precyzyjne odmierzanie czasu w połączeniu z trybami oszczędzania energii Częstym problemem, który występuje przy opracowywaniu programów na mikrokontrolery, jest wprowadzenie opóźnienia. W artykule przedstawiono sposób precyzyjnego odmierzania czasu opóźnienia w połączeniu z użyciem trybów oszczędzania energii w mikrokontrolerach STM32 z rdzeniem Cortex-M3. Do odmierzania czasu wykorzystano układy licznikowe. Na czas opóźnienia mikrokontroler jest usypiany w jednym z trybów oszczędzania energii. Mikrokontroler może być wybudzony przed upływem zadanego czasu, jeśli zajdzie potrzeba obsłużenia jakiegoś przerwania, a po jego obsłużeniu powraca stanu oszczędzania energii, aby kończyć drzemkę. Jedną z najprostszych funkcji opóźniających, jaką da się napisać w języku C, wygląda następująco: Delay(volatile unsigned count) { while(count--); W wielu zastosowaniach jest to rozwiązanie zawalające. Jednak funkcja ta ma kilka poważnych wad. Realizowane opóźnienie jest nieprecyzyjne. Zależnie od ustawionej dla kompilatora opcji optymalizacji i opóźnień wprowadzanych przez pamięć programu (flash latency), jedna iteracja pętli może trwać od kilku kilkunastu taktów zegara. Jeśli w trakcie wykonywania tej funkcji zostanie zgłoszone przerwanie, to czas opóźnienia wydłuży się o czas jego obsługi. Ponadto mikrokontroler przez cały czas wykonywania pętli pobiera energię, która jest marnowana. Chyba jedyną zaletą tej funkcji jest prostota zapisu. Można pokusić się o implementację bardziej precyzyjnych funkcji opóźniających. Przykławy program został 80 ELEKTRONIKA PRAKTYCZNA 7/2010
2 Precyzyjne odmierzanie czasu w połączeniu z trybami oszczędzania energii List. 1. Sygnatury funkcji opóźniających umieszczone w pliku sleep.h #ifndef _SLEEP_H #define _SLEEP_H 1 USleep(unsigned); MSleep(unsigned); Sleep(unsigned); Standby(unsigned); int SleepConfigure(unsigned); #endif napisany w języku C na mikrokontroler STM32F107 i można go uruchomić na motylu, czyli zestawie uruchomieniowym STM32Butterfly, co zostanie zaprezentowane w drugiej części artykułu. Program bardzo łatwo daje się przenieść na inne modele z rodziny STM32, gdyż korzysta ze Standard Peripheral Library i biblioteki CMSIS (Cortex Microcontroller Software Interface Standard), które są starczane przez STMicroelectronics [1]. Do precyzyjnego odmierzania krótkich czasów, od kilku ok mikrosekund lub od milisekund, zostały wykorzystane dwa spośród liczników TIM2, TIM3, TIM4 i TIM5, taktowane zegarem systemowym przez odpowiednio brane dzielniki wstępne (prescaler). Do realizacji długich opóźnień, wyrażanych w sekundach, zastosowano zegar czasu rzeczywistego (real time clock), taktowany sygnałem z generatora z kwarcem zegarkowym Hz, tykający z częstotliwością 1 Hz. Podczas czekania na zakończenie opóźnienia mikrokontroler jest przełączany w stan oszczędzania energii. Gdy zostaje zgłoszone przerwanie, mikrokontroler wraca na czas jego obsługi trybu aktywnego. Po zakończeniu obsługi przerwania ponownie jest wprowadzany w stan oszczędzania energii. Czas obsługi przerwania nie wydłuża opóźnienia. Tryby oszczędzania energii Mikrokontrolery STM32 wyposażono w kilka trybów oszczędzania energii. W trybie uśpienia (sleep mode) wstrzymywane jest taktowanie rdzenia i pamięci, wszystkie układy peryferyjne pozostają taktowane. W trybach głębokiego uśpienia (deep sleep mode) wstrzymywane jest taktowanie rdzenia, pamięci i większości peryferii. Są dwa tryby głębokiego uśpienia: tryb zatrzymania (stop mode) i tryb czuwania (standby). W trybie zatrzymania wyłączone są wszystkie sygnały taktujące w menie 1,8 V. Wstrzymane są wewnętrzny oscylator RC o częstotliwości nominalnej 8 MHz (HSI high speed internal), zewnętrzny oscylator kwarcowy (HSE high speed external) i wszystkie synchroniczne pętle fazowe (PLL phase locked loop). Wewnętrzny regulator napięcia 1,8 V może pozostać w stanie normalnej pracy albo List. 2. Implementacja funkcji opóźniających umieszczona w pliku sleep.c #include check.h #include clock.h #include sleep.h #include <misc.h> #include <stm32f10x_exti.h> #include <stm32f10x_pwr.h> #include <stm32f10x_rcc.h> #include <stm32f10x_rtc.h> #include <stm32f10x_tim.h> /* Licznik dla opóźnień mikrosekunwych, zwiększany z częstotliwością 1 MHz */ #define US_TIM TIM2 #define US_TIM_IRQn TIM2_IRQn #define US_RCC_APB1Periph_TIM RCC_APB1Periph_TIM2 #define US_TIM_IRQHandler TIM2_IRQHandler /* Licznik dla opóźnień milisekunwych, zwiększany z częstotliwością 2 khz */ #define MS_TIM TIM3 #define MS_TIM_IRQn TIM3_IRQn #define MS_RCC_APB1Periph_TIM RCC_APB1Periph_TIM3 #define MS_TIM_IRQHandler TIM3_IRQHandler static unsigned uscalibration = 0; USleep(unsigned count) { if (count > uscalibration) count -= uscalibration; else if (count > 0) count = 1; /* minimalna możliwa wartość */ else return; /* count == 0 */ US_TIM->CNT = 0; US_TIM->CCR1 = count; US_TIM->CR1 = TIM_CR1_CEN; WFE(); while (US_TIM->CR1 & TIM_CR1_CEN); US_TIM_IRQHandler() { if (TIM_GetITStatus(US_TIM, TIM_IT_CC1)) { TIM_ClearITPendingBit(US_TIM, TIM_IT_CC1); US_TIM->CR1 &= ~TIM_CR1_CEN; SEV(); MSleep(unsigned count) { if (count > 0) { MS_TIM->CNT = 0; MS_TIM->CCR1 = count << 1; /* tyka 2 khz */ MS_TIM->CR1 = TIM_CR1_CEN; WFE(); while (MS_TIM->CR1 & TIM_CR1_CEN); MS_TIM_IRQHandler() { if (TIM_GetITStatus(MS_TIM, TIM_IT_CC1)) { TIM_ClearITPendingBit(MS_TIM, TIM_IT_CC1); MS_TIM->CR1 &= ~TIM_CR1_CEN; SEV(); /* #define PWR_REGULATOR_MODE PWR_Regulator_ON */ #define PWR_REGULATOR_MODE PWR_Regulator_LowPower static unsigned hclkmhz; Sleep(unsigned count) { if (count > 0) { /* Alarm zgłaszany jest w ostatnim cyklu oscylatora RTC odpowiadającego sekundzie, w której alarm należy zgłosić, więc count <= czas uśpienia < count + 1. */ RTC_SetAlarm(RTC_GetCounter() + count); PWR_EnterSTOPMode(PWR_REGULATOR_MODE, PWR_STOPEntry_WFE); while (!RTC_GetFlagStatus(RTC_IT_ALR)); RTC_ClearITPendingBit(RTC_IT_ALR); /* Po obudzeniu trzeba przywrócić pracę oscylatorów. */ ClockConfigure(hclkMHz); Standby(unsigned time) { PWR_WakeUpPinCmd(ENABLE); RTC_SetAlarm(RTC_GetCounter() + time); PWR_EnterSTANDBYMode(); ELEKTRONIKA PRAKTYCZNA 7/
3 KURS może być przełączony w stan niskiego poboru energii (low power mode). W trybie zatrzymania zawartość rejestrów i pamięci pozostaje niezmieniona. Wybudzenie z tego trybu może nastąpić w wyniku zgłoszenia jednego z 16 przerwań zewnętrznych (EXTI external interrupt), przerwania wygenerowanego przez programowalny detektor napięcia zasilania (PVD programmable voltage detector), na skutek wyzwolenia alarmu RTC lub za pomocą sygnału budzenia (wake-up) wygenerowanego przez interfejs USB lub Ethernet. W trybie czuwania wewnętrzny regulator napięcia 1,8 V jest wyłączony. Oscylatory HSI, HSE i wszystkie PLL są również wyłączone. Po wejściu tego trybu zawartość pamięci i większości rejestrów zostaje utracona. Zachowywana jest jedynie zawartość rejestrów zapasowych (backup registers). Wybudzenie z trybu czuwania może nastąpić za pomocą wyprowadzenia RESET, zerowania wywołanego przez niezależnego nadzorcę (IWDG independent watchg), narastającym zboczem sygnału na wyprowadzeniu WKUP-PA0 lub alarm RTC. Tryb czuwania różni się od pozostałych jeszcze tym, że po wybudzeniu z niego wykonywanie programu rozpoczyna się od początku. W pozostałych trybach wykonywanie programu jest wznawiane od miejsca, w którym nastąpiło uśnięcie. Program wykorzystujący tryb czuwania musi sprawdzić przyczynę rozpoczęcia wykonania, czy jest to wynik resetu, włączenia zasilania czy wybudzenia. We wszystkich trybach oszczędzania energii mogą pozostawać włączone: wewnętrzny oscylator RC o częstotliwości nominalnej 40 khz (LSI low speed internal), zwykle taktujący układ nadzorcy IWDG; zewnętrzny oscylator kwarcowy Hz (LSE low speed external), taktujący zegar czasu rzeczywistego (RTC real time clock). Według noty katalogowej producenta [2], wybudzanie z trybu uśpienia trwa typowo 1,8 ms, z trybu zatrzymania z włączonym regulatorem napięcia typowo 3,6 ms, z trybu zatrzymania z regulatorem napięcia w stanie niskiego poboru energii typowo 5,4 ms, a z trybu czuwania typowo 50 ms. Jeśli korzystamy z oscylatora kwarcowego HSE, to przy wybudzaniu z głębokiego uśpienia (tryby zatrzymania i czuwania) powyższych czasów należy jeszcze liczyć, wynoszący typowo 2 ms, czas startu tego oscylatora (wyżej podane czasy obejmują jedynie start wewnętrznego oscylatora RC HSI) oraz czasy synchronizacji PLL, wynoszące maksymalnie 350 ms dla każdej pętli. Pętle pracują zwykle kaskawo, więc czasy ich synchronizacji sumują się. List. 2. c.d. int SleepConfigure(unsigned freqmhz) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct; TIM_OCInitTypeDef TIM_OCInitStruct; NVIC_InitTypeDef NVIC_InitStruct; EXTI_InitTypeDef EXTI_InitStruct; hclkmhz = freqmhz; /* Kalibracja 1 us cykle zegara */ uscalibration = 1U + (120U / freqmhz); RCC_APB1PeriphClockCmd(US_RCC_APB1Periph_TIM MS_RCC_APB1Periph_TIM RCC_APB1Periph_PWR RCC_APB1Periph_BKP, ENABLE); TIM_TimeBaseStructInit(&TIM_TimeBaseStruct); TIM_TimeBaseStruct.TIM_CounterMode = TIM_CounterMode_Up; TIM_OCStructInit(&TIM_OCInitStruct); TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_Timing; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0; NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; /* Konfiguruj licznik mikrosekunwy na 1 MHz. */ TIM_TimeBaseStruct.TIM_Prescaler = freqmhz - 1; TIM_TimeBaseInit(US_TIM, &TIM_TimeBaseStruct); TIM_OC1Init(US_TIM, &TIM_OCInitStruct); TIM_OC1PreloadConfig(US_TIM, TIM_OCPreload_Disable); NVIC_InitStruct.NVIC_IRQChannel = US_TIM_IRQn; NVIC_Init(&NVIC_InitStruct); TIM_ClearITPendingBit(US_TIM, TIM_IT_CC1); TIM_ITConfig(US_TIM, TIM_IT_CC1, ENABLE); /* Konfiguruj licznik milisekunwy na 2 khz. */ TIM_TimeBaseStruct.TIM_Prescaler = freqmhz * 500-1; TIM_TimeBaseInit(MS_TIM, &TIM_TimeBaseStruct); TIM_OC1Init(MS_TIM, &TIM_OCInitStruct); TIM_OC1PreloadConfig(MS_TIM, TIM_OCPreload_Disable); NVIC_InitStruct.NVIC_IRQChannel = MS_TIM_IRQn; NVIC_Init(&NVIC_InitStruct); TIM_ClearITPendingBit(MS_TIM, TIM_IT_CC1); TIM_ITConfig(MS_TIM, TIM_IT_CC1, ENABLE); /* Konfiguruj licznik sekunwy. */ PWR_BackupAccessCmd(ENABLE); if (PWR_GetFlagStatus(PWR_FLAG_SB)!= RESET) { /* Mikrokontroler obudził się ze stanu czuwania. Nie ma potrzeby ponownego konfigurowania RTC - konfiguracja jest zachowywana po wybudzeniu ze stanu czuwania. */ PWR_ClearFlag(PWR_FLAG_SB); RTC_WaitForSynchro(); else { /* Mikrokontroler został zresetowany, konfiguruj RTC, aby był taktowany kwarcem Hz i tykał z okresem 1 s. */ RCC_LSEConfig(RCC_LSE_ON); active_check(rcc_getflagstatus(rcc_flag_lserdy), ); RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); RCC_RTCCLKCmd(ENABLE); RTC_WaitForSynchro(); RTC_SetPrescaler(32767); /* Konfiguruj linię 17 EXTI (alarm RTC), aby narastające zbocze ustawiało rejestr zdarzenia */ EXTI_StructInit(&EXTI_InitStruct); EXTI_InitStruct.EXTI_Line = EXTI_Line17; EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStruct.EXTI_LineCmd = ENABLE; EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Event; EXTI_Init(&EXTI_InitStruct); RTC_ClearITPendingBit(RTC_IT_ALR); return 0; Do aktywowania trybu oszczędzania energii w mikrokontrolerach z rdzeniem Cortex-M3 służą instrukcje asemblerowe WFI (wait for interrupt) i WFE (wait for event). Dla ścisłości należy wspomnieć, że mikrokontroler w tryb uśpienia można też przełączyć ustawiając bit SLEEPONEXIT w rejestrze SCB_SCR (system control block system control register). Bit ten można też ustawić za pomocą funkcji bibliotecznej NVIC_SystemLPConfig. Mikrokontroler zaśnie wtedy po zakończeniu obsługi najbliższego przerwania, a następnie każrazowo, gdy zostanie zgłoszone przerwanie obudzi się, aby go obsłużyć i zaśnie po zakończeniu jego obsługi. Jednak w omawianym przykładzie nie korzystamy z funkcjonalności sleep-on-exit. Po wywołaniu instrukcji WFI mikrokontroler natychmiast zasypia. Budzi się, gdy wystąpi wyjątek (exception), który ma ustawiony statecznie wysoki priorytet, aby wywołać procedurę obsługi. Wyjątkami są wszystkie przerwania zgłaszane 82 ELEKTRONIKA PRAKTYCZNA 7/2010
4 Precyzyjne odmierzanie czasu w połączeniu z trybami oszczędzania energii przez peryferie oraz przerwania sprzętowe i programowe generowane przez sam rdzeń. Po obudzeniu mikrokontroler wykonuje procedurę obsługi zgłoszonego wyjątku (przerwania), a następnie kontynuuje wykonywanie kodu znajdującego się bezpośrednio za instrukcją WFI, która spowowała uśpienie. Ten mechanizm można spróbować wykorzystać realizacji opóźnień. Algorytm mógłby wyglądać następująco: zeruj TIMER; konfiguruj TIMER, aby po osiągnięciu zadanej wartości zgłosił przerwanie i zatrzymał się; wystartuj TIMER; WFI; while (TIMER nie osiągnął zadanej wartości); Najpierw zerujemy licznik TIMER. Konfigurujemy go, aby zgłosił przerwanie po osiągnięciu zadanej wartości opóźnienia. Startujemy licznik, a następnie zasypiamy. Po wybudzeniu sprawdzamy czy przyczyną obudzenia było przerwanie zgłoszone przez TIMER. Jeśli źródłem przerwania nie był TIMER, ponownie zasypiamy. Ten algorytm wydaje się prawidłowy, jednak zawiera bardzo subtelny błąd. Jeśli najpierw zostanie zgłoszony wyjątek (przerwanie) niepochodzący od licznika TIMER, warunek pętli będzie prawdziwy i zostanie ponownie wywołana instrukcja WFI. Między przeczytaniem odpowiedniego rejestru statusu licznika a ponownym zaśnięciem mikrokontroler wykona kilka instrukcji maszynowych: sprawdzenie warunku, skok warunkowy. Jeśli w tym czasie TIMER zgłosi przerwanie, to zostanie ono obsłużone przed wywołaniem instrukcji WFI i jej wywołanie uśpi mikrokontroler, aż pojawi się kolejny wyjątek. Opóźnienie wydłuży się nieprzewidywalnie. Prawidłowym rozwiązaniem jest użycie instrukcji WFE. Instrukcja ta współpracuje z jednobitowym rejestrem zdarzenia (one-bit event register). Rejestr ten jest testowany po wywołaniu tej instrukcji. Jeśli rejestr zdarzenia jest wyzerowany, mikrokontroler zasypia. Jeśli rejestr zdarzenia jest ustawiony, mikrokontroler zeruje go i kontynuuje wykonywanie programu nie zasypia. Jeśli mikrokontroler zasnął na instrukcji WFE i następnie został ustawiony rejestr zdarzenia, mikrokontroler budzi się, a rejestr zdarzenia zostaje wyzerowany. Rejestru zdarzenia nie można odczytywać programowo. Rejestr ten jest zerowany tylko przez instrukcję WFE i może być ustawiany sprzętowo. Z pewnymi ograniczeniami, o których będzie napisane dalej, źródłami, które ustawiają ten rejestr ELEKTRONIKA PRAKTYCZNA 7/2010 Funkcje opóźniające Plik nagłówkowy definiujący sygnatury funkcji opóźniających umieszczony jest na listingu 1. Funkcja USleep puszcza wartości parametru wejściowego z zakresu od i realizuje opóźnienie o zadaną wartość mikrosekund. Funkcja MSleep puszcza wartości parametru wejściowego z zakresu od i realizuje opóźnienie o zadaną wartość milisekund. Funkcja Sleep puszcza wartości parametru wejściowego z zakresu od i realizuje opóźnienie o zadaną wartość sekund. Funkcja Standby wprowadza mikrokontroler w tryb czuwania na zadaną liczbę sekund i puszcza wartości parametru wejściowego z zakresu od Funkcja SleepConfigure konfiguruje moduł realizujący opóźnienia i powinna być wywołana zanim zostanie wywołana któraś z funkcji opóźniających. Jej argumentem jest częstotliwość taktowania układów licznikowych TIMx w MHz. W omawianym przykładzie konfigurujemy ją tak, aby była równa częstotliwości taktowania rdzenia, co zostanie omówione w drugiej części artykułu. Implementacja powyższych funkcji została pokazana na listingu 2. Najpierw definiujemy, że licznik TIM2 jest używany opóźnień mikrosekunwych, a licznik TIM3 opóźnień milisekunwych. Dzięki temu, gdyby któryś z tych liczników był zajęty przez inną funkcję, łatwo można go zamienić na licznik TIM4 lub TIM5. Zawartość TIM2 jest zwiększana z częstotliwością 1 MHz, aby łatwo było odliczać okresy 1 ms, natomiast TIM3 jest zwiększana z częstotliwością 2 khz. Taki wybór spowowany jest tym, że przyjęliśmy założenie o taktowaniu liczników tym samym zegarem co rdzenia, a przy maksymalnej częstotliwości taktowania rdzenia 72 MHz i największej możliwej wartości dzielnika wstępnego nie uda się uzyskać sygnału 1 khz. Funkcja USleep korzysta z trybu uśpienia, a jak zostało napisane wyżej, wybudzanie z tego trybu może trwać ok. 2 ms. Ten narzut jest niezależny od częstotliwości taktowania rdzenia. Dodatkowy narzut wprowadza konieczność konfigurowania licznika. Możemy starać się go zminimalizować pomijając wywołania funkcji bibliomogą być te same źródła, które wyzwalają wyjątki (przerwania). Co będzie dla nas bardzo ważne, rejestr zdarzenia może być też ustawiony programowo instrukcją SEV (send event). Poprawny algorytm jest następujący: zeruj TIMER; konfiguruj TIMER, aby po osiągnięciu zadanej wartości ustawił rejestr zdarzenia i zatrzymał się; wystartuj TIMER; WFE; while (TIMER nie osiągnął zadanej wartości); Z poziomu języka C instrukcje WFE, WFI i SEV można wywoływać za pomocą, stępnych w bibliotece CMSIS, makr: WFE(); WFI(); SEV(); Żeby wprowadzić mikrokontroler w tryb głębokiego uśpienia, trzeba przed wywołaniem instrukcji WFE lub WFI ustawić bit SLEEPDEEP w rejestrze SCB_SCR. Dodatkowo dla trybu zatrzymania (stop mode) należy wyzerować bit PDDS (power wn deep sleep) w rejestrze PWR_CR (power control register) i skonfigurować w tym rejestrze bit LPDS (low power deep sleep) zależnie od wybranego sposobu pracy regulatora 1,8 V. Wyzerowanie tego bitu oznacza pozostawienie regulatora włączonego, a jego ustawienie wprowadzenie regulatora w stan niskiego poboru energii. Prostszym sposobem jest wywołanie funkcji bibliotecznej: PWR_EnterSTOPMode( uint32_t PWR_Regulator, uint8_t PWR_STOPEntry ); Parametr PWR_Regulator specyfikuje sposób pracy regulatora i może przyjmować wartość PWR_Regulator_ON lub PWR_Regulator_Low. Natomiast parametr PWR_STOPEntry specyfikuje instrukcję wywoływaną w celu zaśnięcia i może przyjmować wartość PWR_STOPEntry_ WFI lub PWR_STOPEntry_WFE. Aby wprowadzić mikrokontroler w tryb czuwania (standby), należy przed wywołaniem instrukcji WFE lub WFI, oprócz ustawienia bitu SLEEPDEEP, wyzerować bit WUF (wake-up flag) w rejestrze PWR_CR przez ustawienie bitu CWUF (clear wakeup flag) oraz ustawić bit PDDS w tym rejestrze. Jednak prostszym sposobem jest wywołanie funkcji bibliotecznej: PWR_EnterSTANDBYMode(); Ta funkcja wywołuje instrukcję WFI. W przypadku przechodzenia w tryb czuwania nie ma różnicy między działaniem instrukcji WFE a WFI. List. 3. Pomocnicze makro umieszczone w pliku check.h #ifndef _CHECK_H #define _CHECK_H 1 #define active_check(cond, limit) { \ int i; \ for (i = (limit);!(cond); --i) \ if (i <= 0) \ return -1; \ #endif 83
5 KURS tecznych i odwołując się bezpośrednio rejestrów konfiguracyjnych licznika. Ten narzut można oszacować w taktach zegara i zależy on od częstotliwości taktowania rdzenia. Jeśli chcemy odmierzać opóźnienia bardzo precyzyjnie, możemy spróbować eksperymentalnie brać wartość zmiennej uscalibration i ustawić ją na początku funkcji SleepConfigure w zależności od częstotliwości taktowania rdzenia. Wymienione narzuty powodują, że w praktyce za pomocą funkcji USleep nie uda się osiągnąć opóźnienia krótszego niż ok. 3 ms. Funkcja USleep realizuje kolejno: kalibruje wartość opóźnienia; zeruje licznik rejestr CNT (counter); konfiguruje wartość count, po której osiągnięciu przez licznik ma nastąpić ustawienie rejestru zdarzenia rejestr CCR1 (capture-compare register 1); uaktywnia licznik ustawia bit TIM_ CR1_CEN (counter enable) w rejestrze CR1 (control register 1); usypia mikrokontroler za pomocą instrukcji WFE; po obudzeniu sprawdza czy licznik zatrzymał się, tzn. czy wyzerowany jest bit TIM_CR1_CEN jeśli nie jest, ponownie usypia. Funkcja USleep współpracuje z procedurą US_TIM_IRQHandler obsługującą przerwanie licznika mikrosekunwego. Zgodnie z opisem, dla instrukcji WFE nie ma potrzeby implementowania obsługi przerwania. Wystarczyłoby, gdyby rejestr zdarzenia (event register) został ustawiony po zajściu zdarzenia zgodności zawartości licznika z wartością count. Niestety, jeśli zdarzenie zgodności zaszłoby między sprawdzeniem warunku zakończenia pętli while a wywołaniem instrukcji WFE, rejestr zdarzenia nie zostałby ustawiony mielibyśmy kładnie taki sam problem, jak omówiony wyżej dla instrukcji WFI. Problem ten jest znany i opisany w [3] jako błąd : Event Register is not set by interrupts and debug oraz w [4] w podrozdziale Cortex-M3 event register is not set by interrupts and debug. Dlatego w procedurze obsługi przerwania wołamy makro SEV, aby mieć pewność, że rejestr zdarzenia, na który czeka instrukcja WFE, zostanie ustawiony. Wcześniej zatrzymujemy licznik przez wyzerowanie bitu TIM_CR1_CEN. Funkcja MSleep jest bardzo pobna funkcji USleep. Różnice są następujące. Nie kalibrujemy czasu uśpienia, gdyż przy opóźnieniach milisekunwych narzut związany z usypianiem i budzeniem jest pomijalny. Sprawdzamy jedynie czy funkcja nie została wywołana z zerową wartością czasu opóźnienia. Ponadto licznik milisekunwy tyka z częstotliwością 2 khz, więc trzeba wartość count pomnożyć przez dwa. Implementujemy też odpowiednią procedurę obsługi przerwania MS_TIM_ IRQHandler dla tego licznika. Funkcja Sleep jest koncepcyjnie pobna dwóch wyżej omówionych funkcji opóźniających. Różnice wynikają głównie z innych interfejsów programistycznych dla liczników TIMx i RTC. Zapis rejestrów konfiguracyjnych RTC trwa co najmniej trzy takty zegarowe LSE (32768 Hz) i jest wykonywany niejako w tle wykonywania programu. Zatem przed każdym zapisem rejestru konfiguracyjnego RTC musimy upewnić się czy zakończył się poprzedni zapis. Służy tego funkcja RTC_ WaitForLastTask. Do odmierzania czasu wykorzystujemy funkcje alarmu RTC. Funkcja Sleep realizuje kolejno: odczytuje bieżącą zawartość licznika RTC (wywołanie RTC_GetCounter) i ustawia wartość, przy której ma nastąpić obudzenie (wywołanie RTC_SetAlarm); zasypia w pętli, wywołując funkcję PWR_EnterSTOPMode, która z kolei wywołuje instrukcję WFE stała PWR_ REGULATOR_MODE definiuje sposób pracy regulatora 1,8 V; opuszcza pętlę, jeśli obudzenie jest wynikiem zgłoszenia alarmu RTC, czyli gdy ustawiony jest znacznik zdarzenia alarmu RTC_IT_ALR (wywołanie RTC_ GetFlagStatus); po opuszczeniu pętli kasuje znacznik zdarzenia alarmu (wywołanie RTC_ ClearITPendingBit). Po obudzeniu z trybu zatrzymania mikrokontroler jest taktowany sygnałem z wewnętrznego oscylatora RC (HSI, 8 MHz). Podczas wykonywania funkcji Sleep mikrokontroler obsługuje przerwania będąc taktowany sygnałem zegarowym HSI. Przed zakończeniem tej funkcji trzeba przywrócić pracę oscylatora kwarcowego HSE oraz pętli PLL za pomocą funkcji ClockConfigure, która będzie omówiona w drugiej części artykułu. W przypadku funkcji Sleep nie musimy implementować procedury obł-ugi przerwania, gdyż alarm RTC poprawnie ustawia rejestr zdarzenia. Funkcja Standby odczytuje bieżącą wartość licznika RTC za pomocą funkcji RTC_GetCounter. Ustawia wartość licznika RTC, przy której nastąpi wybudzenie funkcja RTC_SetAlarm. Mikrokontroler zostaje przełączony w tryb czuwania funkcja PWR_EnterSTANDBYMode. Mikrokontroler może zostać wybudzony z trybu czuwania przed upływem zadanego czasu opóźnienia, przez narastające zbocze sygnału na wyprowadzeniu WKUP-PA0. Funkcja PWR_WakeUpPinCmd uaktywnia tę opcję. Ponieważ RTC nie jest resetowany w trybach głębokiego uśpienia (zatrzymania i czuwania), sposób jego konfigurowania jest uzależniony od ustawienia znacznika PWR_FLAG_SB testowanego za pomocą funkcji PWR_GetFlagStatus. Jeśli znacznik PWR_FLAG_SB jest ustawiony, to nastąpiło wybudzenie RTC pracuje i nie trzeba go rekonfigurować. Jeśli znacznik ten jest wyzerowany, to mikrokontroler został zresetowany lub zostało włączone zasilanie i trzeba skonfigurować RTC. Aby funkcja SleepConfigure nie zawiesiła się w przypadku uszkodzenia oscylatora zegarkowego, korzystamy z pomocniczego makra, przedstawionego na listingu 3. Makro to ogranicza czas oczekiwania na start oscylatora. Jeśli oscylator nie zadziała, funkcja SleepConfigure zwróci wartość ujemną sygnalizującą błąd. Przy poprawnym zakończeniu funkcja zwraca zero. Marcin Peczarski Literatura [1] ARM-based 32-bit MCU STM32F10xxx standard peripheral library, wersja 3.2.0, files/stm32f10x_stdperiph_lib.zip [2] STM32F105xx, STM32F107xx, Connectivity line, ARM-based 32-bit MCU with 64/256 KB Flash, USB OTG, Ethernet, 10 timers, 2 CANs, 2 ADCs, 14 communication interfaces, [3] ARM Core Cortex-M3/Cortex-M3 with ETM (AT420/AT425) Errata Notice, infocenter.arm.com/help/topic/com.arm.c. eat0420c/cortex-m3-errata-r2p0-v2.pdf [4] STM32F105xx and STM32F107xx Errata sheet, STM32F105xx and STM32F107xx revision Z connectivity line device limitations, es/15866.pdf forum.ep.com.pl 84 ELEKTRONIKA PRAKTYCZNA 7/2010
Programowanie mikrokontrolerów 2.0
Programowanie mikrokontrolerów 2.0 Tryby uśpienia Marcin Engel Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 19 grudnia 2016 Zarządzanie energią Często musimy zadbać o zminimalizowanie
Programowanie mikrokontrolerów 2.0
4.1 Programowanie mikrokontrolerów 2.0 Taktowanie Marcin Engel Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 22 listopada 2016 4.2 Drzewo taktowania w STM32F411 Źródło: RM0383 Reference
Opóźnienia w STM32 (2)
Precyzyjne odmierzanie czasu w połączeniu z trybami oszczędzania energii Kurs grafika pochodzi z http://7art-screensavers.com Opóźnienia w STM32 (2) Precyzyjne odmierzanie czasu w połączeniu z trybami
Programowanie mikrokontrolerów 2.0
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.
Pobór mocy przez układy mikroprocesorowe
Pobór mocy przez układy mikroprocesorowe Semestr zimowy 2014/2015, WIEiK-PK 1 Pobór mocy przez układy mikroprocesorowe Wraz z rosnącym zapotrzebowaniem na sprzęt przenośny oraz rosnąca liczba urządzeń
3. Sygnały zegarowe i ich konfiguracja, mechanizmy bezpieczeństwa... 47
Spis treści 3 1. Rdzeń Cortex-M3...9 1.1. Firma ARM i jej wyroby...10 1.2. Rodzina rdzeni Cortex...12 1.3. Ogólne spojrzenie na architekturę rdzenia Cortex-M3...13 1.4. Rejestry podstawowe...16 1.5. Przestrzeń
uniwersalnych 1. Klasyfikacja liczników w układach STM32F10x 2. Konfiguracja liczników do realizacji wybranych zadań 2.
Ćwiczenia 6,7: Zastosowania liczników SysTick, RTC oraz uniwersalnych Celem ćwiczeń 6 i 7 jest zapoznanie się z konfiguracją i zastosowaniem timerów. W szczególności studenci poznają sposoby okresowego
Pobór mocy przez układy mikroprocesorowe
Pobór mocy przez układy mikroprocesorowe E-3, WIEiK- PK 1 Pobór mocy przez układy mikroprocesorowe Wraz z rosnącym zapotrzebowaniem na sprzęt przenośny oraz rosnąca liczba urządzeo wyposażonych w układy
Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski
Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej Systemy wbudowane Witold Kozłowski Zakład Fizyki i Technologii Struktur Nanometrowych 90-236 Łódź, Pomorska 149/153 https://std2.phys.uni.lodz.pl/mikroprocesory/
Układy czasowo-licznikowe w systemach mikroprocesorowych
Układy czasowo-licznikowe w systemach mikroprocesorowych 1 W każdym systemie mikroprocesorowym znajduje zastosowanie układ czasowy lub układ licznikowy Liczba liczników stosowanych w systemie i ich długość
Przerwania, polling, timery - wykład 9
SWB - Przerwania, polling, timery - wykład 9 asz 1 Przerwania, polling, timery - wykład 9 Adam Szmigielski aszmigie@pjwstk.edu.pl SWB - Przerwania, polling, timery - wykład 9 asz 2 Metody obsługi zdarzeń
Metody obsługi zdarzeń
SWB - Przerwania, polling, timery - wykład 10 asz 1 Metody obsługi zdarzeń Przerwanie (ang. Interrupt) - zmiana sterowania, niezależnie od aktualnie wykonywanego programu, spowodowana pojawieniem się sygnału
STM32 dla początkujących (i nie tylko)
STM32 dla początkujących (i nie tylko) RTC, czyli zegar i kalendarz Układ zegara RTC stanowi integralną część kontrolerów STM32. Podane informacje i przykłady powinny pomóc w jego zastosowaniu w różnych
start Program mikroprocesorowego miernika mocy generowanej $crystal = deklaracja
----------------------------start---------------------------- Program mikroprocesorowego miernika mocy generowanej $crystal = 8000000 deklaracja częstotliwości kwarcu taktującego uc $regfile "m8def.dat"
Układy zegarowe w systemie mikroprocesorowym
Układy zegarowe w systemie mikroprocesorowym 1 Sygnał zegarowy, sygnał taktujący W każdym systemie mikroprocesorowym jest wymagane źródło sygnałów zegarowych. Wszystkie operacje wewnątrz jednostki centralnej
Wbudowane układy peryferyjne cz. 2 Wykład 8
Wbudowane układy peryferyjne cz. 2 Wykład 8 Timery Timery (liczniki) 2 Timery informacje ogólne Mikrokontroler ATmega32 posiada 3 liczniki: Timer0 8-bitowy Timer1 16-bitowy Timer2 8-bitowy, mogący pracować
Wbudowane układy peryferyjne cz. 1 Wykład 7
Wbudowane układy peryferyjne cz. 1 Wykład 7 Wbudowane układy peryferyjne UWAGA Nazwy rejestrów i bitów, ich lokalizacja itd. odnoszą się do mikrokontrolera ATmega32 i mogą być inne w innych modelach! Ponadto
Timery w mikrokontrolerach STM32F3
Zachodniopomorski Uniwersytet Technologiczny WYDZIAŁ ELEKTRYCZNY Katedra Inżynierii Systemów, Sygnałów i Elektroniki LABORATORIUM Podstawy Programowania Mikroprocesorów i Procesorów DSP Timery w mikrokontrolerach
2. Architektura mikrokontrolerów PIC16F8x... 13
Spis treści 3 Spis treœci 1. Informacje wstępne... 9 2. Architektura mikrokontrolerów PIC16F8x... 13 2.1. Budowa wewnętrzna mikrokontrolerów PIC16F8x... 14 2.2. Napięcie zasilania... 17 2.3. Generator
Układy czasowo-licznikowe w systemach mikroprocesorowych
Układy czasowo-licznikowe w systemach mikroprocesorowych 1 W każdym systemie mikroprocesorowym znajduje zastosowanie układ czasowy lub układ licznikowy Liczba liczników stosowanych w systemie i ich długość
ZAPRASZAMY NA NASZE AUKCJE SCIGANY81 (c) Copyright
RADIO KUCHENNE DAB2035 PLL FM 1. Ogólny opis Pasmo DAB+ / FM Wyświetlanie nazwy stacji radiowej i automatyczna aktualizacja zegara Moduł elektroniczny do tuningu radiowego Krystaliczna precyzja działania
Programowanie mikrokontrolerów 2.0
6.1 Programowanie mikrokontrolerów 2.0 Liczniki Marcin Engel Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 31 października 2017 Liczniki Układy sprzętowe wyposażone w wewnętrzny rejestr
Hardware mikrokontrolera X51
Hardware mikrokontrolera X51 Ryszard J. Barczyński, 2016 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Hardware mikrokontrolera X51 (zegar)
Porty GPIO w mikrokontrolerach STM32F3
Zachodniopomorski Uniwersytet Technologiczny WYDZIAŁ ELEKTRYCZNY Katedra Inżynierii Systemów, Sygnałów i Elektroniki LABORATORIUM Podstawy Programowania Mikroprocesorów i Procesorów DSP Porty GPIO w mikrokontrolerach
1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33
Spis treści 3 1. Wprowadzenie...11 1.1. Wstęp...12 1.2. Mikrokontrolery rodziny ARM...13 1.3. Architektura rdzenia ARM Cortex-M3...15 1.3.1. Najważniejsze cechy architektury Cortex-M3... 15 1.3.2. Rejestry
LOW ENERGY TIMER, BURTC
PROJEKTOWANIE ENERGOOSZCZĘDNYCH SYSTEMÓW WBUDOWANYCH ĆWICZENIE 4 LOW ENERGY TIMER, BURTC Katedra Elektroniki AGH 1. Low Energy Timer tryb PWM Modulacja szerokości impulsu (PWM) jest często stosowana przy
Mikroprocesory i Mikrosterowniki Liczniki Timer Counter T/C0, T/C1, T/C2
Mikroprocesory i Mikrosterowniki Liczniki Timer Counter T/C0, T/C1, T/C2 Wydział Elektroniki Mikrosystemów i Fotoniki Piotr Markowski Na prawach rękopisu. Na podstawie dokumentacji ATmega8535, www.atmel.com.
Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści
Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści 1. Konfiguracja pinów2 2. ISP..2 3. I/O Ports..3 4. External Interrupts..4 5. Analog Comparator5 6. Analog-to-Digital Converter.6 7.
Wstęp...9. 1. Architektura... 13
Spis treści 3 Wstęp...9 1. Architektura... 13 1.1. Schemat blokowy...14 1.2. Pamięć programu...15 1.3. Cykl maszynowy...16 1.4. Licznik rozkazów...17 1.5. Stos...18 1.6. Modyfikowanie i odtwarzanie zawartości
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska Współpraca z układami peryferyjnymi i urządzeniami zewnętrznymi Testowanie programowe (odpytywanie, przeglądanie) System przerwań Testowanie programowe
Programowanie mikrokontrolerów 2.0
13.1 Programowanie mikrokontrolerów 2.0 Sterowanie fazowe Marcin Engel Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 19 grudnia 2016 Triak Triak jest półprzewodnikowym elementem przełączającym
Zewnętrzne układy peryferyjne cz. 1 Wykład 12
Zewnętrzne układy peryferyjne cz. 1 Wykład 12 Wyświetlacz LCD zgodny z HD44780 Wyświetlacz LCD zgodny z HD44780 2 HD44780 Standardowy sterownik alfanumerycznych wyświetlaczy LCD opracowany przez firmę
MARM. Laboratorium 1 system zegarów, porty wejścia/wyjścia. M. Suchenek
MARM M. Suchenek Laboratorium 1 system zegarów, porty wejścia/wyjścia Celem laboratorium jest zapoznanie się ze środowiskiem uruchomieniowym Keil µvision, w tym konfiguracja środowiska, systemu zegarów,
INSTRUKCJA OBSŁUGI. Przekaźnik czasowy ETM ELEKTROTECH Dzierżoniów. 1. Zastosowanie
INSTRUKCJA OBSŁUGI 1. Zastosowanie Przekaźnik czasowy ETM jest zadajnikiem czasowym przystosowanym jest do współpracy z prostownikami galwanizerskimi. Pozwala on załączyć prostownik w stan pracy na zadany
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikrokontrolery i Mikroprocesory Timery i przerwania laboratorium: 03 autor: mgr inż. Katarzyna Smelcerz Kraków,
Układy czasowo-licznikowe w systemach 80x86
Układy czasowo-licznikowe w systemach 80x86 Semestr zimowy 2014/2015, WIEiK-PK 1 Układy czasowo-licznikowe w systemach 80x86 W komputerach osobistych oprogramowanie w szczególności, jądro systemu musi
Przerwania w systemie mikroprocesorowym. Obsługa urządzeo wejścia/wyjścia
Przerwania w systemie mikroprocesorowym 1 Obsługa urządzeo wejścia/wyjścia W każdym systemie mikroprocesorowym oprócz pamięci programu i pamięci danych znajduje się szereg układów lub urządzeo wejścia/wyjścia,
Programowanie mikrokontrolerów. 5 grudnia 2007
Programowanie mikrokontrolerów Marcin Engel Marcin Peczarski 5 grudnia 2007 Przerwania Umożliwiają asynchroniczną obsługę różnych zdarzeń, np.: zmiana stanu wejścia, zakończenie przetwarzania analogowo-cyfrowego,
LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32
Zachodniopomorski Uniwersytet Technologiczny WYDZIAŁ ELEKTRYCZNY Katedra Inżynierii Systemów, Sygnałów i Elektroniki LABORATORIUM TECHNIKA MIKROPROCESOROWA TIMERY w mikrokontrolerach Atmega16-32 Opracował:
Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury
Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury Cel ćwiczenia: Głównym celem ćwiczenia jest nauczenie się obsługi klawiatury. Klawiatura jest jednym z urządzeń wejściowych i prawie zawsze występuje
Wbudowane układy komunikacyjne cz. 1 Wykład 10
Wbudowane układy komunikacyjne cz. 1 Wykład 10 Wbudowane układy komunikacyjne UWAGA Nazwy rejestrów i bitów, ich lokalizacja itd. odnoszą się do mikrokontrolera ATmega32 i mogą być inne w innych modelach!
Prezentacja systemu RTLinux
Prezentacja systemu RTLinux Podstawowe założenia RTLinux jest system o twardych ograniczeniach czasowych (hard real-time). Inspiracją dla twórców RTLinux a była architektura systemu MERT. W zamierzeniach
Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści
Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści 1. Konfiguracja pinów...2 2. ISP...2 3. I/O Ports...3 4. External Interrupts...4 5. Analog Comparator...5 6. Analog-to-Digital Converter...6
LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32
Zachodniopomorski Uniwersytet Technologiczny WYDZIAŁ ELEKTRYCZNY Katedra Inżynierii Systemów, Sygnałów i Elektroniki LABORATORIUM TECHNIKA MIKROPROCESOROWA TIMERY w mikrokontrolerach Atmega16-32 Opracował:
Modułowy programowalny przekaźnik czasowy firmy Aniro.
Modułowy programowalny przekaźnik czasowy firmy Aniro. Rynek sterowników programowalnych Sterowniki programowalne PLC od wielu lat są podstawowymi systemami stosowanymi w praktyce przemysłowej i stały
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i mikrokontrolery Liczniki i timery laboratorium: 03 autor: mgr inż. Michał Lankosz dr hab. Zbisław
Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.
Sprawozdanie z projektu MARM Część druga Specyfikacja końcowa Prowadzący: dr. Mariusz Suchenek Autor: Dawid Kołcz Data: 01.02.16r. 1. Temat pracy: Układ diagnozujący układ tworzony jako praca magisterska.
ĆWICZENIE 7. Wprowadzenie do funkcji specjalnych sterownika LOGO!
ćwiczenie nr 7 str.1/1 ĆWICZENIE 7 Wprowadzenie do funkcji specjalnych sterownika LOGO! 1. CEL ĆWICZENIA: zapoznanie się z zaawansowanymi możliwościami mikroprocesorowych sterowników programowalnych na
STM32 tryby obniżonego poboru mocy
STM32 tryby obniżonego poboru mocy Temat obniżonego poboru mocy pobieranej przez mikrokontrolery pojawia się co jakiś czas w różnych publikacjach. Obecnie stał się bardziej medialny za sprawą coraz bardziej
Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307
Język C Wykład 9: Mikrokontrolery cz.2 Łukasz Gaweł Chemia C pokój 307 lukasz.gawel@pg.edu.pl Pierwszy program- powtórka Częstotliwość zegara procesora μc (należy sprawdzić z kartą techniczną μc) Dodaje
PROGRAMOWALNE SYSTEMY MECHATRONIKI
PROGRAMOWALNE SYSTEMY MECHATRONIKI Laboratorium nr 5 Podstawy programowania mikrokontrolerów. Przerwania. 1. System przerwań informacje ogólne Programy sterujące mikrokontrolerów rzadko mają postać listy
1.2. Architektura rdzenia ARM Cortex-M3...16
Od Autora... 10 1. Wprowadzenie... 11 1.1. Wstęp...12 1.1.1. Mikrokontrolery rodziny ARM... 14 1.2. Architektura rdzenia ARM Cortex-M3...16 1.2.1. Najważniejsze cechy architektury Cortex-M3... 16 1.2.2.
Szkolenia specjalistyczne
Szkolenia specjalistyczne AGENDA Programowanie mikrokontrolerów w języku C na przykładzie STM32F103ZE z rdzeniem Cortex-M3 GRYFTEC Embedded Systems ul. Niedziałkowskiego 24 71-410 Szczecin info@gryftec.com
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikrokontrolery i Mikroprocesory Zapoznanie się ze środowiskiem IAR Embedded Workbench; kompilacja, debuggowanie,
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i mikrokontrolery Przerwania laboratorium: 04 autor: mgr inż. Michał Lankosz dr hab. Zbisław Tabor,
LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Przetwornik ADC procesora sygnałowego F/C240 i DAC C240 EVM
LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ Przetwornik ADC procesora sygnałowego F/C240 i DAC C240 EVM Strona 1 z 7 Opracował mgr inż. Jacek Lis (c) ZNE 2004 1.Budowa przetwornika ADC procesora
Radiobudzik FM SoundMaster FUR
INSTRUKCJA OBSŁUGI Radiobudzik FM SoundMaster FUR Nr produktu 352320 Strona 1 z 6 1. Pokrętło głośności 2. Przycisk ALARM 1 /RADIO/ BUZZ (brzęczyk) 3. Wyświetl niski/wysoki ściemniacz 4.
INSTRUKCJA OBSŁUGI STEROWNIKA DO SAUNY. FFES Serwis: 888-777-053 Biuro: 796-149-338 e-mail: biuro@ffes.pl www.ffes.pl
INSTRUKCJA OBSŁUGI STEROWNIKA DO SAUNY ZXX FFES Serwis: 888-777-053 Biuro: 796-149-338 e-mail: biuro@ffes.pl www.ffes.pl Spis treści 1. Informacje ogólne... 3 1.1 Zastosowanie... 4 1.2 Dane techniczne...
WYDZIAŁ ELEKTRYCZNY KATEDRA TELEKOMUNIKACJI I APARATURY ELEKTRONICZNEJ. Instrukcja do zajęć laboratoryjnych. Numer ćwiczenia: 4
Politechnika Białostocka WYDZIAŁ ELEKTRYCZNY KATEDRA TELEKOMUNIKACJI I APARATURY ELEKTRONICZNEJ Instrukcja do zajęć laboratoryjnych Temat ćwiczenia: Układy DMA, przetwornik cyfrowo-analogowy, transmisja
2. PORTY WEJŚCIA/WYJŚCIA (I/O)
2. PORTY WEJŚCIA/WYJŚCIA (I/O) 2.1 WPROWADZENIE Porty I/O mogą pracować w kilku trybach: - przesyłanie cyfrowych danych wejściowych i wyjściowych a także dla wybrane wyprowadzenia: - generacja przerwania
CW-HC08 Programowanie mikrokontrolera MC9S08QD4 [2]
CW-HC08 Programowanie mikrokontrolera MC9S08QD4 [2] Jan Kędzierski Marek Wnuk Wrocław 2012 Dokument stanowi instrukcję do ćwiczenia w ramach kursu Sterowniki robotów. Przebieg ćwiczenia Celem ćwiczenia
Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1
Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1 ZEGAR CZASU RZECZYWISTEGO Ćwiczenie 4 Opracował: dr inŝ.
MSP430 w przykładach (2)
MSP430 w przykładach (2) Konfigurowanie zegarowego Charakterystyczną cechą MSP430 jest rozbudowany system zegarowy. Najbardziej zaawansowane układy posiadają 3 wewnętrzne sygnały zegarowe, które można
1 Moduł Neuronu Cyfrowego SM
1 Moduł Neuronu Cyfrowego SM Moduł Neuronu Cyfrowego SM daje użytkownikowi Systemu Vision możliwość obsługi fizycznych urządzeń Neuronów Cyfrowych podłączonych do Sterownika Magistrali. Moduł odpowiada
Radio kuchenne Soundmaster DAB 2035, FM, RDS, srebrne
INSTRUKCJA OBSŁUGI Radio kuchenne Soundmaster DAB 2035, FM, RDS, srebrne Nr produktu 352353 Strona 1 z 13 Radio kuchenne DAB2035 PLL 1. Ogólny opis - Pasmo DAB + / FM - Zapewniona nazwa stacji radiowej
ad a) Konfiguracja licznika T1 Niech nasz program składa się z dwóch fragmentów kodu: inicjacja licznika T1 pętla główna
Technika Mikroprocesorowa Laboratorium 4 Obsługa liczników i przerwań Cel ćwiczenia: Celem ćwiczenia jest nabycie umiejętności obsługi układów czasowo-licznikowych oraz obsługi przerwań. Nabyte umiejętności
Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania. Sterowniki Urządzeń Mechatronicznych laboratorium. Ćw. 3: Timer v1.0
1 CEL ĆWICZENIA Celem ćwiczenia jest zapoznanie się z możliwościami odmierzania czasu za pomocą wewnętrznego TIMER a mikrokontrolerów serii AVR 2 ZAKRES NIEZBĘDNYCH WIADOMOŚCI - wiadomości z poprzednich
Radio FM kuchenne SoundMaster UR 2006, LCD, pamięć 30 stacji
INSTRUKCJA OBSŁUGI Radio FM kuchenne SoundMaster UR 2006, LCD, pamięć 30 stacji Nr produktu 352350 Strona 1 z 8 Podstawowe funkcje - Zasilanie zasilacz AC/AC - Radio FM w technologii PLL - 12/24 godzinny
Kurs Elektroniki. Część 5 - Mikrokontrolery. www.knr.meil.pw.edu.pl 1/26
Kurs Elektroniki Część 5 - Mikrokontrolery. www.knr.meil.pw.edu.pl 1/26 Mikrokontroler - autonomiczny i użyteczny system mikroprocesorowy, który do swego działania wymaga minimalnej liczby elementów dodatkowych.
Programowalne układy logiczne
Programowalne układy logiczne Układy synchroniczne Szymon Acedański Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 26 października 2015 Co to jest układ sekwencyjny? W układzie sekwencyjnym,
Programowanie mikrokontrolerów. 8 listopada 2007
Programowanie mikrokontrolerów Marcin Engel Marcin Peczarski 8 listopada 2007 Alfanumeryczny wyświetlacz LCD umożliwia wyświetlanie znaków ze zbioru będącego rozszerzeniem ASCII posiada zintegrowany sterownik
Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR
Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR Zadanie polega na napisaniu pierwszego programu w języku C, jego poprawnej kompilacji i wgraniu na mikrokontroler. W tym celu należy zapoznać
Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1
Wątki 1. Wątki - wprowadzenie Wątkiem nazywamy sekwencyjny przepływ sterowania w procesie, który wykonuje dany program np. odczytywanie i zapisywanie plików Program Javy jest wykonywany w obrębie jednego
Układy zegarowe w systemie mikroprocesorowym
Układy zegarowe w systemie mikroprocesorowym 1 Przykładowa struktura systemu mikroprocesorowego IRQ AcDMA ReDMA Generator zegarowy fx fcpu fio fm System przerwań sprzętowych IRQ Bezpośredni dostęp do pamięci
Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515
Laboratorium Techniki Mikroprocesorowej Informatyka studia dzienne Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515 Cel ćwiczenia Celem ćwiczenia jest poznanie możliwości nowoczesnych
1. INSTRUKCJA OBSŁUGI WYŚWIETLACZA LCD C600E USB
1. INSTRUKCJA OBSŁUGI WYŚWIETLACZA LCD C600E USB 1.1 OBSZAR WIDOKU POCZĄTKOWEGO 1.2 WYMIARY PANELU 1.3 DEFINICJA PRZYCISKÓW 1.4 NORMALNA PRACA Przytrzymaj włącz/wyłącz aby uruchomić wyświetlacz. Po włączeniu
Wykład 4. Przegląd mikrokontrolerów 16-bit: - PIC24 - dspic - MSP430
Wykład 4 Przegląd mikrokontrolerów 16-bit: - PIC24 - dspic - MSP430 Mikrokontrolery PIC Mikrokontrolery PIC24 Mikrokontrolery PIC24 Rodzina 16-bitowych kontrolerów RISC Podział na dwie podrodziny: PIC24F
Standardowe bloki funkcjonalne
Standardowe bloki funkcjonalne Wykorzystując języki ST i LD należy zapoznać się z działaniem standardowych bloków funkcjonalnych (elementy dwustanowe (bistabilne), elementy detekcji zbocza, liczniki, czasomierze)
3.2. Zegar/kalendarz z pamięcią statyczną RAM 256 x 8
3.2. Zegar/kalendarz z pamięcią statyczną RAM 256 x 8 Układ PCF 8583 jest pobierającą małą moc, 2048 bitową statyczną pamięcią CMOS RAM o organizacji 256 x 8 bitów. Adresy i dane są przesyłane szeregowo
Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.
Generowanie sygnałów testowych VHDL Wariant współbieżny (bez procesu): sygnał
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i Mikrokontrolery System przerwań laboratorium: 11 autorzy: dr hab. Zbisław Tabor, prof. PK mgr inż.
WYDZIAŁ ELEKTRYCZNY KATEDRA TELEKOMUNIKACJI I APARATURY ELEKTRONICZNEJ. Instrukcja do zajęć laboratoryjnych. Numer ćwiczenia: 2
Politechnika Białostocka WYDZIAŁ ELEKTRYCZNY KATEDRA TELEKOMUNIKACJI I APARATURY ELEKTRONICZNEJ Instrukcja do zajęć laboratoryjnych Temat ćwiczenia: Sygnały zegarowe. Obsługa GPIO i przetwornika ADC Numer
XMEGA. Warsztaty CHIP Rok akademicki 2014/2015
XMEGA Warsztaty CHIP Rok akademicki 2014/2015 Plan warsztatów: Wprowadzenie do Atmel Studio (20/11/2014) Porty I/O (20/11/2014) Przerwania (27/11/2014) Wykorzystana literatura: [1] Dokumentacja ATMEL(www.atmel.com):
Informator techniczny
Synchronizacja czasu z serwerem SNTP w kontrolerach RX3i i sterownikach VersaMax Wstęp Synchronizacja zegara sterownika może być konieczna, gdy kilka jednostek rejestruje czasy zajść pewnych zdarzeń, a
Instrukcja obsługi sterownika Novitek Triton
Instrukcja obsługi sterownika Triton I. Zastosowanie Sterownik TRITON przeznaczony jest do obsługi generatorów. Sterownik ten jest wyposażony w funkcję sterowania przekaźnikiem światła oraz przekaźnikiem
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 1.5 kva Konfiguracja parametrów pracy UPS przy pomocy klawiatury Centrum Elektroniki Stosowanej CES sp. z o. o. 30-732 Kraków, ul. Biskupińska 14 tel.:
LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Mechanizm przerwań i menadżer zdarzeń procesora sygnałowego F/C240
LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ Mechanizm przerwań i menadżer zdarzeń procesora sygnałowego F/C240 Strona 1 z 12 Opracował mgr inż. Jacek Lis (c) ZNE 2004 1. Mechanizm przerwań
Elastyczne systemy wytwarzania
ZAKŁAD PROJEKTOWANIA TECHNOLOGII Laboratorium: Elastyczne systemy wytwarzania Załącznik do instrukcji nr 1 Opracował: Jakub Zawrotniak Poniżej przedstawiono sposób tworzenia nowego projektu/programu: a)
VIDEO REKORDER 4-KANAŁOWY (STAND-ALONE) model : DVR-4/25U INSTRUKCJA OBSŁUGI
VIDEO REKORDER -KANAŁOWY (STAND-ALONE) model : DVR-/25U INSTRUKCJA OBSŁUGI Spis treści 1. Opis podstawowy 2. Wygląd 2.1.Panel przedni 2.2.Panel tylny 3. Instalacja 3.2.Podłączenie kamer i monitorów 3.3.Podłączenie
SML3 październik
SML3 październik 2005 16 06x_EIA232_4 Opis ogólny Moduł zawiera transceiver EIA232 typu MAX242, MAX232 lub podobny, umożliwiający użycie linii RxD, TxD, RTS i CTS interfejsu EIA232 poprzez złącze typu
dokument DOK 02-05-12 wersja 1.0 www.arskam.com
ARS3-RA v.1.0 mikro kod sterownika 8 Linii I/O ze zdalną transmisją kanałem radiowym lub poprzez port UART. Kod przeznaczony dla sprzętu opartego o projekt referencyjny DOK 01-05-12. Opis programowania
Ćwiczenia z S7-1200. Komunikacja S7-1200 z miernikiem parametrów sieci PAC 3200 za pośrednictwem protokołu Modbus/TCP.
Ćwiczenia z S7-1200 Komunikacja S7-1200 z miernikiem parametrów sieci PAC 3200 za pośrednictwem protokołu Modbus/TCP FAQ Marzec 2012 Spis treści 1 Opis zagadnienie poruszanego w ćwiczeniu. 3 1.1 Wykaz
UWAGA! ELEKTRYCZNE POD NAPIĘCIEM!
tech -1- ST-360 UWAGA! URZĄDZENIE ELEKTRYCZNE POD NAPIĘCIEM! Przed dokonaniem jakichkolwiek czynności związanych z zasilaniem (podłączanie przewodów, instalacja urządzenia, itp.) należy upewnić się, że
Programowanie mikrokontrolerów AVR
Programowanie mikrokontrolerów AVR Czym jest mikrokontroler? Mikrokontroler jest małym komputerem podłączanym do układów elektronicznych. Pamięć RAM/ROM CPU wykonuje program Układy I/O Komunikacje ze światem
Programowanie mikrokontrolerów AVR z rodziny ATmega.
Programowanie mikrokontrolerów AVR z rodziny ATmega. Materiały pomocnicze Jakub Malewicz jakub.malewicz@pwr.wroc.pl Wszelkie prawa zastrzeżone. Kopiowanie w całości lub w częściach bez zgody i wiedzy autora
Radiobudzik FM, Karcher Radiobudzik UR , Pamięć programów: 10
INSTRUKCJA OBSŁUGI Nr produktu 001197354 Radiobudzik FM, Karcher Radiobudzik UR 1040 807254, Pamięć programów: 10 Strona 1 z 8 Funkcje i elementy sterujące 1. Przycisk MEM.SET / NAP/M+ / Display On/Off
Jednym słowem mikroprocesor to procesor wykonany w skali mikro w technologii mikroelektronicznej. Procesor to układ (urządzenie) przetwarzające
1 Jednym słowem mikroprocesor to procesor wykonany w skali mikro w technologii mikroelektronicznej. Procesor to układ (urządzenie) przetwarzające informacje z zewnątrz. Lub jeszcze inaczej Procesor (ang.
Programator ICP mikrokontrolerów rodziny ST7. Full MFPST7. Lite. Instrukcja użytkownika 03/09
Full Lite MFPST7 Programator ICP mikrokontrolerów rodziny ST7 Instrukcja użytkownika 03/09 Spis treści WSTĘP 3 CZYM JEST ICP? 3 PODŁĄCZENIE PROGRAMATORA DO APLIKACJI 4 OBSŁUGA APLIKACJI ST7 VISUAL PROGRAMMER
Programowanie Mikrokontrolerów
Programowanie Mikrokontrolerów Wyświetlacz alfanumeryczny oparty na sterowniku Hitachi HD44780. mgr inż. Paweł Poryzała Zakład Elektroniki Medycznej Alfanumeryczny wyświetlacz LCD Wyświetlacz LCD zagadnienia:
PROGRAMOWANIE Z LICZNIKIEM CYKLI
PRz AiS - 2012 UKŁADY CZASOWE Programowanie z licznikiem cykli. Fala prostokątna. Standardowe czasomierze. Fala prostokątna w LD. Zabezpieczenie silnika. Drugie naciśnięcie. Minimalne układy z czasomierzami.