24
SysTick, Timer & Watchdog Timing Support Hardware for Stm32f4Discovery Microcontroller Corso di Sistemi Embedded 2014/2015 Gruppo 3 Giovanni Panice: M63/000458 Antonio Tammaro: M63/000211

SysTick, Timer & Watchdog

Embed Size (px)

Citation preview

SysTick, Timer & Watchdog

Timing Support Hardware for Stm32f4Discovery Microcontroller

Corso di Sistemi Embedded 2014/2015Gruppo 3Giovanni Panice: M63/000458 Antonio Tammaro: M63/000211

2

Argomenti del Seminario

● SysTick● Timers

– Basic Timers– General Purpose Timers– Advanced Timers

● Watchdogs– Indipendent Watchdogs– Windowed Watchdogs

● FreeRTOS– RtosTick– Software Timers

3

Riferimenti

● Reference Manual RM0090● The Insider's Guide to the Stm32 – ARM Based

Microcontroller (Hitex)● The Definite Guide To ARM Cortex-M3/M4

Processor – author Joseph Yiu● FreeRTOS Manual

4

System Tick Timer

5

System Tick Timer(1/2)

● Cos'è?– Componente Hardware

interno all'architettura Cortex-M capace di generare interrupt periodiche

● CorteX-M– Lo scopo principale di avere

il systick all'interno dell' ARM Cortex è quello di migliorare la portabilità del software

● Scopi principali:– Base dei tempi ad elevata

precisione– Scheduling dei Task– Per applicazioni Real Time

6

System Tick Timer (2/2)

● Componenti e Peculiarità– Contatore a decremento a 24 bit– Impulso di conteggio programmabile tramite il

multiplexer– 4 registri:

● Valore corrente● Autoreload● Control/Status● Calibration

● Funzionamento– All'atto dell'abilitazione, il timer decrementa il valore di reload fino a zero. Quando raggiunge zero, il valore di reload viene

ricaricato nel contatore il quale può ricominciare il conteggio. Se il bit di interrupt del registro controllo/stato è attivo, alla fine del conteggio viene generata un interrupt del systick

● SysTick Calibration value register– Il valore del Systick calibration è settato a 18750, che fornisce un base dei tempi di riferimento di 1 ms con il Systick clock

settato a 18.75 MHz

7

Timers

8

Timers(1/7): Introduzione

● Cosa sono? – I timer sono dispositivi specializzati nella misurazioni di intervalli

di tempo● A cosa Servono?

– Base dei tempi– Attivatori di DAC– Controllo Motori

● Qual è la differenza tra Timers & SysTick?– Non rientra nell'architettura ( Cortex ) ma nel design della board

● I timers non generano interrupt interne

– I Timers possono contenere Hardware aggiuntivo

● Tipologie:

1)Hardware (Stm32f4)1)Basic Timers

2)General Purpose

3)Advanced Timers

2)Software

+ Hardware

(2)

(1)

9

Timers(2/7): Basic Timers

● Funzionamento– Il contatore conta periodicamente fino al valore contenuto nel registro di auto-reload, quando supera il

suo valore, genera un overflow. – Quando il contatore genera un overflow, innesca un update event (UEV) dal quale ne può derivare un

interruzione o l'attivazione del DMA.● Peculiarità

– Utilizza un prescaler programmabile per dividere la frequenza del clock d'ingresso di un fattore compreso tra 1 e 65536.

– Può essere utilizzato attraverso il circuito di sincronizzazione per triggerare gli eventi del DAC.

● Sulla board sono presenti due B.Timers: Tim6 & Tim7

● Struttura:– contatore a 16 bit– prescaler a 16 bit– Circuito di sincronizzazione con i DAC– registro di auto-reload– registro di conteggio corrente– registro per il prescaler

10

Timers(3/5): General Purpose Timers

● Sulla board sono presenti 10 GP Timers: Tim2 a Tim5, Tim9 a Tim14

● Le caratteristiche dei basic timers vengono arricchite nei GP Timers attraverso hardware aggiuntivo. Possiamo sintetizzarle in due parti principali:– Time base unit– Capture/compare unit

1

2

● Il clock per il funzionamento dell'hardware può essere preso da una delle seguenti sorgenti:– Internal clock (CK_INT)– External clock mode1: external input pin

(TIx)– External clock mode2: external trigger

input (ETR) disponibile solo su TIM2, TIM3 e TIM4.

– Internal trigger inputs (ITRx): Si utilizza un timer come prescaler per un altro timer

11

