Presentation is loading. Please wait.

Presentation is loading. Please wait.

32-bitni mikrokontroleri i primena - MS1BMP

Similar presentations


Presentation on theme: "32-bitni mikrokontroleri i primena - MS1BMP"— Presentation transcript:

1 32-bitni mikrokontroleri i primena - MS1BMP
2017/2018 Nenad Jovičić Marija Janković

2 EXTI Extended Interrupt and Events Controller
Mogućnost generisanja do 40 interrupt/events zahteva 26 konfigurabilnih linija (od čega 16 za GPIO) 14 direktnih linija Nezavisni registar maske za interrupt/event za svaku liniju Zasebni status bit Mogućnost softverskog emuliranja interrupt/event-a

3 Konfigurabilne linije
Koriste ih spoljašnji prekidi dovedeni na GPIO kao i par periferija Da bi se podesio prekid potrebno je: Odabrati na koju ivicu se prekid generiše (uzlaznu, silaznu ili obe) U registru maske obezbediti da prekid na toj liniji nije maskiran Kada dođe do željene ivice generiše se prekidni zahtev. Zahtev se beleži u odgovarajućem bitu pending registra i čeka brisanje od strane korisnika nakon izvršenja prekidne rutine.

4 Konfigurabilne linije
Na konfigurabilnim linijama je moguće aktivirati softverski interrupt/event Podešavanjem da prekid ili događaj nisu maskirani Upisom u odgovarajući software interrupt registar emulira se zahtev za prekidom ili događajem.

5 Direktne linije Koriste ih određene periferije uglavnom za generisanje zahteva za izlazak iz Stop moda ili nekog prekida. Prekid je automatski dozvoljen za direktne linije pa nije potrebno upisivati ništa u registre Ne postoji pending bit za direktne linije. Ukoliko sistem nije u STOP modu rada zahtev za prekid ili događaj preko direktnih linija neće biti prosleđen

6 EXTI periferija je povezana na APB2 da bi se skratilo vreme reagovanja (APB2 je u opštem slučaju brža od APB1 magistrale)

7 EXTI prekidi

8 External interrupt configuration register 1 (2,3,4) (SYSCFG_EXTICR1 (2,3,4))
Na EXTIx ide uvek pinx

9 Ostale EXTI konekcije

10 Interrupt mask register (EXTI_IMR)

11 Wakeup event mask register (EXTI_EMR)

12 Rising trigger selection register (EXTI_RTSR)

13 Falling trigger selection register (EXTI_FTSR)

14 STM CUBE Projekat GPIO_EXTI
…\STM32Cube_FW_L4_V1.4.0\Projects\STM32L476RG-Nucleo\Examples\GPIO\GPIO_EXTI\MDK-ARM Obezbediti izmenu stanja diode pritiskom na USER_BUTTON

15 STM CUBE Projekat GPIO_EXTI
Low level inicijalizacija

16 Inicijalizacija EXTI prekida

17 HAL_GPIO_Init()

18 Reakcija na prekid! Drajverske funkcije – korisnik ne menja
Korisničke funkcije

19 Reakcija na prekid! Principi HAL drajvera kada su u pitanju prekidi su sledeći: Uvek postoji default handler u startup fajlu Korisnik sam piše svoju prekidnu funkciju i u njoj poziva HAL_PPP_IRQHandler() funkciju u kojoj se “servisira” prekid 3. Ta funkcija dalje poziva HAL_PPP_Callback() funkciju koja ustvari “reaguje” na prekid 4. Korisnik sam implementira tu Callback funkciju. Drajverske funkcije – korisnik ne menja Korisničke funkcije

20 ZADATAK Napisati program koji obezbeđuje promenu stanja diode LED2 na prekid na pinu PA_8. Problem 1 – PA_8 je floating Rešenje – aktivirati pull-up Problem 2 – PA_8 ima drugi prekidni vektor Rešenje – Identifikovati koji je to drugi prekidni vektor i na osnovu toga izvršiti adekvatna prilagođenja.

