ola pessoal,
seguinte, preciso fazer um PWM na mão, so que estou tendo problemas para coloca-lo em funcionamento, baixo segue o codigo e o calculo usado para determinar pré carga. o hlep q eu queria do pessoal é o de fazer funfa o timer0, o resto para mim é sussegado. estou usando o mikroc mas tb estou usando em paralelo o hi tech
dados
pwm = 50hz - 20ms
oscilador interno = 8Mhz
calculo:
precarga = 256 - (20m/((4/8M)*256))
precarga = 100
int cont=0;
int x=0;
codigo
void inter(void) //rotina de interrupção
{
cont++; //incrementa o valor de cont a cada interrupção
TMR0 = 100; //Valor inicial para o Timer0, conta de 156 a 256
INTCON = 0b00100000; //Configura T0IE e limpa T0IF
}
void main()
{
ANSEL = 0b00000000;
OSCCON = 0b01111111; // frequencia do oscilador interno (8Mhz)
CMCON0 = 7; //configura cin e cout como portas i/o e desabilita comparador
TRISIO = 0; // todas como saida
GPIO = 0;
OPTION_REG = 0b10000111; //Atribui prescaler de 1:256 ao TMR0
TMR0 = 100; //Valor inicial para o Timer0, conta de 100 a 256
INTCON = 0b10100000; //Hab. a int. do TMR0, conf. os registros GIE e T0IE
while(1)
{
if(cont>x) //se cont for maior ou igual a 1000
{
GPIO = ~GPIO;
x=cont;
}
}
}
desde ja grato,
Thiago