Timers(4/7): General Purpose Timers

● Modalità di funzionamento:

1)Contatore - incremento, decremento e centrale

2)Input capture Mode – quando un fronte di salita o discisa viene rilevato in ingresso, il conteggio del timer è catturato nel registro RCC

3)Output Compare Mode – usato per controllare una waveform in uscita o indicare quando un periodo di tempo è finito

4)PWM Input Mode - analisi di un segnale PWM in ingresso per il calcolo del duty cycle e il periodo

5)Timers and external trigger synchronization

6)Hall Sensor Interface - Per il calcolo della velocità angolare

7)One Pulse Mode - dove un valore di soglia esterno può iniziare la modalità PWM per un ciclo. Questo genera un singolo impulso con un programmabile ritardo iniziale e larghezza

8)Forced Output Mode – forzare l'uscita della comparazione dal software

9) Pwm Mode1)Edge-aligned

2)Centre-aligned

8

1

3

● Esempi di campi di applicazione:– Controllo Motori (PWM)– Misurazione Velocità Angolare

24

5

6

12

Timers(5/7): General Purpose Timers

● Timer and external trigger Syncronization– Slave Mode: I timer possono essere configurati in modo da eseguire determinate

attività in seguito a eventi esterni (slave mode), in particolare si possono configurare tre tipologie:

● Reset: il contatore e il suo prescaler possono essere reinizializzati in risposta a un evento esterno● Gated: il contatore può essere abilitato/disabilitato a seconda se il segnale esterno e alto o basso● Trigged: il contatore inizia il conteggio in risposta a un evento su un segnale esternoo

– Timer Syncronization: I timer possono essere connessi tra loro per formare catene di timer sincroni. Quando un timer è configurato in modalità Master, può resettare, iniziare, fermare o clockare il contatore di un altro Timer

13

Timers(6/7): Advanced Timers

● Sulla board sono presenti 10 GP Timers: Tim2 a Tim5, Tim9 a Tim14

● Esempi di campi di applicazione:– Controllo Motori Trifase

● Aggiungono nuove funzionalità a quelle ereditate dai GP Timers:

1)Repetition Counter

2)Uscite Complementari con programmabile dead-time

3)Break Function

1

2

3

14

Timers(7/7): Advanced Timers

● Break Function– I timer avanzati possono porre le usciti PWM e le

loro uscite complementari in una configurazione predefinita in risposta ad un input di break. Questo input può provenire da un pin esterno di break o dal Clock Security System che monitora che non ci siano failure nel clock. Una volta abilitato, la funzione di break opera interamente in hardware e garantisce di porre gli output PWM in uno stato safe se il clock di sistema fallisce o se è presente un fallimento sull'hardware esterno

● Esempio– Un sensore di temperatura esterno rileva un

aumento pericoloso della temperatura di funzionamento delle turbine, tale da poter comportare un reset del sistema. Generando un segnale collegato al pin di break, è possibile con un determinato settaggio del dead time mettere in uno stato “safe” le turbine prima del totale reset (spegnimento)

15

Watchdogs

16

Watchdog(1/3): Introduzione

● Cos'è?– Il watchdog è un timer hardware che permette al

sistema di rilevare fault software● Come funziona?

– Il computer deve “poter parlare” di tanto in tanto con il watchdog(“kick out the watchdog”) per comunicargli che sta funzionando correttamente. Se questo "dialogo" non avviene, il watchdog produrrà un reset hardware del pc stesso.

● Funzionalità– Sono implementate versioni più complesse che

consentano la memorizzazione delle informazioni di contesto per il debugging.

– Possono innescare inoltre azioni di sistemi di controllo per effettuare operazioni di messa in sicurezza di apparati secondari

● Stm32f4xx– Equipaggiata con due differenti Watchdogs:

● Indipendent Watchdogs● Windowed Watchdogs

17

Watchdog(2/3): Indipendent Watchdogs

● Struttura:– Prescaler Register– Status Register– Reload Register– Key Register– Prescaler 8 bit– Counter 12 bit

● Funzionamento– Il watchdog effettua il conteggio a decremento del valore

contenuto nel Reload Register. Il conteggio è scandito dall'uscita del prescaler, che riceve in ingresso LSI clock. Se non viene effettuata nessuna operazione di refresh prima che il contatore scada, viene generata un interruzione di reset

18

Watchdog(3/3): Windowed Watchdogs

● Struttura– Watchdog Configuration

Register– Watchdog controll Register– Prescaler– Comparatore– Contatore a decremento

