ic910 Inserito: 20 febbraio 2016 Segnala Inserito: 20 febbraio 2016 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.
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora