32-bitni mikrokontroleri i primena - MS1BMP 2. deo

Slides:



Advertisements
Similar presentations
Refer to Chapter 6, 9 in the reference book
Advertisements

HT46 A/D Type MCU Series Data Memory (Byte) Program Memory HT46R22 (OTP) HT46C22 (Mask) 2Kx Kx16 4Kx HT46R23 (OTP) HT46C23 (Mask) HT46R24.
MS_uC / dnd / V VIC - Vectored Interrupts Programming Microcontroller VIC – Vectored interrupt controller Autumn term K Byte Burst Flash.
3-1 System peripherals & Bus Structure Memory map of the LPC2300 device is one contiguous 32-bit address range. However, the device itself is made up of.
ARM Timers.
System Clocks.
1 ARM University Program Copyright © ARM Ltd 2013 General Purpose I/O.
1 ARM University Program Copyright © ARM Ltd 2013 Timer Peripherals.
1 General Purpose and Alternate Function I/O (GPIO and AFIO)
Prof: doc.dr. Samir Lemeš student: Samir Hrnjić. System restore je komponenta Microsoftovih operativnih sistema Windows Serveri ne podržavaju opciju System.
Lecture 22: LM3S9B96 Microcontroller – SysTick and General-Purpose Timers.
STM32F107VC Datablad Reference manual Schematics.pdf.
1 The LPC1768 Architecture (with focus on Cortex-M3)
Lizard Labs Peripheral Reflex System
16F877A.
-Low Power and System Control Features
Outline Introduction to NuMaker TRIO Programming environment setup
CS4101 嵌入式系統概論 General Purpose IO
TENSES: PAST SIMPLE and PAST CONTINUOUS Prošla vremena: forma i upotreba Past simple ili obično prošlo vreme gradi se tako što se na infinitiv glagola.
Timer and Interrupts.
Refer to Chapter 5 in the reference book
PRJ2UC: Microcontrollers
Refer to Chapter 10 in the reference book
NS Training Hardware.
Programming Microcontroller ADC – Analog Digital Converter
CS4101 嵌入式系統概論 General Purpose IO
Refer to Chapter 3 in the reference book
AVR Addressing Modes Subject: Microcontoller & Interfacing
Embedded Systems Software Training Center
32-bitni mikrokontroleri i primena - MS1BMP 2. deo
Programming Microcontroller GPIO – General Purpose Input/Output
The Arduino Microcontroller: Atmel AVR Atmega 328
Interrupt and Exception Programming
Interrupt and Exception Programming
ECE 3430 – Intro to Microcomputer Systems
32-bitni mikrokontroleri i primena - MS1BMP 2. deo
Petlje WHILE – WEND.
32-bitni mikrokontroleri i primena - MS1BMP
32-bitni mikrokontroleri i primena - MS1BMP
STM Arm I/O Programming
32-bitni mikrokontroleri i primena - MS1BMP 2. deo
32-bitni mikrokontroleri i primena - MS1BMP 6. deo
Interrupt and Exception Programming
32-bitni mikrokontroleri i primena - MS1BMP
SPI Protocol and DAC Interfacing
CheckBox RadioButton RadioGroup
32-bitni mikrokontroleri i primena - MS1BMP 4. deo
32-bitni mikrokontroleri i primena - MS1BMP 3. deo
SPREGA SA U/I UREDJAJIMA
32-bitni mikrokontroleri i primena - MS1BMP
KREIRANJE OBJEKATA.
32-bitni mikrokontroleri i primena - MS1BMP
32-bitni mikrokontroleri i primena - MS1BMP 5. deo
14 UNUTRAŠNJE I ANONIMNE KLASE
32-bitni mikrokontroleri i primena - MS1BMP
I2C Protocol and RTC Interfacing
Organizacija sistema zasnovana na
32-bitni mikrokontroleri i primena
M-datoteke.
Interrupt and Exception Programming
Designing with ARM Cortex-M4 (and a Real Dev Board)
32-bitni mikrokontroleri i primena - MS1BMP
MATEMATIČKI FAKULTET, UNIVERZITET U BEOGRADU
Osnovni simboli jezika Pascal
Do While ... Loop struktura
CSCI1600: Embedded and Real Time Software
嵌入式微控制器编程 Embedded Microcontroller Programming
Skup instrukcija procesora
8051 Micro Controller.
CSCI1600: Embedded and Real Time Software
Presentation transcript:

32-bitni mikrokontroleri i primena - MS1BMP 2. deo 2016 Nenad Jovičić

Dokumentacija Reference manual – zajednicko za celu familiju Microcontroller datasheet – specifičnosti posebnog mikrokontrolera

STM Cortex-M3 - GPIO - Portovi 5V tolerantni ulazi Kapacitet po pinu 25mA 18 MHz učestanost toglovanja Konfigurabilna izlazna brzina do 50 MHz Do 16 analognih ulaza Alternativne funkcije (USARTx, TIMx, I2Cx, SPIx,…) Svaki pin može da generiše spoljašnji prekid Jedan pin može da se koristi za buđenje iz STANDBY moda (PA.00) Jedan pin može da bude Tamper Pin (za watcdog) (PC.13) Pinovi grupisani u 5 16-bitnih portova (GPIOA..GPIOE) Mehanizam zaključavanja konfiguracije