● Funzionamento– free-running downcounter

● il watchdog offre un contatore a decremento programmabile che non genera reset.

– Conditional Reset● Il WWDG genera un reset quando il programma in esecuzione non refresha il contenuto del downcounter

prima che il 6° bit si abbassi. Inoltre un reset viene generato anche nel caso in cui il 7° bit del downcount value nel registro di controllo è refreshato prima che il downcounter ha raggiunto il valore contenuto nel WindowsRegister.

– EWI● La Early Wakeup Interrupt (EWI) può essere utilizzata se delle operazioni di sicurezza devono essere

effettuate prima che il reset sia generato. Quando il contatore arriva a 0x40 viene generata un EWI interrupt e la corrispondente ISR può essere utilizzata per effettuare le specifiche operazioni di sicurezza prima che il reset sia lanciato.

19

FreeRTOS:RTOS tick

Software Timers

20

FreeRTOS(1/2): RTOS Tick

● Contesto– Nei moderni OS, un interrupt periodica è

necessaria per garantire che l'OS kernel riesca a gestire correttamente determinate attività come lo scheduling dei task.

● RTOS Tick– Quando è in sleep, un task specificherà un

tempo dopo il quale richiede di "svegliarsi"– Quando è bloccato, un task può specificare un

tempo massimo nel quale vuole stare in wait– Il FreeRTOS real time kernel misura il tempo

usando una variabile tick di conteggio. Un interrupt timer (RTOS tick interrupt) incrementa il conteggio dei tick con stretta accuratezza temporale, permettendo al kernel real time di misurare il tempo con una risoluzione definita dalla frequenza di interrupt. Ogni volta che il conteggio dei tick è incrementato il kernel real time controlla se è il momento di sbloccare o svegliare un task

Esempio– Al punto (1) un task idle RTOS è in esecuzione– Al punto (2) si verifica un tick RTOS, e il

controllo è trasferito alla ISR del tick– L'ISR del tick permette di eseguire vControlTask

con priorità più alta, switchandone il contesto– Ora che il contesto di esecuzione è di

vControlTask, l'ISR termina rilasciando il controllo a vControltask, che inizia l'esecuzione

21

FreeRTOS(2/2): Software Timers

● Definizione e Contesto di utilizzo– Una funzione che necessita di essere eseguita

in un determinato momento, utilizza una callback timer. Il tempo che intercorre tra l'inizializzazione del timer e l'effettiva esecuzione della callback è detto periodo del timer, quindi banalmente la funzione di callback è eseguita quando il timer si esaurisce

● API Esterne– Non sono implementati direttamente nel

kernel di FreeRTOS ma attraverso un servizio esterno detto "timer service/daemon task"

● Tipologie– One Shot: una volta partiti possono eseguire

la loro callback una sola volta al loro scadere– Auto-Reload: una volta fatti partire, possono

resettarsi automaticamente dopo ogni esecuzione della propria funzione di callback.

● Efficienza– L'esecuzione della callback timer non rientra

nell'interrupt context, quindi non consuma tempo di esecuzione aggiuntivo e non aggiunge overhead al tick interrupt. La Timer callback è eseguita nel contesto del timer service task, è quindi di essenziale importanza che all'interno della callback function non siano presenti instruzioni che possano causare il blocco della funzione.

22

Esempi

23

Esempi(1/2): Panoramica

1)Esempio SysTick:

1)Orologio (Ore, Minuti, Secondi)

2)Esempio Watchdogs:

1)Reset del sistema dopo un periodo di non-refresh del IWDG

3)Esempio Software Timers:

1)Vari task effettuano l'accensione e lo spegnimento dei Led in tempi differenti

4)Esempi Timers:

1)Controllo luminosità di un Led esterno tramite PWM mode

2)Controllo velocità di un motore DC tramite PWM Mode con alimentazione esterna

5)Demo

24

Esempi(1/2): Demo

● Panoramica– Controllo di un motore DC tramite PWM

Mode con alimentazione esterna, e messa in sicurezza tramite Indipendent Watchdog

● Configurazione– Istanziato il tim2 (GP Timer)– Istanziato il IWDG– Inserimento di parametri tramite USB

● Parametri– Statici:

● Sorgente di clock interna● Prescaler: div2 – Divide per 2 la frequenza del

clock● Periodo: 2000 impulsi● Modalità: PWM Mode edge aligned

– Dinamici inseriti tramite terminale:● Valore di duty cycle che si traduce in maggiore

potenza erogata