Genereras TIMER2 avbrott när TMR2 = CCPR2 (där CCPR2 = CCPR2L:CCP2CON<5,4>) och/eller när TMR2=PR2, dvs positiv och negativ flank för PWM-signalen?
Jag hittar inget om det i databladet. avbrottsflaggan nollas ju automatiskt, och man behöver inte sköta något i avbrottsrutinen, det har jag förstått. Men min fråga är om jag hamnar i avbrottsrutinen över huvud taget?
Grejen är den att jag vill även ha en counter för att hålla reda på tid från 1ms och upp emot någon timme.
Avbrott vid PWM i PIC16F886?
Re: Avbrott vid PWM i PIC16F886?
Det finns flera ställen där det beskrivs hur det fungerar.
Var det något speciellt med dessa som var oklart ?
Under 2.2.2.6 :
> bit 1 TMR2IF: Timer2 to PR2 Interrupt Flag bit :
> 1 = A Timer2 to PR2 match occurred (must be cleared in software)
> 0 = No Timer2 to PR2 match occurred
Under 7.1 :
> The match output of the Timer2/PR2 comparator is
> then fed into the Timer2 postscaler. The postscaler has
> postscale options of 1:1 to 1:16 inclusive. The output of
> the Timer2 postscaler is used to set the TMR2IF
> interrupt flag bit in the PIR1 register.
Under 11.5.7 :
> 6. Enable PWM output after a new PWM cycle has started:
> • Wait until Timer2 overflows (TMR2IF bit of the PIR1 register is set).
Under 11.6.3 :
> The completion of a full PWM cycle
> is indicated by the TMR2IF bit of the PIR1 register
> being set as the second PWM period begins.
Bilden 7-1 är också ganska tydlig.
Var det något speciellt med dessa som var oklart ?
Under 2.2.2.6 :
> bit 1 TMR2IF: Timer2 to PR2 Interrupt Flag bit :
> 1 = A Timer2 to PR2 match occurred (must be cleared in software)
> 0 = No Timer2 to PR2 match occurred
Under 7.1 :
> The match output of the Timer2/PR2 comparator is
> then fed into the Timer2 postscaler. The postscaler has
> postscale options of 1:1 to 1:16 inclusive. The output of
> the Timer2 postscaler is used to set the TMR2IF
> interrupt flag bit in the PIR1 register.
Under 11.5.7 :
> 6. Enable PWM output after a new PWM cycle has started:
> • Wait until Timer2 overflows (TMR2IF bit of the PIR1 register is set).
Under 11.6.3 :
> The completion of a full PWM cycle
> is indicated by the TMR2IF bit of the PIR1 register
> being set as the second PWM period begins.
Bilden 7-1 är också ganska tydlig.
Re: Avbrott vid PWM i PIC16F886?
Under 2.2.2.6 :
> bit 1 TMR2IF: Timer2 to PR2 Interrupt Flag bit :
> 1 = A Timer2 to PR2 match occurred (must be cleared in software)
> 0 = No Timer2 to PR2 match occurred
Att TMR2IF sätts det borde jag verkligen hajjat, för jag väntar själv på den i koden för initieringen av PWM:en
MEn nollas den inte automatiskt i PWM-mode? Hur fungerar det då om man använder postscarel? Det säger emot manuell nollning tycker jag, annars får man ju bara flaggan t.ex. var 16:e gång och måste den nollas manuellt skulle det ju inte komma någon ny flank efter första. 
> bit 1 TMR2IF: Timer2 to PR2 Interrupt Flag bit :
> 1 = A Timer2 to PR2 match occurred (must be cleared in software)
> 0 = No Timer2 to PR2 match occurred
Att TMR2IF sätts det borde jag verkligen hajjat, för jag väntar själv på den i koden för initieringen av PWM:en


Re: Avbrott vid PWM i PIC16F886?
> MEn nollas den inte automatiskt i PWM-mode?
Nja, de säger ju "(must be cleared in software)", så det verkar inte så.
> ...annars får man ju bara flaggan t.ex. var 16:e gång
Ja, det är ju själva meningen med postscalern...
> och måste den nollas manuellt skulle det ju inte komma någon ny flank efter första.
Förstår inte hur du menar riktigt, det kommer ett interrupt t.ex var 16:e gång
och som man nollar i koden. Om man vill ha det så....
Nja, de säger ju "(must be cleared in software)", så det verkar inte så.
> ...annars får man ju bara flaggan t.ex. var 16:e gång
Ja, det är ju själva meningen med postscalern...
> och måste den nollas manuellt skulle det ju inte komma någon ny flank efter första.
Förstår inte hur du menar riktigt, det kommer ett interrupt t.ex var 16:e gång
och som man nollar i koden. Om man vill ha det så....
Re: Avbrott vid PWM i PIC16F886?
>> och måste den nollas manuellt skulle det ju inte komma någon ny flank efter första.
> Förstår inte hur du menar riktigt, det kommer ett interrupt t.ex var 16:e gång
> och som man nollar i koden. Om man vill ha det så....
Det jag menar är att om man måste nolla flaggan manuellt för att PWM ska fungera så skulle ju postscalern påverka PWM-frekvensen, och det gör den inte enligt databladet.
Men jag kom just på att det måste ju vara så att PWM-pinnen (utgången) sätts och nollas utan hänsyn till flaggor, men man kan använda flaggan som om man använde timer2 overflow-avbrott. (men med de inställningar som gjorts för PWM-frekvensen förståss. Alltså PWM-frekvensen/postscalern.) Och DÅ ska flaggan nollas. Rätt?
Så man hamnar inte i avbrottsrutinen mer än var 16:e gång (förutsatt postscaler=16 och endast PIE och GIE enablade utöver PWM/TMR2-avbrottet)?
> Förstår inte hur du menar riktigt, det kommer ett interrupt t.ex var 16:e gång
> och som man nollar i koden. Om man vill ha det så....
Det jag menar är att om man måste nolla flaggan manuellt för att PWM ska fungera så skulle ju postscalern påverka PWM-frekvensen, och det gör den inte enligt databladet.
Men jag kom just på att det måste ju vara så att PWM-pinnen (utgången) sätts och nollas utan hänsyn till flaggor, men man kan använda flaggan som om man använde timer2 overflow-avbrott. (men med de inställningar som gjorts för PWM-frekvensen förståss. Alltså PWM-frekvensen/postscalern.) Och DÅ ska flaggan nollas. Rätt?
Så man hamnar inte i avbrottsrutinen mer än var 16:e gång (förutsatt postscaler=16 och endast PIE och GIE enablade utöver PWM/TMR2-avbrottet)?
Re: Avbrott vid PWM i PIC16F886?
Och kan man använda PWM utan att enabla TMR2IE? alltså köra PWM utan att det genereras ett enda avbrott pga PWM/TIMER2?
Re: Avbrott vid PWM i PIC16F886?
> Det jag menar är att om man måste nolla flaggan manuellt för att PWM ska fungera
Nej, du kan skita helt i det också. Det är upp till dig.
> så skulle ju postscalern påverka PWM-frekvensen
Nej, det påverkar bara hur ofta IF flaggan sätts.
Men resten visar ju att du har fattat...
Nej, du kan skita helt i det också. Det är upp till dig.
> så skulle ju postscalern påverka PWM-frekvensen
Nej, det påverkar bara hur ofta IF flaggan sätts.
Men resten visar ju att du har fattat...
