Datorteknik. Tomas Nordström. Föreläsning 8 Timers. För utveckling av verksamhet, produkter och livskvalitet.

Relevanta dokument
Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers

Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet.

Beskrivning av porthantering i mikroprocessorn SAM3U som används på vårt labkort SAM3U- EK.

Datorteknik. Tomas Nordström. Föreläsning 7 Avbrott. För utveckling av verksamhet, produkter och livskvalitet.

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

Maskinorienterad programmering

Att läsa en manual. Exempel Timern ECT_16B8C. Läs den allmänna beskrivningen (Overview) Vi ser att grundfunktionen är en räknare med prescaler

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

Laboration 2 i Datorteknik- Assemblerprogrammering II

Övning 6. Parallellport, timer

Föreläsningsanteckningar till Konstruktionsmetoder

Microprocessor / Microcontroller. Industrial Electrical Engineering and Automation

Digitalteknik: CoolRunner-II CPLD Starter Kit Med kommentarer för kursen ht 2012

Övning2 Datorteknik, HH vt12 - Programmering

Styrteknik 4.5/7.5 hp distans: Tidskretsar, räknare

Laboration 5. Temperaturmätning med analog givare. Tekniska gränssnitt 7,5 p. Förutsättningar: Uppgift: Temperatur:+22 C

Digitalteknik: CoolRunner-II CPLD Starter Kit

Maskinorienterad programmering

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

Maskinorienterad programmering

GPIO - General Purpose Input Output

Microprocessor / Microcontroller

Realtidsprogrammering. En introduktion Implementering (med exempel från PIC)

Effektpedal för elgitarr

GPIO - General Purpose Input Output

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

Laborationens mål är att få displayen att visa timmar, minuter och sekunder samt att kunna ställa klockan.

Datorsystemteknik Föreläsning 7DAVA14

IndraDrive Open-loop. Styrning av asynkronmotor över Profibus. Version 1

Låskretsar och Vippor

Safe Logic Compact. Konfigurering av Rexroth säkerhets PLC. Snabbguide Svenska

Digital- och datorteknik

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

Lösningar till tentamen i EIT070 Datorteknik

Laboration 4: Knappstuds Drivrutiner för att eliminera störningar.

Support Manual HoistLocatel Electronic Locks

Polling (cyklisk avfrågning) Avbrott

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

Ansvarig lärare: Olof Andersson, Telefon (besöker skrivsalen)

A-del motsvarande KS1

Undantag, avbrott. Avsnitt 7. Undantag, avbrott

CPU. Carry/Borrow IX. Programräknare

Sekvensnät. William Sandqvist

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

Laboration 5 C-programmering på AVR TSEA57 Datorteknik I

F6: I/O hantering. Typer av I/O i ett datorsystem. Protokoll för synkronisering. Drivrutiner. Memory mapped Port mapped. Polling Timed Interrupt DMA

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

F8: Undantagshantering

2.45GHz CF Card Reader User Manual. Version /09/15

Beijer Electronics AB 2000, MA00336A,

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

CE_O3. Nios II. Inför lab nios2time

Styrsystem M340. Kom-igång med räknarmodul till M340. Skapad: Rev.:

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

Beacon BluFi Bluzone. Givarna har mycket hög känslighet och kan mäta mycket små förändringar.

Digitala projekt rapport

Lösningar till tentamen i EIT070 Datorteknik

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Tentamen (Exempel) Datorteknik Y, TSEA28

Accelerometer. Rikard Ekström Mattias Kindborg. Informationsteknologi Lunds Universitet

1. Förpackningsmaskin / Packaging machine

4 grundregler. Minneshantering. Problemet. Windows minkrav

Lösningsförslag TENTA Datorteknik (DO2005) D1/E1/Mek1/Ö1

Mål. Datorteknik. Introduktion. Innehåll. Verklig situation - pappaledighet. Introduktion (forts)

Mekanisk solros, Digitala projekt(edi021) Kristoer Nordvall, Stefan Windfeldt, Inlämmnad: 4 december 2006

Datorprojekt, del 1. Digitala system 15 p

Projektlaboration 4, synkronisering av klockan

Styrteknik: MELSEC FX och numeriska värden

F7: I/O hantering. Asynkron och synkron busscykel Bussfördelning. Periferikretsar

Minneselement,. Styrteknik grundkurs. Digitala kursmoment. SR-latch med logiska grindar. Funktionstabell för SR-latchen R S Q Q ?

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

COMBI Kanalers Kombinations Modul

Institutionen för elektro- och informationsteknologi, LTH

