32 bity jak najprościej (3)
|
|
- Natalia Sikora
- 6 lat temu
- Przeglądów:
Transkrypt
1 32 bity jak najprościej (3) Pierwsze kroki z modułem STM32F0DISCOVERY Samouczek jest dedykowany szczególnie tym projektantom, którzy stają przed perspektywą zmiany mikrokontrolera z 8-bitowego na nowszy i tańszy 32-bitowy. Wszystkie programy są napisane w języku C. W przykładach nie użyto bibliotek służących do obsługi peryferiali, dzięki czemu kod programów jest krótki i czytelny, a zajętość pamięci znacznie mniejsza, niż w typowych programach demonstracyjnych, udostępnianych przez producentów mikrokontrolerów. Zwrócono również szczególną uwagę na poprawność prezentowanych rozwiązań i sposób zapisu programu ułatwiający optymalizację kodu i wychwytywanie błędów przez kompilator. Przedstawione programy zostały napisane w taki sposób, że nie generują one żadnych ostrzeżeń kompilatora. Krok po kroku Kursy EP Port szeregowy USART Mikrokontrolery STM32F051 są wyposażone w sterownik transmisji szeregowej USART, który może służyć do transmisji zarówno asynchronicznej, jak i synchronicznej. Użyty w trybie asynchronicznym, może on np. sterować interfejsem RS232. Na płytce DISCO- VERY nie ma translatorów poziomów RS232, jednak własności elektryczne i logiczne STM32F05x umożliwiają współpracę z interfejsem RS232 bez użycia translatora, o ile transmisja odbywa się w warunkach laboratoryjnych na małą odległość i bez zakłóceń. Do połączenia mikrokontrolera z interfejsem RS232C komputera PC potrzebny będzie tylko jeden rezystor o wartości od 47 do 100 kv. Przedstawiony poniżej projekt oprogramowania powstał przez modyfikację projektu BtnBlink. Nosi on nazwę USART1. Zaprogramowanie modułu USART Przed zaprogramowaniem modułu USART należy określić parametry transmisji. Wybierzemy szybkość 9600 bit/s, format 8-bitowy bez parzystości, z jednym bitem stopu. Wartość, która posłuży do zaprogramowania szybkości transmisji, zdefiniujemy jako wyrażenie preprocesora. Ponieważ nie użyjemy układu translatora poziomów RS232C, zaprogramujemy odwracanie poziomów napięć na liniach RX i TX. W celu zaprogramowania modułu USART należy: Włączyć moduł poprzez ustawienie bitu USART1EN w rejestrze APB2ENR. Włączyć port GPIOA. Wybrać funkcję AF 1 (RX i TX USART1) dla wyprowadzeń 10 i 9 portu GPIOA. Włączyć ściąganie w dół dla linii RX Ustawić linie 10 i 9 portu GPIOA jako AF, pozostawiając funkcje interfejsu SWD dla linii 14 i 13. Ustawić podzielnik szybkości transmisji w rejestrze BRR modułu USART1. Włączyć odwracanie polaryzacji linii RX i TX bity TXINV i RXINV rejestru CR2. Włączyć przerwanie odbioru danych, zezwolenie na nadawanie i odbiór oraz cały układ USART1 w rejestrze CR1 musi to być ostatnia czynność podczas programowania rejestrów modułu USART. Włączyć przerwanie USART1 w module NVIC rejestr ISER[0]. Ponieważ w projekcie użyjemy przerwania modułu USART, należy je oprogramować. Jedynym włączonym źródłem tego przerwania będzie odebranie danej. Procedura obsługi przerwania USART1 odczytuje odebrany znak i poddaje go prostemu przetwarzaniu. Małe litery są zamieniane na wielkie i odwrotnie, a odebranie kodu CR powoduje, poprzez ustawienie zmiennej mchange, zmianę trybu świecenia diod. Po przetworzeniu znak zostaje odesłany z powrotem. Podczas wysyłania znaku do PC nie jest sprawdzana gotowość nadajnika USART. W naszym przykładzie nie ma to znaczenia, gdyż przy nadawaniu z komputera PC znaków wprowadzanych przez użytkownika w programie terminala nie ma możliwości przepełnienia bufora nadajnika interfejsu USART mikrokontrolera znakami odsyłanymi zwrotnie. Nie jest to jednak uniwersalny sposób programowej obsługi nadawania, który może być zastosowany w każdej sytuacji. Poprawne nadawanie danych z użyciem przerwań zostanie zaprezentowane w następnym przykładzie. Połączenie modułu DISCOVERY z komputerem W celu umożliwienia komunikacji modułu z komputerem PC należy poprowadzić trzy połączenia masy oraz dwóch linii danych. Ponieważ zasilamy moduł STM32F0 z komputera, masa jest już połączona przez port USB. Do nawiązania transmisji wystarczy więc wykonać połączenia linii danych z komputera do modułu i z modułu do komputera. Wyjście danych mikrokontrolera linię 9 portu GPIOA łączymy bezpośrednio z wejściem danych komputera PC linią 2 złącza DB9. Wejście danych mikrokontrolera linię 10 portu GPIOA łączymy przez rezystor szeregowy 100 kv z wyjściem danych komputera PC linią 3 złącza DB9. Podczas wykonywania połączeń 86 ELEKTRONIKA PRAKTYCZNA 9/ _st2.indd :45:15
2 Krok po kroku Kursy EP Listing 1. Najprostszy przykład obsługi USART /* STM32F0DISCOVERY tutorial USART1 + TIM3 PWM blinker with table-driven init and blink mode switching gbm, */ #include stm32f0xx.h // defs for STM32F05x chips #define GPIO_MODER_OUT 1 #define GPIO_MODER_AF 2 #define GPIOA_MODER_SWD (GPIO_MODER_AF << (14 << 1) GPIO_MODER_AF << (13 << 1)) // keep SWD pins #define GPIO_PUPDR_PU 1 #define GPIO_PUPDR_PD 2 #define TIM_CCMR2_OC3M_PWM1 0x0060 // OC3M[2:0] - PWM mode 1 #define TIM_CCMR2_OC4M_PWM1 0x6000 // OC4M[2:0] - PWM mode 1 typedef IO uint32_t * IO32p; // defs for STM32F0DISCOVERY board #define LED_PORT GPIOC #define BLUE_LED_BIT 8 #define GREEN_LED_BIT 9 #define BUTTON_PORT GPIOA #define BUTTON_BIT 0 #define BLUE_LED_PWM TIM3->CCR3 #define GREEN_LED_PWM TIM3->CCR4 #define SYSCLK_FREQ HSI_VALUE #define BAUD_RATE 9600 #define BLINK_PERIOD 50 // * 10 ms #define BTN_ACK_PERIOD 50 // * 10 ms // PWM constants #define PWM_FREQ 400 // Hz #define PWM_STEPS 80 #define PWM_CLK SYSCLK_FREQ #define PWM_PRE (PWM_CLK / PWM_FREQ / PWM_STEPS) #define LED_MAX (PWM_STEPS - 1) #define LED_DIM 1 #define LED_OFF 0 struct init_entry_ volatile uint32_t *loc; uint32_t value; ; static INLINE void writeregs(const struct init_entry_ *p) for (; p->loc; p ++) *p->loc = p->value; void SystemInit(void) FLASH->ACR = FLASH_ACR_PRFTBE; // enable prefetch static const struct init_entry_ init_table[] = &RCC->APB2ENR, RCC_APB2ENR_USART1EN, // USART1 clock enable // port setup &RCC->AHBENR, RCC_AHBENR_GPIOCEN RCC_AHBENR_GPIOAEN, // GPIOC, GPIOA &GPIOA->AFR[1], 1 << (2 << 2) 1 << (1 << 2), // set USART pins 10 - RX, 9 - TX &GPIOA->PUPDR, GPIO_PUPDR_PD << (10 << 1), // set pulldn on PA10 &GPIOA->MODER, GPIOA_MODER_SWD GPIO_MODER_AF << (10 << 1) GPIO_MODER_AF << (9 << 1), // set UART pins as AF &LED_PORT->MODER, GPIO_MODER_AF << (GREEN_LED_BIT << 1) GPIO_MODER_AF << (BLUE_LED_BIT << 1), // set LED pins as AF &RCC->AHBENR, RCC_AHBENR_GPIOAEN, // GPIOA // USART1 setup ( IO32p)&USART1->BRR, (SYSCLK_FREQ + BAUD_RATE / 2) / BAUD_RATE, // &USART1->CR2, USART_CR2_TXINV USART_CR2_RXINV, // Invert ext. lines &USART1->CR1, USART_CR1_RXNEIE USART_CR1_TE USART_CR1_RE USART_CR1_UE, // enable // PWM timer setup - TIM3 &RCC->APB1ENR, RCC_APB1ENR_TIM3EN, // TIM3 ( IO32p)&TIM3->PSC, PWM_PRE - 1, // prescaler ( IO32p)&TIM3->ARR, PWM_STEPS - 1, // period // blue - CH3, green - CH4 ( IO32p)&TIM3->CCMR2, TIM_CCMR2_OC4M_PWM1 TIM_CCMR2_OC4PE TIM_CCMR2_OC3M_PWM1 TIM_CCMR2_OC3PE, // PWM mode 1, buffered preload ( IO32p)&TIM3->CCER, TIM_CCER_CC4E TIM_CCER_CC3E, // enable CH3, 4 output ( IO32p)&TIM3->DIER, TIM_DIER_UIE, // enable update interrupt ( IO32p)&TIM3->CR1, TIM_CR1_ARPE TIM_CR1_CEN, // auto reload, enable // interrupts and sleep &NVIC->ISER[0], 1 << USART1_IRQn 1 << TIM3_IRQn, &SCB->SCR, SCB_SCR_SLEEPONEXIT_Msk, // sleep while not in handler 0, 0 // enable interrupts ; int main(void) writeregs(init_table); WFI(); // go to sleep ELEKTRONIKA PRAKTYCZNA 9/ _st2.indd :45:15
3 Listing 1. c.d. static _Bool mchange = 0; void TIM3_IRQHandler(void) static uint8_t blink_timer = BLINK_PERIOD; static enum BM_SLOW, BM_FAST, BM_OFF blink_mode = BM_SLOW; static uint8_t bstate = 0; static uint8_t blue_led_timer = 0, on_time = 0; static const uint8_t blink_periods[] = 100, 50, 1; static uint8_t tdiv = 0; static uint8_t blue_target = LED_DIM, green_target = LED_DIM; uint32_t pwmval; TIM3->SR = ~TIM_SR_UIF; // clear interrupt flag if ((++ tdiv & 3) == 0) bstate = (bstate << 1 & 0xf) (BUTTON_PORT->IDR >> BUTTON_BIT & 1); if (blue_led_timer) if (-- blue_led_timer == 0) blue_target = LED_DIM; else if (bstate == 1 mchange) // button pressed or CR received - change blink mode if (++ blink_mode > BM_OFF) blink_mode = BM_SLOW; blue_led_timer = BTN_ACK_PERIOD; blue_target = LED_MAX; USART1->TDR = blink_mode + 0 ; mchange = 0; if (-- blink_timer == 0) blink_timer = blink_periods[blink_mode]; on_time = blink_timer >> 1; green_target = LED_DIM; else if (blink_timer == on_time) green_target = LED_MAX; if ((pwmval = BLUE_LED_PWM)!= blue_target) BLUE_LED_PWM = pwmval < blue_target? pwmval + 1 : pwmval - 1; if ((pwmval = GREEN_LED_PWM)!= green_target) GREEN_LED_PWM = pwmval < green_target? pwmval + 1 : pwmval - 1; void USART1_IRQHandler(void) if (USART1->ISR & USART_ISR_RXNE) // data received uint8_t c; c = USART1->RDR; if (c == \r ) mchange = 1; else if ((c >= A && c <= Z ) (c >= a && c <= z )) c ^= A ^ a ; USART1->TDR = c; Krok po kroku Kursy EP należy zachować szczególną uwagę błędne podłączenie wyjścia danych mikrokontrolera do niewłaściwej linii złącza DB9 może spowodować trwałe uszkodzenie mikrokontrolera. Obsługa nadajnika USART z użyciem przerwań Poprzedni przykład (listing 1) pokazuje dość prostą i nienadającą się do szerszego zastosowania metodę nadawania danych przez moduł USART. W kolejnym projekcie zaprezentujemy nadawanie ciągów znaków przy użyciu przerwania zgłaszanego przy gotowości nadajnika. W każdym projekcie urządzenia nadającego dane musimy zadbać o to, by strumień danych nie przekraczał możliwości nadajnika. Nasz program będzie zliczał naciśnięcia przycisku. Po każdym naciśnięciu wartość licznika będzie wysyłana do PC przez interfejs UART w postaci 8-cyfrowej liczby szesnastkowej zakończonej sekwencją przejścia do nowego wiersza CR+LF. Każde naciśnięcie przycisku będzie więc powodowało transmisję 10 bajtów. Przesyłane dane można będzie oglądać przy użyciu programu terminala. Ponieważ z zastosowanego wcześniej algorytmu obsługi przycisku wynika, że można zarejestrować maksymalnie 25 naciśnięć w ciągu sekundy, przy szybkości transmisji 9600 bit/s nie zachodzi obawa nasycenia nadajnika. Aby obsługa transmisji była uniwersalna, zastosujemy dla transmitowanych danych bufor cykliczny, pomimo że nie jest on niezbędny w naszym zastosowaniu, w którym długość przesyłanego bloku danych jest stała. Program powstanie przez modyfikację poprzedniego przykładu użycia USART. Gotowy projekt nosi nazwę USART1cnt. Procedury obsługi nadawania Zaczynamy od sekwencji inicjującej USART1. Tym razem nie będziemy używali przerwania odbiornika. Musimy za to oprogramować nadawanie danych przy użyciu przerwania nadajnika. 88 ELEKTRONIKA PRAKTYCZNA 9/ _st2.indd :45:15
4 Krok po kroku Kursy EP W programie zdefiniujemy bufor nadawanych znaków u1_outbuf[] oraz dwa indeksy wskaźniki znaków wstawianych i pobieranych z bufora u1_obiptr i u1_ oboptr. Gdy bufor jest pusty, oba wskaźniki są równe. Przerwanie nadajnika będzie włączane tylko wtedy, gdy w buforze znajdą się dane do nadawania. Procedura obsługi przerwania USART1 jest wywoływana, gdy interfejs jest gotowy na przyjęcie danej do nadawania i jest włączone przerwanie nadajnika. Procedura najpierw oblicza przyszłą wartość wskaźnika danych pobieranych. Jeżeli po wysłaniu kolejnego znaku bufor zostałby opróżniony, przerwanie nadajnika jest wyłączane. Następnie znak z bufora jest ładowany do rejestru nadajnika oraz jest modyfikowany wskaźnik pobieranych danych. Procedura wstawienia znaku do bufora USART1_put sprawdza, czy w buforze jest miejsce, a następnie wstawia znak do bufora, przesuwa wskaźnik wstawiania i włącza przerwanie nadajnika. W przypadku zapełnienia bufora procedura zwraca wartość 1, sygnalizującą błąd. Procedura nie czeka w takim przypadku na zwolnienie miejsca w buforze. Procedura wysyłania cyfry szesnastkowej puthexdigit zamienia wartość tetrady na jej reprezentację szesnastkową w kodzie ASCII, a następnie wstawia ją do bufora przy użyciu funkcji USART1_put. Procedura obsługi przerwania timera W procedurze zadeklarowano zmienną count licznik zliczający naciśnięcia przycisku. Procedura obsługi timera w przypadku wykrycia naciśnięcia przycisku inkrementuje licznik i wstawia do bufora nadawczego jego reprezentację znakową, zakończoną sekwencją końca wiersza. Równocześnie jest zaświecana niebieska dioda, sygnalizująca naciśnięcie przycisku (listing 2). Zliczanie czasu i transmisja USART z użyciem DMA Kolejny program będzie transmitował dane przez USART korzystając z modułu bezpośredniego dostępu do pamięci, czyli bez udziału oprogramowania w transmisji każdego bajtu. Tam razem program będzie pełnił rolę prostego timera, odliczającego czas w sekundach. Naciśnięcie przycisku umieszczonego na płytce będzie powodowało wyzerowanie i restart timera. Co jedną sekundę bieżąca wartość timera będzie transmitowana przez USART można ją wyświetlić na PC korzystając z programu termi- Listing 2. Obsługa zliczania przycisku i przesyłania danych przez UART /* STM32F0DISCOVERY tutorial USART1 interrupt-driven Tx gbm, */ #include stm32f0xx.h // defs for STM32F05x chips #define GPIO_MODER_OUT 1 #define GPIO_MODER_AF 2 // keep SWD pins #define GPIOA_MODER_SWD (GPIO_MODER_AF << (14 << 1) GPIO_MODER_AF << (13 << 1)) #define GPIO_PUPDR_PU 1 #define GPIO_PUPDR_PD 2 #define TIM_CCMR2_OC3M_PWM1 0x0060 // OC3M[2:0] - PWM mode 1 #define TIM_CCMR2_OC4M_PWM1 0x6000 // OC4M[2:0] - PWM mode 1 typedef IO uint32_t * IO32p; // defs for STM32F0DISCOVERY board #define LED_PORT GPIOC #define BLUE_LED_BIT 8 #define GREEN_LED_BIT 9 #define BUTTON_PORT GPIOA #define BUTTON_BIT 0 #define BLUE_LED_PWM TIM3->CCR3 #define GREEN_LED_PWM TIM3->CCR4 #define SYSCLK_FREQ HSI_VALUE #define BAUD_RATE 9600 #define BTN_ACK_PERIOD 25 // * 10 ms // PWM constants #define PWM_FREQ 400 // Hz #define PWM_STEPS 80 #define PWM_CLK SYSCLK_FREQ #define PWM_PRE (PWM_CLK / PWM_FREQ / PWM_STEPS) #define LED_MAX (PWM_STEPS - 1) #define LED_DIM 1 #define LED_OFF 0 struct init_entry_ volatile uint32_t *loc; uint32_t value; ; static INLINE void writeregs(const struct init_entry_ *p) for (; p->loc; p ++) *p->loc = p->value; void SystemInit(void) FLASH->ACR = FLASH_ACR_PRFTBE; // enable prefetch ELEKTRONIKA PRAKTYCZNA 9/ _st2.indd :45:15
5 Listing 2. c.d. static const struct init_entry_ init_table[] = // clock control &RCC->APB1ENR, RCC_APB1ENR_TIM3EN, &RCC->APB2ENR, RCC_APB2ENR_USART1EN, // port setup &RCC->AHBENR, RCC_AHBENR_GPIOCEN RCC_AHBENR_GPIOAEN, // GPIOC, GPIOA &GPIOA->AFR[1], 1 << (2 << 2) 1 << (1 << 2), // set USART pins 10 - RX, 9 - TX &GPIOA->PUPDR, GPIO_PUPDR_PD << (10 << 1), // set pulldn on PA10 &GPIOA->MODER, GPIOA_MODER_SWD GPIO_MODER_AF << (10 << 1) GPIO_MODER_AF << (9 << 1), // set UART pins as AF &LED_PORT->MODER, GPIO_MODER_AF << (GREEN_LED_BIT << 1) GPIO_MODER_AF << (BLUE_LED_BIT << 1), // set LED pins as AF &RCC->AHBENR, RCC_AHBENR_GPIOAEN, // GPIOA // USART1 setup ( IO32p)&USART1->BRR, (SYSCLK_FREQ + BAUD_RATE / 2) / BAUD_RATE, &USART1->CR2, USART_CR2_TXINV USART_CR2_RXINV, // Invert ext. lines &USART1->CR1, USART_CR1_TE USART_CR1_RE USART_CR1_UE, // enable // PWM timer setup - TIM3 ( IO32p)&TIM3->PSC, PWM_PRE - 1, // prescaler ( IO32p)&TIM3->ARR, PWM_STEPS - 1, // period // blue - CH3, green - CH4 ( IO32p)&TIM3->CCMR2, TIM_CCMR2_OC4M_PWM1 TIM_CCMR2_OC4PE TIM_CCMR2_OC3M_PWM1 TIM_CCMR2_OC3PE, // PWM mode 1, buffered preload ( IO32p)&TIM3->CCER, TIM_CCER_CC4E TIM_CCER_CC3E, // enable CH3, 4 output ( IO32p)&TIM3->DIER, TIM_DIER_UIE, // enable update interrupt ( IO32p)&TIM3->CR1, TIM_CR1_ARPE TIM_CR1_CEN, // auto reload, enable // interrupts and sleep &NVIC->ISER[0], 1 << USART1_IRQn 1 << TIM3_IRQn, &SCB->SCR, SCB_SCR_SLEEPONEXIT_Msk, // sleep while not in handler 0, 0 // enable interrupts ; int main(void) writeregs(init_table); WFI(); // go to sleep // UART1 output buffer #define U1OBSIZE 32 static uint8_t u1_outbuf[u1obsize]; static uint8_t u1_obiptr = 0, u1_oboptr = 0; void USART1_IRQHandler(void) if (USART1->ISR & USART_ISR_TXE) // ready to send uint32_t next_optr = (u1_oboptr + 1) % U1OBSIZE; if (u1_obiptr == next_optr) USART1->CR1 &= ~USART_CR1_TXEIE; // nothing more to send, disable int USART1->TDR = u1_outbuf[u1_oboptr]; u1_oboptr = next_optr; static _Bool UART1_put(uint8_t c) uint32_t next_iptr = (u1_obiptr + 1) % U1OBSIZE; if (next_iptr == u1_oboptr) return 1; // buffer full - signal overflow u1_outbuf[u1_obiptr] = c; u1_obiptr = next_iptr; USART1->CR1 = USART_CR1_TXEIE; return 0; // ok static void puthexdigit(uint8_t v) v &= 0xf; UART1_put(v + (v <= 9? 0 : A - 10)); void TIM3_IRQHandler(void) static uint8_t bstate = 0; static uint8_t blue_led_timer = 0; static uint8_t tdiv = 0; static uint8_t blue_target = LED_DIM; static uint32_t counter = 0; uint32_t pwmval; TIM3->SR = ~TIM_SR_UIF; // clear interrupt flag if ((++ tdiv & 3) == 0) // 100 Hz if ((bstate = (bstate << 1 & 0xf) (BUTTON_PORT->IDR >> BUTTON_BIT & 1)) == 1) int i; // button pressed - increment counter blue_led_timer = BTN_ACK_PERIOD; blue_target = LED_MAX; Krok po kroku Kursy EP 90 ELEKTRONIKA PRAKTYCZNA 9/ _st2.indd :45:15
6 Krok po kroku Kursy EP Listing 2. c.d. counter ++; for (i = 7; i >= 0; i --) puthexdigit(counter >> (i * 4)); UART1_put( \r ); UART1_put( \n ); if (blue_led_timer) if (-- blue_led_timer == 0) blue_target = LED_DIM; if ((pwmval = BLUE_LED_PWM)!= blue_target) BLUE_LED_PWM = pwmval < blue_target? pwmval + 1 : pwmval - 1; nala. Program, powstały przez modyfikację poprzedniego przykładu, jest zawarty w projekcie UART1dma. Oprogramowanie modułu USART i DMA Moduł USART1 jest inicjowany podobnie jak w poprzednim przykładzie. Wprowadzono jedną istotną zmianę przed finalnym uaktywnieniem USART w rejestrze CR modułu jest ustawiony bit włączający zgłaszanie żądania DMA przez nadajnik. Na początku sekwencji inicjującej jest włączany moduł DMA wymaga to ustawienia odpowiedniego bitu w rejestrze AHBENR modułu RCC. Sterownik bezpośredniego dostępu do pamięci, zrealizowany w STM32F05x, dysponuje pięcioma kanałami transmisji. Z nadajnikiem USART1 jest związany kanał 2; programując moduł DMA będziemy używali rejestrów tego kanału, dostępnych w postaci struktury poprzez wskaźnik DMA1_Channel2. Do jednorazowego zainicjowania modułu DMA potrzebne są dwa zapisy rejestrów adresów. Ponieważ specyfikowanie adresów jako stałych typów numerycznych generuje ostrzeżenie w ANSI C, zapisy te zostały umieszczone w funkcji main. Pełne programowanie modułu DMA do współpracy z nadajnikiem USART1 wymaga łącznie czterech operacji: Ustawienia adresu początkowego bufora w pamięci, z którego będą pobierane dane, w rejestrze CMAR. Ustawienia adresu rejestru danych nadajnika USART w rejestrze CMAR. Ustawienia liczby transmitowanych bajtów w rejestrze CNDTR. Ustawienia trybu transmisji oraz uaktywnienia kanału DMA poprzez zapis do rejestru sterującego kanału CCR bitów: inkrementacji adresu pamięci - MINC, kierunku transmisji z pamięci do modułu peryferyjnego DIR oraz aktywacji kanału EN. Listing 3. Obsługa DMA oraz UART /* STM32F0DISCOVERY tutorial USART1 with DMA Tx + TIM3 timer & PWM blinker gbm, */ #include stm32f0xx.h // STM32F05x #define GPIO_MODER_OUT 1 #define GPIO_MODER_AF 2 #define GPIOA_MODER_SWD (GPIO_MODER_AF << (14 << 1) GPIO_MODER_AF << (13 << 1)) // keep SWD pins #define GPIO_PUPDR_PU 1 #define GPIO_PUPDR_PD 2 #define TIM_CCMR2_OC3M_PWM1 0x0060 // OC3M[2:0] - PWM mode 1 #define TIM_CCMR2_OC4M_PWM1 0x6000 // OC4M[2:0] - PWM mode 1 typedef IO uint32_t * IO32p; // STM32F0DISCOVERY board #define LED_PORT GPIOC #define BLUE_LED_BIT 8 #define GREEN_LED_BIT 9 #define BUTTON_PORT GPIOA #define BUTTON_BIT 0 #define BLUE_LED_PWM TIM3->CCR3 #define GREEN_LED_PWM TIM3->CCR4 #define SYSCLK_FREQ HSI_VALUE #define BAUD_RATE 9600 #define BTN_ACK_PERIOD 25 // * 10 ms // PWM constants #define PWM_FREQ 400 // Hz #define PWM_STEPS 80 #define PWM_CLK SYSCLK_FREQ #define PWM_PRE (PWM_CLK / PWM_FREQ / PWM_STEPS) #define LED_MAX (PWM_STEPS - 1) #define LED_DIM 1 #define LED_OFF 0 struct init_entry_ volatile uint32_t *loc; uint32_t value; ; ELEKTRONIKA PRAKTYCZNA 9/ _st2.indd :45:16
7 Listing 3. c.d. static INLINE void writeregs(const struct init_entry_ *p) for (; p->loc; p ++) *p->loc = p->value; void SystemInit(void) FLASH->ACR = FLASH_ACR_PRFTBE; // enable prefetch static const struct init_entry_ init_table[] = // clock enable &RCC->APB1ENR, RCC_APB1ENR_TIM3EN, &RCC->APB2ENR, RCC_APB2ENR_USART1EN, &RCC->AHBENR, RCC_AHBENR_GPIOCEN RCC_AHBENR_GPIOAEN RCC_AHBENR_FLITFEN RCC_AHBENR_SRAMEN RCC_AHBENR_DMA1EN, // port setup &GPIOA->AFR[1], 1 << (2 << 2) 1 << (1 << 2), // USART pins 10 - RX, 9 - TX &GPIOA->PUPDR, GPIO_PUPDR_PD << (10 << 1), // pulldn on PA10 &GPIOA->MODER, GPIOA_MODER_SWD GPIO_MODER_AF << (10 << 1) GPIO_MODER_AF << (9 << 1), // UART pins as AF &LED_PORT->MODER, GPIO_MODER_AF << (GREEN_LED_BIT << 1) GPIO_MODER_AF << (BLUE_LED_BIT << 1), // set LED pins as AF // USART1 setup ( IO32p)&USART1->BRR, (SYSCLK_FREQ + BAUD_RATE / 2) / BAUD_RATE, // &USART1->CR2, USART_CR2_TXINV USART_CR2_RXINV, // Invert TX & RX &USART1->CR3, USART_CR3_DMAT, // enable Tx DMA &USART1->CR1, USART_CR1_TE USART_CR1_RE USART_CR1_UE, // enable // DMA init moved to main() to avoid ANSI C warnings // PWM timer setup - TIM3 ( IO32p)&TIM3->PSC, PWM_PRE - 1, // prescaler ( IO32p)&TIM3->ARR, PWM_STEPS - 1, // period // blue - CH3, green - CH4 ( IO32p)&TIM3->CCMR2, TIM_CCMR2_OC4M_PWM1 TIM_CCMR2_OC4PE TIM_CCMR2_OC3M_PWM1 TIM_CCMR2_OC3PE, // PWM mode 1, buffered preload ( IO32p)&TIM3->CCER, TIM_CCER_CC4E TIM_CCER_CC3E, // enable CH3, 4 output ( IO32p)&TIM3->DIER, TIM_DIER_UIE, // enable update interrupt ( IO32p)&TIM3->CR1, TIM_CR1_ARPE TIM_CR1_CEN, // auto reload, enable // interrupts and sleep &NVIC->ISER[0], 1 << TIM3_IRQn, // enable interrupts &SCB->SCR, SCB_SCR_SLEEPONEXIT_Msk, // sleep while not in handler 0, 0 ; static uint8_t time[8] = \r\n ; int main(void) writeregs(init_table); DMA1_Channel2->CMAR = (uint32_t)time; DMA1_Channel2->CPAR = (uint32_t)&usart1->tdr; WFI(); // go to sleep void TIM3_IRQHandler(void) static uint8_t bstate = 0; static uint8_t blue_led_timer = 0; static uint8_t tdiv = 0; static uint8_t blue_target = LED_DIM, green_target = LED_DIM; static uint8_t sdiv = 0; uint32_t pwmval; TIM3->SR = ~TIM_SR_UIF; // clear interrupt flag if ((++ tdiv & 3) == 0) // 100 Hz int i; _Bool upd_time = 0; if ((bstate = (bstate << 1 & 0xf) (BUTTON_PORT->IDR >> BUTTON_BIT & 1)) == 1) // button pressed - clear timer for (i = 0; i < 6; i ++) time[i] = 0 ; sdiv = 0; upd_time = 1; blue_target = LED_MAX; blue_led_timer = BTN_ACK_PERIOD; else if (blue_led_timer && -- blue_led_timer == 0) blue_target = LED_DIM; if (++ sdiv == 100) sdiv = 0; // increment time for (i = 5; i >= 0 && ++ time[i] > 9 ; i --) time[i] = 0 ; upd_time = 1; green_target = LED_MAX; else if (sdiv == 50) Krok po kroku Kursy EP 92 ELEKTRONIKA PRAKTYCZNA 9/ _st2.indd :45:16
8 Krok po kroku Kursy EP Listing 3. c.d. green_target = LED_DIM; if (upd_time) // init DMA for time string transfer DMA1_Channel2->CCR = 0; // disable DMA1_Channel2->CNDTR = sizeof(time); // no. of items // increment memory adress, mem->periph, enable DMA1_Channel2->CCR = DMA_CCR_MINC DMA_CCR_DIR DMA_CCR_EN; if ((pwmval = BLUE_LED_PWM)!= blue_target) BLUE_LED_PWM = pwmval < blue_target? pwmval + 1 : pwmval - 1; if ((pwmval = GREEN_LED_PWM)!= green_target) GREEN_LED_PWM = pwmval < green_target? pwmval + 1 : pwmval - 1; Z powodu wymagań standardu ANSI języka C zapis rejestrów adresowych kanału DMA następuje w funkcji main umieszczenie go w tablicy inicjowania peryferiali spowodowałoby wygenerowanie przez kompilator ostrzeżeń o użyciu stałych wbrew standardowi. Moduł DMA po zakończeniu transmisji zachowuje początkowe wartości rejestrów adresowych, ale wymaga zapisu długości bloku danych przed każdą transmisją. Dodatkowo, rejestr długości bloku może być zapisany tylko wówczas, gdy kanał jest nieaktywny, a kanał nie deaktywuje się samoczynnie po zakończeniu transmisji bloku. Z tych powodów w procedurze obsługi przerwania timera, w miejscu, gdzie następuje uaktywnienie kanału i rozpoczęcie transmisji, znalazła się sekwencja trzech instrukcji: deaktywacji kanału zapis 0 do CCR, zapisu długości bloku do CNDTR, powtórnej aktywacji kanału zapis słowa sterującego do CCR. Obsługa przerwania timera Przerwanie timera generującego przebiegi PWM sterujące diodami jest zgłaszane tak samo, jak we wcześniejszych projektach, z częstotliwością 400 Hz. Jego obsługa obejmuje kilka czynności, wykonywanych z różnymi częstotliwościami: płynną modyfikację wypełnień PWM dla diod 400 Hz; reakcję na przycisk zerowania timera 100 Hz; zliczanie czasu w timerze programowym i błyskanie zieloną diodą 1 Hz. W celu uniknięcia konwersji wartości timera z postaci binarnej na reprezentację znakową, wartość ta jest przechowywana w postaci znakowej, w tablicy znakowej timer[]. Tablica ta, o długości 8 bajtów, zawiera na pozycjach 0 5 sześć cyfr timera, a na pozycjach 6 i 7 sekwencję końca wiersza, przesyłaną wraz z wartością timera przez łącze szeregowe. Blok reakcji na naciśnięcie przycisku jest wywoływany, tak jak poprzednio, w co czwartym przerwaniu. W bloku tym jest sprawdzany stan przycisku oraz inkrementowany jest licznik sdiv zliczający setne części sekundy. Przy naciśnięciu przycisku zerowany jest timer odliczający sekundy oraz licznik setnych części sekundy. Dodatkowo jest zaświecana niebieska dioda; jej wygaszanie rozpoczyna się po upływie ¼ sekundy po naciśnięciu przycisku. Po osiągnięciu przez licznik setnych wartości 100 jest on zerowany oraz następuje inkrementacja timera programowego. Inkrememtacja ta jest wykonywana w prostej pętli for(). Zarówno inkrementacja, jak i wyzerowanie licznika kończy się ustawieniem zmiennej logicznej upd_time, co w dalszej części przerwania timera powoduje zainicjowanie transmisji całego bufora timera programowego przez USART. Omawiany przykład pokazano na listingu 3. Grzegorz Mazur gbm@ii.pw.edu.pl ELEKTRONIKA PRAKTYCZNA 9/ _st2.indd :45:16
32 bity jak najprościej STM32F0 (2) Pomiar napięcia i temperatury z uwzględnieniem danych kalibracyjnych
32 bity jak najprościej STM32F0 (2) Pomiar napięcia i temperatury z uwzględnieniem danych kalibracyjnych Latem ubiegłego roku przedstawiliśmy serię artykułów poświęconych początkom tworzenia oprogramowania
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
32 bity jak najprościej (3)
32 bity jak najprościej (3) STM32F0 płytka eksperymentalna z mikrokontrolerem STM32F030F4 Latem 2013 roku pojawiła się na rynku nowa seria mikrokontrolerów STM32F030. Są one bardzo podobne do STM32F050,
32 bity jak najprościej (4)
32 bity jak najprościej (4) STM32F0 nieblokująca obsługa wyświetlacza LCD ze sterownikiem rodziny HD44780 W kolejnym odcinku serii przedstawimy całkiem nietypową realizację bardzo typowego składnika oprogramowania
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
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
TECHNIKA MIKROPROCESOROWA
LABORATORIUM TECHNIKA MIKROPROCESOROWA Port transmisji szeregowej USART MCS'51 Opracował: Tomasz Miłosławski 1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się ze sposobami komunikacji mikrokontrolera
Kod produktu: MP01105
MODUŁ INTERFEJSU KONTROLNO-POMIAROWEGO DLA MODUŁÓW Urządzenie stanowi bardzo łatwy do zastosowania gotowy interfejs kontrolno-pomiarowy do podłączenia modułów takich jak czujniki temperatury, moduły przekaźnikowe,
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
ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM
ĆWICZENIE 5 TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM Wiadomości wstępne: Port szeregowy może pracować w czterech trybach. Tryby różnią się między sobą liczbą bitów
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
4 Transmisja szeregowa, obsługa wyświetlacza LCD.
1 4 Transmisja szeregowa, obsługa wyświetlacza LCD. Zagadnienia do przygotowania: - budowa i działanie interfejsu szeregowego UART, - tryby pracy, - ramka transmisyjna, - przeznaczenie buforów obsługi
MOBOT-RCR v2 miniaturowe moduły radiowe Bezprzewodowa transmisja UART
MOBOT-RCR v2 miniaturowe moduły radiowe Bezprzewodowa transmisja UART Własności MOBOT-RCR v2a: - pasmo komunikacji: ISM 433MHz lub 868MHz - zasięg 50m 300m * - zasilanie: z USB, - interfejs wyjściowy:
4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.
13 4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD. Zagadnienia do przygotowania: - budowa i działanie interfejsu szeregowego UART, - tryby pracy,
Kod produktu: MP01611
CZYTNIK RFID ZE ZINTEGROWANĄ ANTENĄ, WYJŚCIE RS232 (TTL) Moduł stanowi tani i prosty w zastosowaniu czytnik RFID dla transponderów UNIQUE 125kHz, umożliwiający szybkie konstruowanie urządzeń do bezstykowej
Poradnik programowania procesorów AVR na przykładzie ATMEGA8
Poradnik programowania procesorów AVR na przykładzie ATMEGA8 Wersja 1.0 Tomasz Pachołek 2017-13-03 Opracowanie zawiera opis podstawowych procedur, funkcji, operatorów w języku C dla mikrokontrolerów AVR
Kod produktu: MP01611-ZK
ZAMEK BEZSTYKOWY RFID ZE ZINTEGROWANĄ ANTENĄ, WYJŚCIE RS232 (TTL) Moduł stanowi gotowy do zastosowania bezstykowy zamek pracujący w technologii RFID dla transponderów UNIQUE 125kHz, zastępujący z powodzeniem
Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej
Struktura stanowiska laboratoryjnego Na rysunku 1.1 pokazano strukturę stanowiska laboratoryjnego Z80 z interfejsem częstościomierza- czasomierz PFL 21/22. Rys.1.1. Struktura stanowiska. Interfejs częstościomierza
TECHNIKA MIKROPROCESOROWA
LABORATORIUM TECHNIKA MIKROPROCESOROWA Port transmisji szeregowej USART ATmega Opracował: Tomasz Miłosławski 1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się ze sposobami komunikacji mikrokontrolera
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.
1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych
Dodatek A Wyświetlacz LCD. Przeznaczenie i ogólna charakterystyka Wyświetlacz ciekłokrystaliczny HY-62F4 zastosowany w ćwiczeniu jest wyświetlaczem matrycowym zawierającym moduł kontrolera i układ wykonawczy
Programowanie mikrokontrolerów 2.0
Programowanie mikrokontrolerów 2.0 DMA, przerwania Marcin Engel Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 22 października 2018 DMA Akronim Direct Memory Access Przesyłanie danych
Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780
Dane techniczne : Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780 a) wielkość bufora znaków (DD RAM): 80 znaków (80 bajtów) b) możliwość sterowania (czyli podawania kodów znaków) za pomocą
Kod produktu: MP01105T
MODUŁ INTERFEJSU DO POMIARU TEMPERATURY W STANDARDZIE Właściwości: Urządzenie stanowi bardzo łatwy do zastosowania gotowy interfejs do podłączenia max. 50 czujników temperatury typu DS18B20 (np. gotowe
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
32 bity jak najprościej (7)
32 bity jak najprościej (7) STM32F0 nieblokująca obsługa interfejsu 1-Wire Opracowany przez firmę Dallas Semiconductors (obecnie Maxim Integrated), popularny interfejs 1-Wire umożliwia dołączenie do mikrokontrolera
Opis procedur asemblera AVR
Piotr Kalus PWSZ Racibórz 10.05.2008 r. Opis procedur asemblera AVR init_lcd Plik: lcd4pro.hvr Procedura inicjuje pracę alfanumerycznego wyświetlacza LCD za sterownikiem HD44780. Wyświetlacz działa w trybie
ARS3-MODEM dokumentacja modemu radiowego do lokalnej transmisji danych w wolnych pasmach 433MHz i 868MHz
ARS3-MODEM dokumentacja modemu radiowego do lokalnej transmisji danych w wolnych pasmach 433MHz i 868MHz dokument DOK 04-05-12 wersja 1.0 arskam.com www.arskam.com 1 firma ARIES Warszawa Polska 1. Zastosowania
Implementacja algorytmów DSP 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 Implementacja algorytmów
TECHNIKA MIKROPROCESOROWA II
Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Wydział IEiT Katedra Elektroniki TECHNIKA MIKROPROCESOROWA II LAB 6 Moduł UART - współpraca z komputerem poprzez BlueTooth Mariusz Sokołowski
Start Bity Bit Stop 1 Bit 0 1 2 3 4 5 6 7 Par. 1 2. Rys. 1
Temat: Obsługa portu komunikacji szeregowej RS232 w systemie STRC51. Ćwiczenie 2. (sd) 1.Wprowadzenie do komunikacji szeregowej RS232 Systemy bazujące na procesorach C51 mogą komunikować się za pomocą
1. Tworzenie nowego projektu.
Załącznik do Instrukcji 1. Tworzenie nowego projektu. Wybieramy opcję z menu głównego New->QNX C Project. Wprowadzamy nazwę przechodzimy do następnego kroku NEXT. Wybieramy platformę docelową oraz warianty
Kod produktu: MP01611-ZK
ZAMEK BEZSTYKOWY RFID ZE ZINTEGROWANĄ ANTENĄ, WYJŚCIE RS232 (TTL) Moduł stanowi gotowy do zastosowania bezstykowy zamek pracujący w technologii RFID dla transponderów UNIQUE 125kHz, zastępujący z powodzeniem
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
MODBUS RTU wersja M1.14 protokół komunikacyjny wyświetlaczy LDN
MODBUS RTU wersja M1.14 protokół komunikacyjny do wyświetlaczy SEM 04.2010 Str. 1/5 MODBUS RTU wersja M1.14 protokół komunikacyjny wyświetlaczy LDN W wyświetlaczach LDN protokół MODBUS RTU wykorzystywany
Instrukcja obsługi czytnika MM-R32
Instrukcja obsługi czytnika MM-R32 MM-R32 Copyright 2011 by MicroMade All rights reserved Wszelkie prawa zastrzeżone MicroMade Gałka i Drożdż sp. j. 64-920 PIŁA, ul. Wieniawskiego 16 Tel./fax: (67) 213.24.14
Moduł komunikacyjny Modbus RTU do ciepłomierza SonoMeter 30
Moduł komunikacyjny Modbus RTU do ciepłomierza SonoMeter 30 Zastosowanie służy do podłączania ciepłomierzy do sieci Modbus RTU przy użyciu interfejsu EIA- 485 Właściwości Galwanicznie izolowany interfejs
LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program
LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program Przygotował: Jakub Wawrzeńczak 1. Wprowadzenie Lekcja przedstawia wykorzystanie środowiska LabVIEW 2016
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
Projektowanie urządzeń z modułami GSM (3)
Projektowanie urządzeń z modułami GSM (3) Oprogramowanie mikrokontrolera W trzeciej części cyklu poświęconego projektowaniu urządzeń z modułami GSM zajmiemy się zagadnieniem projektowania oprogramowania
Komunikacja w mikrokontrolerach Laboratorium
Laboratorium Ćwiczenie 4 Magistrala SPI Program ćwiczenia: konfiguracja transmisji danych między mikrokontrolerem a cyfrowym czujnikiem oraz sterownikiem wyświetlaczy 7-segmentowych przy użyciu magistrali
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
Obługa czujników do robota śledzącego linie. Michał Wendland 171628 15 czerwca 2011
Obługa czujników do robota śledzącego linie. Michał Wendland 171628 15 czerwca 2011 1 Spis treści 1 Charakterystyka projektu. 3 2 Schematy układów elektronicznych. 3 2.1 Moduł czujników.................................
Wprowadzenie do podstaw programowania AVR (na przykładzie mikrokontrolera ATmega 16 / 32)
Wprowadzenie do podstaw programowania AVR (na przykładzie mikrokontrolera ATmega 16 / 32) wersja 0.4 (20 kwietnia 2015) Filip A. Sala W niniejszym, bardzo krótkim opracowaniu, postaram się przedstawić
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 mikrokontrolerów 2.0
Programowanie mikrokontrolerów 2.0 Sterowanie podczerwienią, zaawansowane tryby liczników Marcin Engel Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 8 grudnia 2016 Sterowanie podczerwienią
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/
Konwerter DAN485-MDIP
Konwerter DAN485-MDIP KONWERTER DAN485-MDIP służy do zamiany standardu komunikacyjnego z RS232 na RS485 (lub RS422). Dzięki niemu możliwe jest transmitowanie danych na większe odległości (do 1200m) niż
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/
Mikrokontroler ATmega32. System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe
Mikrokontroler ATmega32 System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe 1 Przerwanie Przerwanie jest inicjowane przez urządzenie zewnętrzne względem mikroprocesora, zgłaszające potrzebę
MIKROPROCESORY architektura i programowanie
Struktura portów (CISC) Port to grupa (zwykle 8) linii wejścia/wyjścia mikrokontrolera o podobnych cechach i funkcjach Większość linii we/wy może pełnić dwie lub trzy rozmaite funkcje. Struktura portu
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,
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)
Firma DAGON Leszno ul. Jackowskiego 24 tel Produkt serii DAGON Lighting
Firma DAGON 64-100 Leszno ul. Jackowskiego 24 tel. 664-092-493 dagon@iadagon.pl www.iadagon.pl www.dagonlighting.pl Produkt serii DAGON Lighting SPM-24 STEROWNIK DMX-512 24 OUT DC / PWM INSTRUKCJA OBSŁUGI
Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych
Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych Przykłady wykorzystanie funkcji printf i scanf do wyświetlania danych na wyświetlaczu LCD oraz komunikacji sterownika mikroprocesorowego
interfejs szeregowy wyświetlaczy do systemów PLC
LDN SBCD interfejs szeregowy wyświetlaczy do systemów PLC SEM 08.2003 Str. 1/5 SBCD interfejs szeregowy wyświetlaczy do systemów PLC INSTRUKCJA OBSŁUGI Charakterystyka Interfejs SBCD w wyświetlaczach cyfrowych
Zestaw przedłużacza, 4K HDMI HDBaseT, 70 m
Zestaw przedłużacza, 4K HDMI HDBaseT, 70 m Instrukcja obsługi DS-55503 Przed instalacją i obsługą urządzenia należy dokładnie zapoznać się z poniższymi zaleceniami dotyczącymi bezpieczeństwa: 1. Należy
Terminal TR01. Terminal jest przeznaczony do montażu naściennego w czystych i suchych pomieszczeniach.
Terminal TR01 Terminal jest m, umożliwiającym odczyt i zmianę nastaw parametrów, stanów wejść i wyjść współpracujących z nim urządzeń automatycznej regulacji wyposażonych w port komunikacyjny lub i obsługujących
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i Mikrokontrolery Dostęp do portów mikrokontrolera ATmega32 język C laboratorium: 10 autorzy: dr
Zestaw przedłużacza, 4K HDMI HDBaseT, 100 m
Zestaw przedłużacza, 4K HDMI HDBaseT, 100 m Instrukcja obsługi DS-55504 Przed instalacją i obsługą urządzenia należy dokładnie zapoznać się z poniższymi zaleceniami dotyczącymi bezpieczeństwa: 1. Należy
Instrukcja obsługi Profesjonalny bezprzewodowy czytnik kodów HD2000
Instrukcja obsługi Profesjonalny bezprzewodowy czytnik kodów HD2000 Specyfikacja: Źródło światła: 650nm Laser Materiał wykonania: ABS+PC / Aluminium Metoda skanowania: ręczne/ automatyczne Potwierdzenie
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
Instrukcja obsługi. Terminal SD for DB25 CNC
Instrukcja obsługi Terminal SD for DB25 CNC Wstęp Terminal służy do wysyłania i odbierania programów bezpośrednio z karty SD do maszyny CNC. Zapewnia bezproblemową komunikację ze sterownikami firmy Fanuc,
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i mikrokontrolery Obsługa portu szeregowego laboratorium: 05 autor: mgr inż. Michal Lankosz dr hab.
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.
RS-H0-05 (K)* Czytnik RFID MHz Mifare. Karta użytkownika
RS-H0-05 (K)* Czytnik RFID 13.56 MHz Mifare Karta użytkownika *Litera K odnosi się do wersji czytnika ze wspólną katodą. Informacje szczególne dla tej wersji będą prezentowane oddzielnie. Przed użyciem
PRZERWANIA. 1. Obsługa zdarzeń, odpytywanie i przerwania Obsługa zdarzeń jest jedną z kluczowych funkcji w prawie każdym systemie czasu rzeczywistego.
PRZERWANIA 1. Obsługa zdarzeń, odpytywanie i Obsługa zdarzeń jest jedną z kluczowych funkcji w prawie każdym systemie czasu rzeczywistego. Istnieją dwie metody pozyskania informacji o zdarzeniach: 1. Cykliczne
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ż.
Komunikacja pomiędzy S7-1200 i S7-300/400 przez Ethernet (1)
Komunikacja pomiędzy AUTOMATYKA S7-1200 i S7-300/400 I MECHATRONIKA przez Ethernet Komunikacja pomiędzy S7-1200 i S7-300/400 przez Ethernet (1) W artykule przedstawiamy rozwiązanie komunikacji sieciowej
Opis czytnika TRD-FLAT CLASSIC ver. 1.1. Naścienny czytnik transponderów UNIQUE w płaskiej obudowie
TRD-FLAT CLASSIC Naścienny czytnik transponderów UNIQUE w płaskiej obudowie Podstawowe cechy : zasilanie od 3V do 6V 4 formaty danych wyjściowych POWER LED w kolorze żółtym czerwono-zielony READY LED sterowany
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska Programowanie aplikacji sieci Ethernet Przykład 1 Na podstawie: Monk S.: Arduino dla początkujących, HELION, Gliwice 2014 2 Arduino z nakładką
Kurs Zaawansowany S7. Spis treści. Dzień 1
Spis treści Dzień 1 I Konfiguracja sprzętowa i parametryzacja stacji SIMATIC S7 (wersja 1211) I-3 Dlaczego powinna zostać stworzona konfiguracja sprzętowa? I-4 Zadanie Konfiguracja sprzętowa I-5 Konfiguracja
Zaznacz właściwą odpowiedź
EUROELEKTRA Ogólnopolska Olimpiada Wiedzy Elektrycznej i Elektronicznej Rok szkolny 20/202 Zadania dla grupy elektronicznej na zawody I stopnia Zaznacz właściwą odpowiedź Zad. Dany jest obwód przedstawiony
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ę
Oprogramowanie przekaźnika monostabilnego UNIV
Oprogramowanie przekaźnika monostabilnego UNIV 1.0.2.11 1. Cechy: 6-cio kanałowy moduł przekaźników monostabilnych. 3 instrukcje sterujące przekaźnikami (włącz, wyłącz, zaneguj) 3 instrukcje blokujące.
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.
SZYMAŃSKI ŁÓDŹ Ul. Wiskicka 22 Tel./fax. (042) Tel./fax. (042) Kom
SZYMAŃSKI 93-623 ŁÓDŹ Ul. Wiskicka 22 Tel./fax. (042) 645 92 66 Tel./fax. (042) 250 50 52 Kom. 0 604 938 830 INSTRUKCJA WSAŹNIKA POŁOŻEŃ PRZEŁĄCZNIKA ZACZEPÓW TYPU WNZT 25a Opracował: Edward Szymański
Architektury Komputerów - Laboratorium Informatyka III rok studia dzienne
Architektury Komputerów - Laboratorium Informatyka III rok studia dzienne Ćwiczenie nr 3: Komunikacja szeregowa w systemach mikroprocesorowych Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z systemami
1. Cel ćwiczenia. 2. Podłączenia urządzeń zewnętrznych w sterowniku VersaMax Micro
1. Cel ćwiczenia Celem ćwiczenia jest zaprojektowanie sterowania układem pozycjonowania z wykorzystaniem sterownika VersaMax Micro oraz silnika krokowego. Do algorytmu pozycjonowania wykorzystać licznik
Projekt MARM. Dokumentacja projektu. Łukasz Wolniak. Stacja pogodowa
Projekt MARM Dokumentacja projektu Łukasz Wolniak Stacja pogodowa 1. Cel projektu Celem projektu było opracowanie urządzenia do pomiaru temperatury, ciśnienia oraz wilgotności w oparciu o mikrokontroler
2.1 Porównanie procesorów
1 Wstęp...1 2 Charakterystyka procesorów...1 2.1 Porównanie procesorów...1 2.2 Wejścia analogowe...1 2.3 Termometry cyfrowe...1 2.4 Wyjścia PWM...1 2.5 Odbiornik RC5...1 2.6 Licznik / Miernik...1 2.7 Generator...2
INTERFEJSY SYSTEMÓW ELEKTRONICZNYCH. Interfejsy klasy RS
INTERFEJSY SYSTEMÓW ELEKTRONICZNYCH Interfejsy klasy RS Grzegorz Lentka/Marek Niedostatkiewicz Katedra Optoelektroniki i Systemów Elektronicznych ETI PG 2010 RS232 (1) RS232-1962, RS232C - 1969, Electronic
Instrukcja obsługi elektronicznego licznika typu 524. Model 524. Licznik sumujący i wskaźnik pozycji typu Opis. 1. Opis
Instrukcja obsługi elektronicznego licznika typu 524 Model 524 Model 524 jest urządzeniem wielozadaniowym i zależnie od zaprogramowanej funkcji podstawowej urządzenie pracuje jako: licznik sumujący i wskaźnik
System interfejsu RS 232C opracowali P. Targowski i M. Rębarz
System interfejsu RS 232C opracowali P. Targowski i M. Rębarz Standard RS 232C (Recommended Standard) został ustanowiony w 1969 r. przez Electronic Industries Association. Definiuje on sposób nawiązania
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
OPROGRAMOWANIE MODUŁU WYJŚĆ OC UNIV
1. Cechy Oprogramowanie modułu 10 wyjść typu otwarty kolektor UNIV 3.9.0.x 3 instrukcje sterujące wyjściami (włącz, wyłącz, zaneguj) 3 instrukcje blokujące. 10 timer-ów (1 dla każdego wyjścia) 1s-24h opóźniających
Instrukcja obsługi Bezprzewodowy profesjonalny czytnik kodów ze stacją dokującą HD8900
Instrukcja obsługi Bezprzewodowy profesjonalny czytnik kodów ze stacją dokującą HD8900 Specyfikacja: Źródło światła: 650nm Laser Materiał wykonania: ABS+TPU / Aluminium Metoda skanowania: ręczne Potwierdzenie
Magistrala SPI. Linie MOSI i MISO sąwspólne dla wszystkich urządzeńna magistrali, linia SS jest prowadzona do każdego Slave oddzielnie.
Magistrala SPI Magistrala SPI składa się z linii: MOSI Master output Slave input MISO Master input Slave Output SCK Clock SS Slave select (CS Chip Select lub CE Chip Enable) Sygnał taktujący transmisję
Sterownik Spid Pant 8 i Ant 8. Podręcznik użytkowania
Sterownik Spid Pant 8 i Ant 8 Podręcznik użytkowania Spis treści Spis treści...2 Wprowadzenie...3 Komplet...3 Dane techniczne...3 Panel sterujący...4 Panel tylny...5 Obsługa sterownika...6 Zmiana trybu
Architektura komputerów
Architektura komputerów Tydzień 11 Wejście - wyjście Urządzenia zewnętrzne Wyjściowe monitor drukarka Wejściowe klawiatura, mysz dyski, skanery Komunikacyjne karta sieciowa, modem Urządzenie zewnętrzne
o Instalacja środowiska programistycznego (18) o Blink (18) o Zasilanie (21) o Złącza zasilania (22) o Wejścia analogowe (22) o Złącza cyfrowe (22)
O autorze (9) Podziękowania (10) Wstęp (11) Pobieranie przykładów (12) Czego będę potrzebował? (12) Korzystanie z tej książki (12) Rozdział 1. Programowanie Arduino (15) Czym jest Arduino (15) Instalacja
Rys. 1. Schemat ideowy karty przekaźników. AVT 5250 Karta przekaźników z interfejsem Ethernet
Głównym elementem jest mikrokontroler PIC18F67J60, który oprócz typowych modułów sprzętowych, jak port UART czy interfejs I2C, ma wbudowany kompletny moduł kontrolera Ethernet. Schemat blokowy modułu pokazano
PROCESORY SYGNAŁOWE - LABORATORIUM. Ćwiczenie nr 03
PROCESORY SYGNAŁOWE - LABORATORIUM Ćwiczenie nr 03 Obsługa portu szeregowego, układu kodeka audio i pierwsze przetwarzanie sygnałów (cyfrowa regulacja głośności) 1. Konfiguracja układu szeregowego portu
Interfejsy komunikacyjne pomiary sygnałów losowych i pseudolosowych. Instrukcja do ćwiczenia laboratoryjnego
Interfejsy komunikacyjne pomiary sygnałów losowych i pseudolosowych Instrukcja do ćwiczenia laboratoryjnego opracował: Łukasz Buczek 05.2015 rev. 05.2018 1 1. Cel ćwiczenia Doskonalenie umiejętności obsługi
Wizualizacja stanu czujników robota mobilnego. Sprawozdanie z wykonania projektu.
Wizualizacja stanu czujników robota mobilnego. Sprawozdanie z wykonania projektu. Maciek Słomka 4 czerwca 2006 1 Celprojektu. Celem projektu było zbudowanie modułu umożliwiającego wizualizację stanu czujników
Programator układów HCS
Układy serii HCS. PROGRAMATOR HCS 200 HCS300 HCS 301 HCS 500 UKŁADÓW HCS NIE MOŻNA ODCZYTAĆ! żadnym programatorem, układy są zabezpieczone przed odczytem na etapie programowania. Układy serii HCS to enkodery
Uniwersalny asynchroniczny. UART Universal Asynchronous Receier- Transmiter
UART Universal Asynchronous Receier- Transmiter Cel projektu: Zbudowanie układu transmisji znaków z komputera na wyświetlacz zamontowany na płycie Spartan-3AN, poprzez łacze RS i program TeraTerm. Laboratorium
Wyjście do drukarki Centronix
Wyjście do drukarki Centronix Model M-0 do Dydaktycznego Systemu Mikroprocesorowego DSM-1 Instrukcja uŝytkowania Copyright 2007 by MicroMade All rights reserved Wszelkie prawa zastrzeŝone MicroMade Gałka
Instrukcja do oprogramowania ENAP DEC-1
Instrukcja do oprogramowania ENAP DEC-1 Do urządzenia DEC-1 dołączone jest oprogramowanie umożliwiające konfigurację urządzenia, rejestrację zdarzeń oraz wizualizację pracy urządzenia oraz poszczególnych
Podstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace