Estoy tratando de construir una ola de escalera utilizando atmega16.i he generado una señal pwm que también se puede controlar el ancho automáticamente. He usado un filtro de paso bajo con el pin de salida oc0 del microcontrolador. Como resultado, se observa un cambio en la forma de onda .el código y la curva de respuesta están abajo; código avr:
MI código:
uint16_t second = 0 volátil;
int intigno no firmado volátil = 0;
int intigno no firmado volátil = 0;
void init_timer1 (void);
void init_timer0 (void);
int main (void)
{
DDRB = 0xFF;
init_timer1 ();
sei();
init_timer0 ();
mientras (1) {
val = minuto * 36.4;
OCR0=val;
}
}
void init_timer0 (void)
{
TCCR0 |=(1<<CS00) | (1<<CS02) | (1<<WGM00) | 1<<WGM01 | 1<<COM01;
TCCR0 &=(~1<<CS01) | (~1<<COM00);
}
void init_timer1 (void)
{ TCCR1B |=(1<<CS12);
TCCR1B |=(1<<WGM12);
TCNT1=0;
OCR1A=430;
TIMSK |=(1<<OCIE1A);
}
ISR (TIMER1_COMPA_vect) {
second++;
if(second<7)
{ minute=second;
}
else
{ minute--;
}
if(second==12)
{
second=0;}
}
Finaliza el código,
Lo he intentado de manera diferente, pero no he obtenido la salida deseada, por favor ayude a cualquiera;
diagrama de circuito:
larespuestadesalidasemuestraenelosciloscopiodeProteusacontinuación:
perocuandoR=15ohm C=4.7uluegolasalidaacontinuación:
así que el ancho de pwm se está cambiando pero necesito una onda de escalera,