Estoy usando un ATtiny10 de 12 MHz y me gustaría generar una onda cuadrada en PB0 a 40 kHz. Creo que necesito CTC. ¿Cuáles deberían ser los valores de TCCR0A, TCCR0B, OCR0A y OCR0B?
Estoy usando un ATtiny10 de 12 MHz y me gustaría generar una onda cuadrada en PB0 a 40 kHz. Creo que necesito CTC. ¿Cuáles deberían ser los valores de TCCR0A, TCCR0B, OCR0A y OCR0B?
La onda cuadrada a 40 kHz cambia cada 12,5 us, que es exactamente 150 periodos de reloj del oscilador. El código es:
TCCR0A = COM0A(0x01); //Toggle OC0A on compare match
TCCR0B = WGM0_32(0x01) | CS0(1); //clear on compare with OCR0A, use unscaled system clock
OCR0A = (12000000ul/40000u/2u)-1u; //overflow twice per 40kHz period
Lea otras preguntas en las etiquetas attiny