Estoy siguiendo el tutorial sobre los fenómenos AVR en temporizadores escritos por @Dean Camera . Su código dice:
#include <avr/io.h>
int main (void)
{
DDRB |= (1 << 0); // Set LED as output
// TODO: Set up timer at Fcpu/64
for (;;)
{
// Check timer value in if statement, true when count matches 1 second
if (TCNT1 >= 15624)
{
PORTB ^= (1 << 0); // Toggle the LED
TCNT1 = 0; // Reset timer value
}
}
}
Esto destella un LED. Edité el código para activar y desactivar todos los pines en PORTB, pero mi código "se ejecuta más lento", con los LED que aparecen menos brillantes. Mi código:
#include <avr/io.h>
int main(){
DDRB= 0xFF;
TCCR1B |= (1<<CS10) | (1 << CS11);
PORTB = 0xFF;
for (;;) {
if(TCNT1 >= 15624){
PORTB = 0x00;
TCNT1 = 0;
} else {
PORTB = 0xFF;
}
}
}
¿Puede alguien explicar por qué sucede esto? También hay una mejor manera de activar / desactivar los pines, esta es la única forma en que podría pensar. Solo estoy ejecutando esto en un STK500 con un mega 16L.