ffcprog escreveu:void main(){
PWM1_Init(5000);
PWM1_Start();
PWM1_Change_Duty(160);
while(1){
//tenta assim, e veja se o problema acaba.
}
}
ffcprog
Deu na mesma.
Moderadores: andre_luis, 51, guest2003, Renie
ffcprog escreveu:void main(){
PWM1_Init(5000);
PWM1_Start();
PWM1_Change_Duty(160);
while(1){
//tenta assim, e veja se o problema acaba.
}
}
ffcprog
otavio luiz escreveu:o seu código é só este mesmo???? Por um acaso voce não esta ligando o WDT, ta parecendo que o pic ta ressetando por algum motivo.
otavio luiz escreveu:o seu código é só este mesmo???? Por um acaso voce não esta ligando o WDT, ta parecendo que o pic ta ressetando por algum motivo.
fredtg escreveu:O código completo é este aqui:
++++++++++++++++++++++++++++++++++++++++++++++++
unsigned sinal; //mais eim ??
signed sinal_180; // como ??
void main(){
INTCON.GIE = 0; //desabilitando interrupções globais
INTCON.PEIE = 0; //desabilitando interrupções periféricas
INTCON.T0IE = 0; //desabilitando interrupções do TMR0
INTCON.INTE = 0; //desabilitando interrupções externas do RB0
INTCON.RBIE = 0; //desabilitando interrupções por mudanças em RB
//intcon = 0xXX ??? pode ser ?
TRISA = 0xFF; //configurando os pinos A como entrada
PORTA = 0x00;
TRISB = 0x00; //configurando os pinos B como saída
PORTB = 0x00;
TRISC = 0x00; //configurando os pinos C como saída
PORTC = 0x00;
TRISD = 0x00; //configurando os pinos D como saída
PORTD = 0x00;
ADCON1 = 0X80; //registrador p justifica a direita, setando portas
//como analógicas e setando Vdd como tensão de ref
CCP1CON.CCP1M3 = 1; //habilitando o PWM em CCP1
CCP1CON.CCP1M2 = 1;
CCP1CON.CCP1M1 = 1;
CCP1CON.CCP1M0 = 1;
//ccp1con = 0xXX ?? pode também ?
CCP2CON.CCP2M3 = 1; //habilitando o PWM em CCP2
CCP2CON.CCP2M2 = 1;
CCP2CON.CCP2M1 = 1;
CCP2CON.CCP2M0 = 1;
//ccp2con = 0xXX ?? pode também ?
PWM1_Init(20000); //setando a freq do pwm em 20khz
PWM2_Init(20000);
PWM1_Start();
PWM2_Start();
while(1){
sinal = Adc_Read(0) >>2;
delay_us(30);
sinal_180 = ((signed)sinal*-1)+255; // que ?
PWM1_Change_Duty(sinal); // vocÊ disse unsigned "de uma olhada //como ficou o asm PWM2_Change_Duty(sinal_180); //pwm complementar
}
}
++++++++++++++++++++++++++++++++++++++++++++++++++
É isso aí. Se compilar esse código e rodar no proteus funciona !!! Mas no pic não
otavio luiz escreveu:outra coisa, voce não falou qual pic esta usando então acredito que seja o 16f877A, voce deve desligar os comparadores que ele possue internamente senão vira uma bagunça mesmo com as interrupções desligadas.
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante