290 likes | 467 Views
Mikroprotsessorid. PIC TAIMERID. Milleks timer ??. Sündmus1. Sündmus2. aeg. loenduri start. loenduri stop. Timer/Counter. Reset (kirjuta 0). katkestus. Timer. ületäitumine. Postscaler. Counteri register Programm võib siia kirjutada või siit lugeda. OSC1 / 4. +1. Counter.
E N D
Mikroprotsessorid PIC TAIMERID
Milleks timer ?? Sündmus1 Sündmus2 aeg loenduri start loenduri stop
Timer/Counter Reset(kirjuta 0) katkestus Timer ületäitumine Postscaler Counteri register Programm võib siia kirjutadavõi siit lugeda OSC1 / 4 +1 Counter SynchronizedAsynchronous : n (scaler) MUX Bitt Bitt Bitid Bitt Tõusev või langev front
WDT - WatchDog Timer Sõltumatu välisest ostsillaatorist. Periood ~18 ms (7 ... 33 ms) Normaalne töö Teeb iga ettemääratud aja järel RESET. NB! PC = 0000h SLEEP Äratab Sleebist üles NB! PC = PC + 1 Configuration word 2007h WDTE = 0 – WDT disabledWDTE = 1 – WDT enabled
Timer0 } +1 ületäitumine
01 CLRF STATUS ; et olla Bank002 CLRF INTCON ; keela katkestused03 BSF STATUS,RP0 ; Bank104 MOVF OPTION_REG,W05 ANDLW 0xD7 ; 1101 0011 06 IORLW 0x03 ; 0001 001107 MOVWF OPTION_REG ; uu01 001108 MOVLW 0x0009 MOVWF TRISB ; PortB Out10 BCF STATUS,RP0 ; Bank011 BSF INTCON,TMR0IE ; Enable Timer0 Int12 ; BSF INTCON,GIE ; General Enable Ints13 Loop14 MOVF TMR0,W ; Saada TMR0 ...15 MOVWF PORTB ; ... läbi W Porti B16 BTFSS INTCON,TMR0IF ; Kas TMR0IF=1 ?17 GOTO Loop ; ei olnud T0CS: 0-CLK, 1-PORT T0SE: 0-tõusev,1-langev (front)PSA: Prescaler on: 0-Timer0, 1- WDT
Timer1 +1 }
Timer1 +1
Timer2 Serial pordi taktsagedus Ainult FOSC/4 (sleep ajal ei käi!) Loeb alates 00-st. Kui TMR2 = PR2, siis algab loendur uuesti 00-st
Timer2 11h 92h
Madalaim katkestuste sagedus ? Fosc = 4 MHz, Fosc/4 = 1 MHz : 256 : 256
Madalaim katkestuste sagedus ? Fosc = 4 MHz, Fosc/4 = 1 MHz : 65536 : 8
Madalaim katkestuste sagedus ? Fosc = 4 MHz, Fosc/4 = 1 MHz : 16 : 256 : 16
Capture/Compare/PWM Capture:Kui sisendis on impulss, kirjutataksetaimeri seis mingitesse registritesse üles ja tekitatakse katkestus. Compare:Kui taimeri seis = etteantud registrite seissiis tekib katkestus ja väljundimpulss
Capture Capture:Kui sisendis on impulss, kirjutatakseTMR1H:TMR1L registritesse CCPRxH:CCPRxLja tekitatakse katkestus.
Compare Compare:Kui TMR1H:TMR1L = CCPRxH:CCPRxL,siis tekib katkestus CCPxIFja väljundimpulss
Capture Compare 0000 Timer1
Capture Compare
PWM Pulse Width Modulation Periood Täitetegur
PWM Täiteteguri register Compare R Timer2 PWM o S Compare TRIS Perioodi register
Täiteteguri register Compare R Timer2 S Compare Perioodi register CCPxM<3...0>: 11xx – PWM mode
Täiteteguri register Compare R Timer2 S Compare Perioodi register
Täiteteguri register 2 Täiteteguri register 1 Compare R Compare S Timer2 R Compare S Perioodi register
Kuidas programmeerida PWM • Kirjuta registrisse CCP1CON<3...0> (0x17) 0000 (CCP off) • Kirjuta Timer2 perioodi registrisse PR2 (0x92) PWMi periood • Kirjuta täitetegur registritesse CCPR1L (0x15) ja CCP1CON<5:4> • Sea PortC2/CCP1 väljundiks(TRISB<2>=0) • Kirjuta registrisse T2CON (0x12) prescaleri väärtus ja enable Timer2 • Kirjuta registrisse CCP1CON<3...0> (0x17) 1111 (PWM mode) Täiteteguri register 1 Compare R Timer2 S Compare Perioodi register