Estoy un poco confundido, y espero que alguien aquí pueda señalarme lo que me estoy perdiendo ... Estoy usando un Atmega8-16PU, Se encendió el fusible con:
avrdude -b 19200 -c avrisp -P /dev/tty.usbserial-A9IHTRVJ -p atmega8 -U lfuse:w:0xe4:m -U hfuse:w:0xd9:m
que significa ... de acuerdo con enlace que estoy usando int. osc 8 mhz. En mi código, sobrescribo OSCAL a OSCCAL = 0xFF; para trabajar a su máxima frecuencia.
sin embargo, en un bucle for (también probado con 'while'), solo estoy cambiando un pin LED1_STATE ^ = (1 < < LED1_PIN); y estoy midiendo 1.6Mhz ...
Estaba pensando que el AVR era capaz de ejecutar una instrucción por reloj del sistema ... aquí parece que la FCPU está dividida por 4 ...
También intenté usar Timer0 y su interrupción de desbordamiento con;
TCNT0 = 254;
TIMSK |= (1<<TOIE0); // enable interrupt
TCCR0 = 0x01; //prescaler = 1
sei();
ISR(TIMER0_OVF_vect){
LED1_STATE ^=(1<<LED1_PIN);
TCNT0 = 254;
}
y aquí la señal de salida 200Khz ....
¿Puede alguien ayudarme a averiguar qué está pasando? ¿No soy suficiente teniendo en cuenta el necesario tiempo de 'instrucciones'? Muchas gracias internet
Saludos