Problemas com a implementação de PWM

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Mensagempor fredtg » 05 Fev 2009 13:42

ffcprog escreveu:tiozinho. só por idéia mesmo.

faz isso aqui e faça um teste pra ver se vai dar pau no pwm.

PWM1_Init(10000); //setando a freq do pwm em 20khz
PWM2_Init(10000);
PWM1_Start();
PWM2_Start();

while(1){

sinal = Adc_Read(0) >>2;
sinal_180 = (sinal) - 255? //isso aqui não funciona, se sinal<255 = valor negativo
PWM1_Change_Duty(sinal);
PWM2_Change_Duty(sinal_180);
delay_ms(5);
}

observe se desta forma, os pwm´s estão funcionando perfeitamente;;;

ffcprog
fredtg
Bit
 
Mensagens: 19
Registrado em: 29 Mar 2007 10:34

Mensagempor fredtg » 05 Fev 2009 13:49

ffcprog, fiz as modificações que vc sugeriu e retirei alguns sets que estavam sendo redundantes, pois o próprio mikroc já setava.

-------------------------------------------------------------------------------------------
unsigned short rc, rcc;

void main(){
INTCON = 0x00; //desabilitando interrupções
OPTION_REG = 0xFF; //desabilitando os pullups
TRISA = 0x01; //configurando os pinos A como entrada
TRISB = 0x00; //configurando os pinos B como saída
TRISC = 0x00; //configurando os pinos C como saída
TRISD = 0x00;
TRISE = 0x07; //configurando os pinos D como saída
ADCON1 = 0X80; //setando o registrador p justificar a direita, setando portas
//como analógicas e setando Vdd como tensão de ref

PWM1_Init(20000);
PWM2_Init(20000);
PWM1_Start();
PWM2_Start();

while(1){
rc = Adc_Read(0)>>2;
delay_ms(500);
rcc = ((int)rc*-1)+255;
PWM1_Change_Duty(rc);
PWM2_Change_Duty(rcc);
}
}
-------------------------------------------------------------------------------------------

Ah, tb não funcionou!!! Simula legal, mas na prática...Mas constatei o seguinte. Usei o delay de 500ms que usou no seu teste. Aparece na tela do osciloscópio um pwm perfeito, mas a razao ciclica não se altera com a variação do sinal de entrada. Voltando o delay para 30us o pwm volta a se comportar de acordo com as imagens já postadas
fredtg
Bit
 
Mensagens: 19
Registrado em: 29 Mar 2007 10:34

Mensagempor ffcprog » 05 Fev 2009 14:32

viu, óia....

disculpa ieu, sinhozim..

Mais com toda certeza do mundo, é alguma caquinha sua............

Eu por exemplo quero que faça apenas isso aqui...

unsigned short rc, rcc;

void main(){
INTCON = 0x00; //desabilitando interrupções
OPTION_REG = 0xFF; //desabilitando os pullups
TRISA = 0x01; //configurando os pinos A como entrada
TRISB = 0x00; //configurando os pinos B como saída
TRISC = 0x00; //configurando os pinos C como saída
TRISD = 0x00;
TRISE = 0x07; //configurando os pinos D como saída
ADCON1 = 0X80; //setando o registrador p justificar a direita, setando portas
//como analógicas e setando Vdd como tensão de ref

PWM1_Init(10000);
PWM2_Init(10000);
PWM1_Start();
PWM2_Start();

while(1){
rc = Adc_Read(0)>>2;
rcc = Adc_Read(1)>>2
PWM1_Change_Duty(rc);
PWM2_Change_Duty(rcc);
delay_ms(100);
}
}

Seguinte primo. Esquece o proteus, faça o teste no seu laboratório, se disser que é protoboard "eu te mato"..

Depois de hoje, vou simular no ISIS, só em ultimo caso. Se você visse que um 16f877 esta estourando a pilha com uma coisa tão besta tu não iria acreditar...

ffcprog
ffcprog
Byte
 
Mensagens: 145
Registrado em: 14 Fev 2007 23:16

Mensagempor fredtg » 05 Fev 2009 14:35

Senhores, problema resolvido. Sabe o master clear, pois é, era ele o bendito que estava sacaneando tudo. Agora está tudo ok.

Valeu pela atenção de cada um pela ajuda e em especial ao ffcprog
fredtg
Bit
 
Mensagens: 19
Registrado em: 29 Mar 2007 10:34

Mensagempor ffcprog » 05 Fev 2009 15:00

TIBUMMMMMMM

sabia...

Caquinha sua e ainda na protoboard. :(

:evil:
ffcprog
Byte
 
Mensagens: 145
Registrado em: 14 Fev 2007 23:16

Anterior

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Google [Bot] e 1 visitante

cron

x