21 STM32Fxx - Tajmeri STM32 ahitektura poseduje nekoliko vrsta tajmera:
Tajmeri opšte namene koji se koriste za generisanje običnih PWM signala (output compare), pojedinačnih impulsa (one-pulse), hvatanje ulaznih signala (input capture), specifični senzorski iterfejsi (enkoder, hall-effect senzor) Napredni tajmeri (advanced timers) koji osim opštih funkcija imaju neke prednosti za generisanje signala koji se koriste u motornim pogonima ili digitalnom upravljanju pretvaračima. Primer: komlementarni izlazi sa regulisanjem mrtvog vremena, automatsko isključivanje svih kanala i slično. N-kanalni tajmeri (N-channel timer), koji imaju karakteristike tajmera opšte namene ali imaju ograničen broj kanala. N-kanalni tajmeri tajmeri sa komplementarnim izlazima, i sa regulacijom mrtvog vremena samo na jednom kanalu. Osnovni tajmer (basic timer), koji nema izlaze i ulaze već se koristi za generisanje vremenske baze, ili periodično trigerovanje DAC periferije.

22 Tajmeri – pregled po STM32 familiji

23 STM32L476 tajmeri General-purpose timer cookbook

24 Tajmeri opšte namene TIMx (x=2,3,4,5)
16-bitni (TIM3 i TIM4) ili 32-bitni brojač (TIM2 i TIM5) na gore, dole ili gore/dole. 16-bitni preskaler za ulazni takt Do 4 nezavisna kanala koji mogu da rade u izlaznom (output compare), ulaznom (input capture), PWM ili pojedinačnom impulsnom modu. Mogućnost sinhronizacije sa ostalim tajmerima. Prekid/DMA zahtev za sledeće događaje: Input capture Output compare Reload tajmera, inicijalizacija (softverska ili spoljašnja) Podržavaju kvadraturne inkrementalne enkodere i hall-effect senzore.

25 Tajmer opšte namene Opšta šema tajmera

26 Vremenska baza Deo tajmera koji generiše vremensku bazu čine:
-Tajmerski brojač TIMx_CNT -Preskaler takta TIMx_PSC -Reload registar TIMx_ARR Svi registri su duplo baferovani tako da mogu da se očitavaju i menjaju i u toku rada tajmera. Izmene PSC i ARR registra se dešavaju na svaki Update Event UEV

27 Brojač na gore – UP counting
Ako je ARPE (auto-reload preload enable) bit u TIMxCR1 kontrolnom registru resetovan (ARPE=0) automatski se ažurira moduo brojanja

28 Brojač na gore – UP counting
Ako je ARPE (auto-reload preload enable) bit u TIMxCR1 kontrolnom registru setovan (ARPE=1) moduo se ažurira tek nakon jednog završenog ciklusa.

29 Downcounting mode

30 Brojač gore-dole (Center-aligned / Up-down counting mode)
In center-aligned mode, the counter counts from 0 to the auto-reload value (content of the TIMx_ARR register) – 1, generates a counter overflow event, then counts from the autoreload value down to 1 and generates a counter underflow event. Then it restarts counting from 0.

31 Taktovanje - Internal mode
Tajmer je taktovan internim taktom

32 External mode 1 Tajmer broji spoljašnje rastuće i/ili opadajuće ivice na kanalima 1 ili 2 PAGE 23

33 External mode 2 Tajmer broji spoljašnje rastuće ili opadajuće preskalirane ivice na ETR ulazu. Postoji ulazni preskaler.

34 Kaskadna veza tajmera Interni triger ulazi ITRx koji se koriste kada se kaskadiraju različiti tajmeri. Na primer, TIM3 može da radi kao preskaler za TIM2. Jedan tajmer, konfigurisan u master modu može da resetuje, zaustavi, startuje ili taktuje drugi tajmer, koji je konfigurisan u slave modu. The TIMx timers are linked together internally for timer synchronization or chaining. When one Timer is configured in Master Mode, it can reset, start, stop or clock the counter of another Timer configured in Slave Mode. Using one timer as prescaler for another timer Using one timer to enable another timer Using one timer to start another timer

35 STM CUBE Projekat TIM_TimeBase

36 Ako koristimo periferije potrebno je to da označimo u .conf fajlu

37 Šta to piše u drajverskim fajlovima?

38

39

40 Inicijalizacija vremenske baze tajmera

41

42 MspInit() Dovodimo takt tajmeru (ovakav ili onakav)
Konfigurišemo prekide Dozvoljavamo prekide

43 Startujmo tajmer

44 Imamo i prekid....

45 Generalna Inicijalizacija hardvera

46 Generalna Inicijalizacija hardvera

