Tengo un ATtiny85 y estoy tratando de configurar el reloj a 8 MHz. He leído la hoja de datos y algunas discusiones sobre cómo hacer esto, pero no tengo suerte para que funcione. He incluido mi código y cualquier ayuda será muy apreciada.
#include <avr/io.h>
#include <avr/interrupt.h>
int main(void)
{
cli();
CLKPR |= 1<<CLKPCE;
CLKPR |= 0;
sei();
DDRB |= 1<<PINB1 | 1<<PINB0;
TCCR0A |= 1<<WGM00 | 1<<WGM01 | 1<<COM0B0 | 1<<COM0B1;
TCCR0B |= 1<<CS00;
OCR0B = 240;
TCCR1 |= 1<<PWM1A | 1<<COM1A0 | 1<<CS13 | 1<<CS12 | 1<<CS11 | 1<<CS10;
OCR1C = 255;
OCR1A = 127;
while (1)
{
}
}
No tengo un alcance, por lo que no puedo determinar cuál es la frecuencia del Timer0, pero sé que el Timer1 está funcionando a alrededor de 61 Hz (prescaler = CK/16384) porque cronometré el parpadeo de un LED. Eso significaría que la CK todavía está en 1 MHz. No estoy seguro de lo que estoy haciendo mal aquí.
Obviamente me di cuenta de lo que estaba haciendo mal después de publicar una pregunta. Los siguientes cambios lo arreglaron.
CLKPR = 0b10000000;
CLKPR = 0;
Ignacio Vázquez-Abrams
#include <avr/power.h>
clock_prescale_set(clock_div_1);