Pagina 1 di 1

problema PWM pic16

MessaggioInviato: 15 feb 2020, 19:28
da lorenzo01
buongiorno, ho bisogno di ottenere un segnale PWM da un pic16f1773, usando mplab x per quanto ne so non di sono istruzioni apposite quindi ho provato senza successo a farlo a "mano" caricando i valori sui vari registri del modulo ccp utilizzandolo in modalità PWM
Codice: Seleziona tutto
#pragma config FOSC = HS        // Oscillator Selection Bits (HS Oscillator, High-speed crystal/resonator connected between OSC1 and OSC2 pins)
#pragma config WDTE = OFF       // Watchdog Timer Enable (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable (PWRT disabled)
#pragma config MCLRE = ON       // MCLR Pin Function Select (MCLR/VPP pin function is MCLR)
#pragma config CP = OFF         // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config BOREN = ON       // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config CLKOUTEN = ON    // Clock Out Enable (CLKOUT function is enabled on the CLKOUT pin)
#pragma config IESO = ON        // Internal/External Switchover Mode (Internal/External Switchover Mode is enabled)
#pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled)

#pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)
#pragma config PPS1WAY = ON     // Peripheral Pin Select one-way control (The PPSLOCK bit cannot be cleared once it is set by software)
#pragma config ZCD = OFF        // Zero-cross detect disable (Zero-cross detect circuit is disabled at POR)
#pragma config PLLEN = OFF      // Phase Lock Loop enable (4x PLL is always enabled)
#pragma config STVREN = ON      // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will cause a Reset)
#pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LPBOR = OFF      // Low-Power Brown Out Reset (Low-Power BOR is disabled)
#pragma config LVP = ON         // Low-Voltage Programming Enable (Low-voltage programming enabled)

#include <xc.h>
#define _XTAL_FREQ 20000000
void main(void){

while(1){
TRISC = 0b00000000;
T2CON = 0b11000000;
T2CLKCON = 0b00000010;
T2PR = 154;
PIR2 = 0;
CCPTMRS1 = 0b00000000;
CCP1CON = 0b10111100;
RC4PPS = 0b00010101;
CCPR1L = 0b11111111;
CCPR1H = 0b00001001;
    }
}

vi ringrazio in anticipo per le eventuali risposte

Il codice va postato utilizzando gli appositi tag (pulsante "code") altrimenti è anche difficile da leggere;
ora ho modificato io, ma valga per la prossima volta, grazie.

Re: problema PWM pic16

MessaggioInviato: 17 feb 2020, 12:00
da lelerelele
per cominciare mi pare che non hai settato il registro analogico ANSEL, a volte se non lo setti da problemi, non consente l'uscita.

saluti.

Re: problema PWM pic16

MessaggioInviato: 17 feb 2020, 13:31
da lorenzo01
Nel codice che ho postato non c'è ma nelle varie prove che ho eseguito l'ho impostato correttamente portandolo a zero

Re: problema PWM pic16

MessaggioInviato: 17 feb 2020, 14:30
da EcoTan
Le istruzioni nel loop sotto la While, impostano sempre gli stessi registri sempre con gli stessi valori, pertanto andrebbero messe prima in modo che vengano eseguite una volta sola (magari non è importante ma di solito si fa così).

Re: problema PWM pic16

MessaggioInviato: 23 feb 2020, 10:43
da lelerelele
possiamo escludere che non ci sia clock?

comunque la via maestra è prendersi il datsheets, settare tutti i registri relativi al PWM.

saluti

Re: problema PWM pic16

MessaggioInviato: 19 mar 2020, 23:45
da ivanpascolo
Perché non inizi ad utilizzare il plugin MCC di microchip? Generare un PWM è davvero semplice.