Styrteknik : Programmering med IEC Styrteknik

- Digitala ingångar och framförallt utgångar o elektrisk modell

Tentamen i Digitala system - EDI610 15hp varav denna tentamen 4,5hp

PNSPO! Adressering i Omrons PLC. 14 mars 2012 OMRON Corporation

Föreläsningsanteckningar 3. Mikroprogrammering II

Digitala Projekt(EITF40) - Larm

TSIU50 Mikrodatorprojekt. LAB1 AVR-introduktion och logikanalysator

IE1205 Digital Design: F8: Minneselement: Latchar och Vippor. Räknare

Programmering av inbyggda system

Övning 7. Timer, serieport

AD-DA-omvandlare. Mätteknik. Ville Jalkanen. 1

Utkast. Programmering. Signals. Olika typer av program. Sommarkurs Avbrott i mjukvara.

Programmera i Block Editor

INGENJÖRSHÖGSKOLAN INGENJÖRSHÖGSKOLAN

LABORATION. Datorteknik Y

Ladda upp filer fra n PLC till PC

Så sparas ström i dagens åttabitare

Tentamen med lösningsförslag

Avbrottshantering. Övningsuppgifter Lösningsförslag Uppgift (Reservation för diverse fel!)

Modbus över Ethernet. WAGO Contact SA TSS STR

DIGITALT VECKOKOPPLINGSUR + PROGRAMMERINGSKNAPP

Styrteknik distans: Minneselement, register, räknare, AD-omv D4:1

CanCom Bluetooth BLUETOOTH V5.6. Specifikation Specification LED. transceiver

Programallokering. Programtyper. Att placera program i flashrespektive. Program i FLASH-minne. Program i RAM-minne

Digitalteknik F9. Automater Minneselement. Digitalteknik F9 bild 1

Transkript:

Datorteknik Tomas Nordström Föreläsning 8 Timers För utveckling av verksamhet, produkter och livskvalitet.

Föreläsning 8 Timerbegrepp Timer på SAM3U Avbrottskodexempel Timers References: [SUM3U-complete] ATMEL AT91SAM ARM-based Flash MCU - SAM3U Series (Complete manual), 2012 [Yiu-DefGuide] Joseph Yiu, The definitive guide to the ARM cortex- M3, second edition, Newnes, 2010 2

Timer Timers är normalt inte en del av processorarkitekturen, men finns nästan alltid med i en mikroprocessor. Användning vid tidmätning: En räknare räknar fritt upp hela tiden. Genom externt avbrott kan man läsa av räknaren. Genom detta kan man mäta tiden mellan två händelser (avbrott), dvs mäta tid! Utföra periodiska händelser: En räknare räknar fritt upp. Genom att jämföra räknarvärdet med ett förinställt värde och generera avbrott kan kod fås att utföras periodiskt. Mycket effektivare och enklare än att göra fördröjningar med loopar. Kan göra annat under tiden! 3

Timer funktioner i vår ARM Cortex M3 och ATMEL SAM3U ARM Cortex M3 är lite speciell för processorarkitekturen definierar en speciell timer SYSTICK som alltid ska finnas. 24-bit down counter; Self-reload capability ATMEL som skapat SAM3U, vår mikroprocessor, har dessutom lagt till Tre Timer/Counter block. 3-Channel 16-bit Timer/Counter (TC) for capture, compare and PWM En Real-time Timer 32-bit Free-running back-up Counter; Integrates a 16-bit programmable prescaler running on slow clock; Alarm Register capable to generate a wake-up of the system En Watchdog Timer 16-bit key-protected once-only Programmable Counter; prevents the processor from being in a dead-lock on the watchdog access 4

SysTick Timer The system timer, SysTick, is a 24-bit count-down timer. Use this as a Real Time Operating System (RTOS) tick timer or as a simple counter To set up the SysTick Timer, the recommended programming sequence is as follows: Disable SysTick by writing 0 to the SYSTICK Control and Status register. Write new reload value to the SYSTICK Reload Value register. Write to the SYSTICK Current Value register to clear the current value to 0. Write to the SYSTICK Control and Status register to start the SysTick timer. 5