47 Principi HAL drajvera kada su u pitanju kompleksne periferije:
Periferiju je najpre potrebno inicijalizovati Inicijalizacija periferije se obavlja u drajveru ali se kao sporedni efekat poziva funkcija HAL_PPP_MspInit() koja inicijalizuje low-level hardverske resurse. Ponekad je potrebno inicijalizovati i neke posebne delove periferije posebnim funkcijama ali to zavisi od aplikacije. Perifereije tipično kreću sa željenim radom tek pošto se pokrenu funkcijom HAL_PPP_start() Ukoliko periferija generiše prekide korisnik sam piše svoju prekidnu funkciju i u njoj poziva HAL_PPP_IRQHandler() funkciju u kojoj se “servisira” prekid. 6. Ta funkcija dalje poziva HAL_PPP_Callback() funkciju koja ustvari “reaguje” na prekid 7. Korisnik sam implementira tu Callback funkciju.

48 Zadatak x Najpre pitanje: Koji tajmer je aktivan?
Zadatak 1: promeniti podešavanja tako da sve ovo radi tajmer 4. Zadatak 2: Proširiti projekat tako da rade oba tajmera istovremeno, ali sa neki različitim podešavanjima. Problem: MspInit() funkciju će pozvati drajver prilikom inicijalizacije svakog tajmera. Kako da znam za potrebe čije inicijalizacije se poziva MspInit()?

49 Zato se uvek prosleđuju i pokazivači na objekte koji se inicijalizuju....
Hint: Predviđen pokazivač na strukturu se nigde ne koristi???

50 Capture/compare jedinica input capture deo
Svaki capture događaj može da generiše prekid ili DMA zahtev. The conditioning circuitry includes a filtering stage and an edge detector. The filter stage rejects pulses with duration less than the configured one. The edge detector detects if an active edge occurred on the concerned timer input after filtering. The active edge configuration is set by writing to the channel polarity control bit-fields within the TIMx_CCER timer register. The conditioning circuitry outputs two signals: • The TIyFPy: is the TIy timer input signal which was filtered and on which an active edge is detected depending on the polarity of the timer channel “y”. • The TIyFPz: is always the TIy timer input signal which was filtered but on which an active edge is detected depending on the polarity of the timer channel “z”. The TIyFPz signal is redirected to the prescaler input of the channel “z” where the TIzFPy signal is redirected to the prescaler input of the channel “y” as shown in Figure 3. This cross swap of filtered input signals is very useful for time-stamping both the rising and the falling edges of an input signal. It is very useful for implementing PWM (pulse width modulation) input applications.

51 Capture/compare jedinica centralni deo

52 Capture/compare jedinica output compare deo

53 PWM input capture Posebna input capture konfiguracija u kojoj se kombinuju dva kanala tako da može da se meri perioda i duty-cycle pwm signala na ulazu.

54 Output compare mod Koristi se uglavnom za generisanje periodičnih prekida. Nema generisanja PWM signala, ali može da se menja stanje OCx pina. Output compare mode, toggle on OC1

55 Edge-aligned PWM U ovom modu brojač može da radi ili u UP ili u DOWN modu. U primeru je podešeno da signal OCxREF bude aktivan dok god je TIMx_CNT < TIMx_CCRx, u suprotnom pada na nizak nivo. Pulse Width Modulation mode allows you to generate a signal with a frequency determined by the value of the TIMx_ARR register and a duty cycle determined by the value of the TIMx_CCRx register. Upcounting configuration Upcounting is active when the DIR bit in the TIMx_CR1 register is low. Refer to the Upcounting mode on page 880. In the following example, we consider PWM mode 1. The reference PWM signal OCxREF is high as long as TIMx_CNT < TIMx_CCRx else it becomes low. If the compare value in TIMx_CCRx is greater than the auto-reload value (in TIMx_ARR) then OCxREF is held at ‘1’. If the compare value is 0 then OCxRef is held at ‘0’. Figure 247 shows some edge-aligned PWM waveforms in an example where TIMx_ARR=8. Downcounting configuration Downcounting is active when DIR bit in TIMx_CR1 register is high. Refer to the Downcounting mode on page 884 In PWM mode 1, the reference signal OCxRef is low as long as TIMx_CNT > TIMx_CCRx else it becomes high. If the compare value in TIMx_CCRx is greater than the auto-reload value in TIMx_ARR, then OCxREF is held at ‘1’. 0% PWM is not possible in this mode.

56 Center-aligned PWM Slično onome što se kod MSP-a zove phase-correct PWM mod. Brojač radi u up/down modu.

57 STM CUBE Projekat TIM_PWmOutput

58 Struktura TIM_OC_InitTypeDef

59

60 Što se u suštini svodi na ovo