GPIO Konfiguracije I/O pin To On-chip Peripherals Input Data Register Analog Input Configuration Mode CNF1 CNF0 MOD1 MOD0 To On-chip Peripherals ON/OFF Pull - UP Pull - Down VDD VSS Analog Input 00 Alternate Function Input Input Floating (Reset State) 1 ON OFF Input Pull-Up(2) 1 Read Input Data Register VDD or VDD_FT(1) Input Pull-Down(2) TTL Schmitt Trigger Output Push-Pull 01: 10 MHz 10: 2 MHz 11: 50 MHz Input Driver I/O pin Output Open-Drain 1 VDD VSS Output Driver AF Push-Pull 1 Write Bit Set/Reset Registers OUTPUT CONTROL Output Data Register VSS AF Open-Drain 1 Push-Pull or Open Drain Read / Write or disabled From On-chip Peripherals (2) Input Pull-Up and Input Pull-Down are differentiated by the PxODR.y bit field. Alternate Function Output

Izlazna konfiguracija U Open-Drain modu: “0” u Output Data registru aktivira N-MOS transistor, dok “1” u Output Data registru ostavlja pin u stanju visoke impedanse(P-MOS transistor se nikada ne aktivira). U Push-pull modu: : “0” u Output Data registru aktivira N-MOS transistor, dok “1” u Output Data registru aktivira P-MOS tranzistor. Schmitt Trigger kolo je uključeno Interni pull-up i pull-down otpornici su isključeni Stanje koje je na pinu se sempluje i upisuje u Input Data registar na svaki APB2 klok Čitanjem Input Data registra očitava se stanje pina kada je konfigurisan u Open-Drain modu Čitanjem Input Data registra očitava se stanje pina kada je konfigurisan u Push-pull modu

Konfiguracija alternativne funkcije Izlazni dajver je u Open Drain ili Push-Pull konfiguraciji Schmitt Trigger ulaz je aktiviran Pull-up i pull-down otpornici su deaktivirani Podatak na pinu se sempluje u ulazni registar na svaku ivicu APB2 takta Ako je izlaz u open drain modu očitavanje ulaznog registra daje stanje na pinu Čitanje izlaznog registra u Push-Pull modu daje poslednje upisano stanje u registar

Konfiguracija analognog ulaza Izlazni bafer je isključen (otkačen) Schmitt Trigger kolo je isključeno zbog smanjenja potrošnje. Pull-up i pull-down otpornici su isključeni Očitavanje ulaznog registra uvek daje “0”

GPIO registri Dva 32-bitna konfiguraciona registra (GPIOx_CRL, GPIOx_CRH) Dva 32-bitna data registra (GPIOx_IDR, GPIOx_ODR) Jedan 32-bitni set/reset registar (GPIOx_BSRR) Jedan 16-bitni reset registar (GPIOx_BRR) Jedan 32-bitni locking registar (GPIOx_LCKR)

Port configuration register low (GPIOx_CRL) (x=A..G)

Port configuration register high (GPIOx_CRH) (x=A..G)

Port input data register (GPIOx_IDR) (x=A..G) Port output data register (GPIOx_ODR) (x=A..G)

Port bit set/reset register (GPIOx_BSRR) (x=A..G)

Port bit reset register (GPIOx_BRR) (x=A..G)

Port configuration lock register (GPIOx_LCKR) (x=A..G)

Projekat GPIO Gde se nalazi definicija funkcije HAL_GPIO_TogglePin ()? Kojim registrima se pristupa? Ovde treba ubaciti objasnjenje projekta I traziti izmenu preko bit-banding regiona HAL_Delay() funkcija imlementira čekanje. Na koji način?

Kako se togluje LED3 Podatak će biti 0x0200 Na dresu 0x40011000 dodaje offset za ODR koji iznosi 0xC i dobija se adresa 0x4001100C

Atomičnost Da li je Togle funkcija u prethodnom primeru atomična? Modifikovati main program na sledeći način:

Setovanje i resetovanje Pin-a Neće da se kompajlira. Gde je greška?

Kom registru pristupa ova funkcija?

Bit-banding Rešavanje problema tipičnog za Load/Store arhitekturu Kako obezbediti atomski (neprekidan) pristup nekoj memorijskoj lokaciji i izmenu jednog bita? Uobičajena sekvenca: disable_int→load→modify→store→enable_int. Bit-banding pristup je posredan pristup jednobitnoj lokaciji mapiranoj preko 32-bitne lokacije u alias regionu.

Bit-banding b31-b0 mapira se b[0] bit iz alias memorije!!!

Bit-banding Upisivanje sa i bez bit-banidng-a Očitavanje sa i bez bit-banding-a Atomska operacija