SysTick example ; Setup SYSTICK exception handler (only needed if vector table is located in RAM)! MOV R0, #0xF!!; Exception type 15! LDR R1, =SysTick_handler!; address of exception handler! LDR R2, =0xE000ED08!; Vector table offset register! LDR R2, [R2]! STR R1, [R2, R0, LSL #2]!; Write vector to VectTblOffset+ExcpType*4! To generate SYSTICK exception every 1024 processor clock cycle: ; Enable SYSTICK timer operation and enable SYSTICK interrupt! LDR R0, =0xE000E010 ; SYSTICK control and status register! MOV R1, #0! STR R1, [R0]!; Stop counter to prevent interrupt triggered accidentally! LDR R1, =1023!; Trigger every 1024 cycles (since counter decrement from 1023 to!!; 0, total of 1024 cycles, reload value is set to 1023)! STR R1, [R0,#4]!; Write reload value to reload register address! STR R1, [R0,#8]!; Write any value to current value register to clear current!!!!; value to 0 and clear COUNTFLAG! MOV R1, #0x7!; Clock source = core clock, Enable Interrupt, Enable SYSTICK! STR R1, [R0]!; Start counter! 6

Real-Time Timer (RTT) The Real-time Timer can be used to count elapsed seconds. It is built around a 32-bit counter fed by Slow Clock divided by a programmable 16-bit value. The value can be programmed in the field RTPRES of the Real-time Mode Register (RTT_MR). Programming RTPRES at 0x00008000 corresponds to feeding the real-time counter with a 1 Hz signal (if the Slow Clock is 32.768 khz). The 32-bit counter can count up to 232 seconds, corresponding to more than 136 years, then roll over to 0. The RTT (and RTC) alarm can generate a wake up of the core power supply. This can be enabled by writing respectively, the bits RTCEN and RTTEN to 1 in the Supply Controller Wake Up Mode Register (SUPC_WUMR). 7

Timer/Counter TC SAM3U Timer och Räknare (Timer/Counter - TC) på AT91SAM kan utföra flera funktioner, t.ex. frekvensmätningar, puls generation, skapa fördröjningar, räkna pulser, mäta intervall, pulsviddsmodulering (PWM), etc. Kapitel 36 i [SUM3U-complete]. 8

Timer/Counter TC SAM3U Tre oberoende 16-bitars räknare (Channels) Stor flexibilitet i klockningen av dessa räknare Tre externa klocksignaler (pinnar) Fem internal klocksignaler (olika nedskalningar av MCLK) Två multi-purpose I/O signaler kan också konfigureras av användaren. Två huvudanvändningssätt Mäta yttre händelser (Capture mode) Generera pulser eller vågformer (Waveform mode) Varje räknare styr var sitt avbrott 9

10

Signaler till varje TC kanal Externa klocksignaler Externa I/O pinnar TIOA/B används som insignal för Capture mode och utsignal för Waveform mode 11

Externa signaler till TC Borde nog vara TC1 och TC2 också 12

Klocksignaler till TC 13

Användning av TC Slå på huvudklockningen av TC (om den inte används så är den avstängd för att spara ström) Välj någon av räknarna (kanal/channel) Vilken funktion ska konfigureras? ska vi mäta/känna av yttre händelser, ska vi generera vågformer, eller bara periodiska signaler? Bestäm capture eller waveform mode utifrån funktion Sätt upp lämplig klockning och klockstyrning Sätt upp lämplig triggfunktion (en triggning nollställer räknaren och startar den) I waveform mode så sätts Register A,B,C till lämpliga värden för att skapa önskad vågform. I Capture mode kan Register A och B laddas med räknarens värde när en viss programmerbar händelse sker på TIOA 14

Hur kan en Timer/Counter användas? Periodiska avbrott Frekvensmätning, Puls generering, Skapa fördröjningar, Räkna pulser, Mäta intervall, Pulsviddsmodulering (PWM) 15

Pulsviddsmodulering Pulse-width modulation (PWM), or pulse-duration modulation (PDM) Duty-cycle - procent av tiden som är på jämfört med hela periodtiden 16

Användning av TC Steg ett, slå på klockningen av TC För att minska strömförbrukningen, är de flesta periferienheterna normalt inte klockare. Genom att skriva ID för TC enheten i Peripheral Clock Enable Register (PCER) aktiveras dess klocka. Detta är det första steget vid initiering av en Timer Counter. För resten av konfigureringen bör sedan TC inaktiveras, tex om den har slagits på av en tidigare exekvering av programmet. Detta görs genom att sätta CLKDIS biten i den motsvarande Channel Control Register (CCR). 17

Användning av TC Steg två, välj TC kanal och dess mode Välj vilken av de olika timer enheterna som ska användas (de kan eventuellt ha lite olika funktionalitet). Nästa steg består i att konfigurera Channel Mode Register (CMR). TC-kanaler kan arbeta i två olika lägen: Capture-mode, som normalt används för att utföra mätningar på insignaler. Waveform-mode, vilket möjliggör generering av pulser. 18

