Avbrott vid PWM i PIC16F886?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
StRob
Inlägg: 167
Blev medlem: 15 maj 2007, 09:30:47
Ort: Karlstad

Avbrott vid PWM i PIC16F886?

Inlägg av StRob »

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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Avbrott vid PWM i PIC16F886?

Inlägg av sodjan »

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.
StRob
Inlägg: 167
Blev medlem: 15 maj 2007, 09:30:47
Ort: Karlstad

Re: Avbrott vid PWM i PIC16F886?

Inlägg av StRob »

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. :humm:
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Avbrott vid PWM i PIC16F886?

Inlägg av sodjan »

> 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å....
StRob
Inlägg: 167
Blev medlem: 15 maj 2007, 09:30:47
Ort: Karlstad

Re: Avbrott vid PWM i PIC16F886?

Inlägg av StRob »

>> 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)?
StRob
Inlägg: 167
Blev medlem: 15 maj 2007, 09:30:47
Ort: Karlstad

Re: Avbrott vid PWM i PIC16F886?

Inlägg av StRob »

Och kan man använda PWM utan att enabla TMR2IE? alltså köra PWM utan att det genereras ett enda avbrott pga PWM/TIMER2?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Avbrott vid PWM i PIC16F886?

Inlägg av sodjan »

> 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... :-)
Skriv svar