Kako se bit-band realizuje?

Bit-band u C-u

Kako se uključuje LED3 Da li je ovo bit-banding pristup?

Da li možemo isto ovo da uradimo korišćenjem bit-bandinga? “Naša funkcija” #define PORTC_ODR 0x4001100C #define BITBAND(addr,bitnum) ((addr & 0xF0000000)+0x02000000+((addr &0xFFFFF)<<5)+(bitnum<<2)) #define MEM_ADDR(addr) *((volatile unsigned long *) (addr)) void MS1BMP_LED3ON(void){ // Setting bit 9 without using bitband feature //MEM_ADDR(PORTC_ODR) = MEM_ADDR(PORTC_ODR) | 0x200; // Setting bit 9 with using bitband feature MEM_ADDR(BITBAND(PORTC_ODR,9)) = 0x1; }; Testirati direktan pristup ODR registru, ipristup preko bit-banding-a.

Alternativne funkcije Neophodno je konfigurisati pin shodno alterativnoj funkciji koja se koristi. Primer za tajmerske module:

Remapiranje alternativnih funkcija

AF remap and debug I/O configuration register (AFIO_MAPR) Alternativna funkcija Alternativna funkcija Sve REMAP

AF remap and debug I/O configuration register (AFIO_MAPR2)

Remapiranje alternativnih funkcija - oscilatori OSC_IN/OSC_OUT pinovi su mapirani na GPIO pinovima PD0/PD1. To se može isključiti odgovarajućim bitovima u AFIO_MAPR registru. OSC32_IN/OSC32_OUT pinovi su mapirani na GPIO pinovima PC14/PC15. To se može isključiti odgovarajućim bitovima u AFIO_MAPR registru.

Remapiranje alternativnih funkcija – debug interfejs Normalne pozicije debug pinova: Optimizacija se vrši setovanjem dogovarajućih SWJ_CFG[1:0] bita u AFIO_MAPR registru.

Systick tajmer Fleksibilni sistemski tajmer Sastavni deo procesorskog CORTEX-M3 jezgra. 24-bit auto-reload brojač za posebnim prekidom. 2 konfigurabilna izvora takta Pogodan za realizaciju real-time operativnih sistema. U STM32F10x seriji takt za ovu periferiju može bili ili CPU takt ili CPU/8 takt. Ovo se konfiguriše u RCC grupi registara. S obzirom da je deo procesorskog jezgra definicije funkcija koje konfigurišu rad časovnika se nalaze u okviru core_cm3.h fajla koji obezbeđuje ARM. Neke od high level funkcija može da obezbedi i proizvođač mikrokontrolera i one se nalaze u okviru peripheral drajver biblioteke i to u sastavu misc.h fajla.

Systick timer

Delay.... Naizmenična promena stanja dioda sa promenljivim intervalima čekanja Vezba – podesavanje Systick tajmera Delay() funkcija ne imlementira čekanje kao dummy petlju, ali je ipak čekanje u mestu.

Realizacija preko prekida Prekidna rutina Systic_Handler() realizuje odbrojavanje vremena pozivom HAL funkcije Jedna od osnovnih HAL drajver funkcija

Inicijalizacija Systick tajmera Inicijalizacija Systick periferije se vrši preko SysTick_Config() funkcije. Gde se nalazi ta funkcija i koji je lanac povezivanja? Staviti break point, i pogledati function call stack.

Zadatak Izmeniti program tako da se prekid sistemskog tajmera generiše sa učestanošću od 500Hz. Dakle, u pitanju je perioda od 500ms. Gde je najjednostavnije izvršiti izmenu?

EXTI Spoljašnji prekidi Do 19 Interrupt/Events zahteva Do 80 pinova se može koristiti kao EXTI ulaz. EXTI linija 16 povezana na PVD izlaz EXTI linija 17 povezana na RTC Alarm događaj. EXTI linija 18 povezana na USB Wake-up from suspend događaj EXTI[15:0] Interrupt Mask Register Pending Request Software Interrupt Event Register Rising Trigger Selection Register To NVIC Edge Detect Circuit Pulse Generator Falling Trigger Event Mask Dva konfiguraciona moda: Interrupt mode: generisanje prekida Event mode: generisanje buđenja sistema koji je u SLEEP ili STOP modu. Nezavisni trigeri (rastuća, opadajuća ili obe ivice) Status bit svake linije EXTI periferija je povezana na APB2 da bi se skratilo vreme ragovanja (APB2 je u opštem slučaju brža od APB1 magistrale) Mogućnost softverskog forsiranja bilo kog prekida/događaja.

EXTI prekidi

External interrupt configuration register 1 (AFIO_EXTICR1) Na EXTIx ide uvek pinx

Interrupt mask register (EXTI_IMR)

Event mask register (EXTI_EMR)

Rising trigger selection register (EXTI_RTSR)

Falling trigger selection register (EXTI_FTSR)

Software interrupt event register (EXTI_SWIER)

Pending register (EXTI_PR)

Memorijska mapa EXTI registara