Vai al contenuto
PLC Forum


Logica per PWM hardware su 16f1613


ic910

Messaggi consigliati

Salve a tutti .
Provo a configurare un 16f1613 per fargli generare un PWM (Hardware).
Sto programmando in basic .
Con i Pic vecchi bastava seguire la sintassi del comando HPWM e tutto adava alla perfezione. Con le serie nuove sembra che questo comando non funzioni più correttamente.

Ho impostato i vari registri iniziali nel seguente modo :

Declare CCP1_Pin PORTC.5 'Imposto la porta C5 come uscita PWM hardware
 CCPTMRS = %00000000 'Ho impostato il TMR2 come timer del CCP
  PR2 = 155 'Valore del Periodo impostato
   CCP1CON = %11001100 'Ho abilitato PWM e OE FMT allineamento a destra
    Dim dutycycle As Word
     dutycycle = 0
      CCPR1H = dutycycle.HighByte
       CCPR1L = dutycycle.LowByte
        PIR1 = %00000000 'Azzero il Flag del Overflow TMR2
         T2CON = %11000000 'Abilito TIMER2 Prescaler 1:16 Postscaler 1:1
           T2CLKCON = %00000000 'Frequenza del Clock TMR2 FOSC/4

Mentre la Routine per cambiare il valore del PWM è questa :


motor_vel:

If mos_fet = 0 Then '
dutycycle = 0
CCPR1H = dutycycle.HighByte
CCPR1L = dutycycle.LowByte
PIR1 = %00000000 'azzerando il bit 1 azzero TMR2IF Flag Over Flow
End If

If mos_fet = 1 Then
dutycycle = 313           'il motore deve essere alimentato a metà tensione
CCPR1H = dutycycle.HighByte
CCPR1L = dutycycle.LowByte
PIR1 = %00000000 'azzerando il bit 1 azzero TMR2IF Flag Over Flow
End If
Return

Cosa mi sfugge ? In questo modo cerco di ottenere quando il mos-fet = 0 l'uscita PWM dovrebbe darmi Ton = 0 % mentre quando mos-fet = 1 dovrebbe darmi 50% di Ton .
Mentre se il mos-fet = 1 in uscita ho solo un incremento della tensione di 100 mV

Devo impostare anche una Routine di interrupt per gestire overflow del TMR2 ?

E nella routine di interrupt cosa dovrei controllare ?

Grazie a tutti spero in un vostro aiuto.

Link al commento
Condividi su altri siti


Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...