Användning av TC Exempel: periodiska avbrott Är syftet med TC att generera en avbrottssignal i en jämn takt kan detta åstadkommas både i Capture och Waveform läget. (Eftersom ingen signal samplas eller genereras spelar läget ingen roll.) Men genom att sätta det i Waveform läget och skicka ut pulser på TIOA och TIOB kan felsökning underlättas. Waveform mode sätts genom att ettställa WAVE biten i TC_CMR (Channel Mode Register). Jmf. Kap 36.7.9. 19

Timer för att generera avbrott i jämn takt Ettställning av CPCTRG biten i TC_CMR återställer timern och startar om räknaren varje gång räknaren när värdet i TC_RC registret. Välj rätt TC_RC värde för att generera en specifik fördröjning. Man kan också välja mellan flera olika in-klockor för kanalen vilket möjliggör en förskalning av MCK. Eftersom timern har en upplösning på 16 bitar, så behövs en stor skalfaktor vid långa fördröjningar. Till exempel om en timmer måste generera en 500 ms fördröjning med en 48 MHz huvudklockfrekvens och RC är det antal klockcykler som genererar rätt fördröjning fås följande skalfaktorer Clock = MCK/2 ; RC = 24000000 x 0.5 = 12000000 Clock = MCK/8 ; RC = 6000000 x 0.5 = 3000000 Clock = MCK/128 ; RC = 375000 x 0.5 = 187500 Clock = MCK/1024 ; RC = 46875 x 0.5 = 23437.5 Clock = 32kHz ; RC = 32768 x 0.5 = 16384 20

Timer konfigurering Eftersom den maximala RC är 65535, framgår det av dessa resultat att användning av MCK delat med 1024 eller intern långsamma klockan är nödvändigt för att generera längre (ca 1 s) fördröjningar. I om vi tex ska skapa en 250 ms fördröjning behöver vi välja den långsammast möjliga inklocka i CMR. För att konfigurerar en 500 ms period genom att välja klockan MCLK/1024: LDR R0,=TC0_BASE ; 0x40080000! LDR R1,=0x0000C003 ; wave mode, wavesel=10b, timer_clock4! STR R1,[R0+#0x04] ; TC0_CMR <- R1! LDR R1,=0x16E3 ; 12MHz/1024 * 0.5! STR R1,[R0+#0x1C] ; TC0_RC <- R1! 21

Enable TC interrupt Det sista initieringssteget består i att konfigurera avbrott när räknaren når programmerade värdet i TC_RC. För TC görs detta enklast genom att ställa in CPCS biten i Interrup Enable Register (TC_IER). LDR R0,=TC0_BASE ; 0x40080000! LDR R1,=0x10!; CPCS bit to be enabled! STR R1,[R0+#0x24] ; TC0_IER <- R1! 22

Att bekräfta ett avbrott I vissa sammanhang måste man bekräfta ett avbrott I sin avbrottsrutin för att inte åka på ett avbrott direkt när man gör retur. I vår SAM3U manual är det inte speciellt tydligt om man måste göra det för TC avbrott eller inte. Jag har inte hunnit bekräfta det eller inte, men det kan vara så att man bör bekräfta ett TC-avbrott genom att göra en läsning av status registret TCx_SR (som då skulle släcka alla statusbitar)! LDR R0,=TC0_BASE ; 0x40080000! LDR R1,[R0+#0x20]!; dummy read of TC0_SR to acknowledge interrupt! 23

Själva huvudprogrammet Mycket av det vi skrivit hittills är initieringen av kod och avbrott. Förutom avbrott ska ofta koden utföra något annat. Det som är själva huvudprogrammet I en del fall utför huvudprogrammet ingenting, utan man väntar endast på avbrott. Då bestå själva huvudprogrammet endast av en oändlig loop. Detta kallas ofta händelsestyrd kod.!main B MAIN! 24

Avbrott Debugga Avbrottet går endast att prova genom att köra i fullfart. Går ej att stega! Smart att sätta brytpunkt på avbrottshanteraren. Genom detta kan man stega genom avbrottskoden då avbrottet väl kommit. Fungerar det inte är följande fel vanliga: Glömt initiera avbrottsvektorn Glömt tillåta avbrott Fel i initiering av avbrottskällan 25

Sammanfattning Timer/Counter Basen är en räknare som kan Klockas av olika klockor interna och externa Kan jämföras med speciella register som genererar händelser, tex avbrott, när de är lika Kan stoppas och startas av olika trigger händelser (interna och externa) Beroende på vissa intervall (jmf med speciella register) kan pulsformer genereras på utgångar 26