61 Podešavanje svakog OC kanala

62 Startovanje OC kanala

63 A šta je sa low level inicijalizacijom?

64

65 MCU User manual

66 Kako da vidimo generisane signale?
Simulator Za sada ne postoji potpun simulator za STM32L476RG Osciloskop Logički analizator Vratimo nazad na naš mikrokontroler?

67 STM CUBE Projekat TIM_PWmInput
Merenje karakteristika PWM signala uz pomoć tajmera

68 Prametri za IC

69 Podešavanje svakog kanala

70 PWM input capture

71 PWM input capture IC2 signal se koristi i za resetovanje tajmera...

72 Posebna podešavanja za PWM input

73 Slave mode konfiguracija

74 I na kraju to sve treba startovati

75 Zadatak Jedan kontroler izvršava projekat PWMOutput, a druga grupa izvršava projekat PWMInput Povezati dva kontrola pomoću dva provodnika – masa i signal. Pitanje: Gde se računaju parametri ulaznog PWM signala? Da li će projekat PMWInput korektno da radi ako se CH1 inicijalizuje bez prekidne funcije tj. sa: HAL_TIM_IC_Start(&TimHandle, TIM_CHANNEL_1)?

76 KEIL 0svežava promenljive u realnom vremenu

77 One pulse mod Zgodan za generisanje precizno pozicioniranih impulsa.
One-pulse mode (OPM) is a particular case of the previous modes. It allows the counter to be started in response to a stimulus and to generate a pulse with a programmable length after a programmable delay. Starting the counter can be controlled through the slave mode controller. Generating the waveform can be done in output compare mode or PWM mode. You select One-pulse mode by setting the OPM bit in the TIMx_CR1 register. This makes the counter stop automatically at the next update event UEV. A pulse can be correctly generated only if the compare value is different from the counter initial value. Before starting (when the timer is waiting for the trigger), the configuration must be: • CNT<CCRx ≤ ARR (in particular, 0<CCRx), For example you may want to generate a positive pulse on OC1 with a length of tPULSE and after a delay of tDELAY as soon as a positive edge is detected on the TI2 input pin. The OPM waveform is defined by writing the compare registers (taking into account the clock frequency and the counter prescaler). • The tDELAY is defined by the value written in the TIMx_CCR1 register. • The tPULSE is defined by the difference between the auto-reload value and the compare value (TIMx_ARR - TIMx_CCR1).

78 Encoder interface Povezivanje kvadraturnog enkodera na kanalima 1 i 2 u svim modovima brojanja: x1, x2, x4.

79 TIM1– Advanced control timer
Pored osobina tajmera opšte namene poseduje sledeće specifičnosti: Komplementarni izlazi sa programabilnim mrtvim vremenom. Break signal koji jednovremeno deaktivira sve izlaze. Brojač ponavljanja koji obezbeđuje ažuriranje tajmerskih registara tek posle određenog broja ciklusa. Interfejs prema trofaznom hall-effect senzoru. Opšta šema tajmera

80 Izlazni stepen Output Capture jedinice – Kanali 1,2,3

81 TIM1 - Kanal 4 Kanal 4 je pojednostavljene strukture jer se TIM1 obično koristi u trofaznim PWM generatorima u kojima se sedmi kanal koristi uglavnom za potrebe “kočenja”.

82 Tajmeri TIM15, TIM16, TIM17 16-bitni brojač na gore.
16-bitni preskaler za ulazni takt 1 (tim15) ili 2 (tim16, tim17) nezavisna kanala koji mogu da rade u izlaznom (output comapre), ulazno (input capture), PWM ili pojedinačnom impulsnom modu. Mogućnost sinhronizacije sa ostalim tajmerima. Prekid zahtev za sledeće događaje: Input capture Output compare Reload tajmera, inicijalizacija (softverska ili spoljašnja) Podržan je DMA prenos Uvek postoji jedan komplementarni izlaz. Brojač ponavljanja.

83 TIM15

84 TIM16, TIM17

85 Osnovni tajmeri (Basic Timer) TIM6 i TIM7
16-bitni brojač na gore. 16-bitni preskaler za ulazni takt. Mogućnost startovanja DAC-a. Prekid i DMA zahtev overflow događaj. Podržan je DMA prenos. Uvek postoji jedan komplementarni izlaz. Brojač ponavljanja.


Download ppt "32-bitni mikrokontroleri i primena - MS1BMP"

Similar presentations


Ads by Google