martes, 21 de enero de 2014

Led Blink ATmega32U4 a 16 MHz

La tarjeta de Teensyduinno V2.0 la cual contiene un ATmega32U4 puede ser programada por medio de un bootloader el cual está residente en la memoria FLASH del microcontrolador.

Una gran ventaja de esta tarjeta ademas de que puede ser programada como un arduino, tambien puede ser programada como un AVR normal, por medio de avr-Gcc

En el siguiente programa se muestra un ejemplo de como hacer que encienda y apague un LED e intervalos de un segundo,

fuente:
http://forum.pjrc.com/threads/21825-Fuses-Teensyduino-sets-for-Teensy-2-0
#define F_CPU 16000000L

#if F_CPU == 16000000L
#define ADC_PRESCALER 0x07
#define CPU_PRESCALER 0x00
#elif F_CPU == 8000000L
#define ADC_PRESCALER 0x06
#define CPU_PRESCALER 0x01
#elif F_CPU == 4000000L
#define ADC_PRESCALER 0x05
#define CPU_PRESCALER 0x02
#elif F_CPU == 2000000L
#define ADC_PRESCALER 0x04
#define CPU_PRESCALER 0x03
#elif F_CPU == 1000000L
#define ADC_PRESCALER 0x03
#define CPU_PRESCALER 0x04
#else
#error "Teensyduino only supports 16, 8, 4, 2, 1 MHz.  Please edit boards.txt"
#endif
//#include 
//#include 
//#include 

void _init_Teensyduino_internal_(void);

int main(void)
{
 _init_Teensyduino_internal_();

    DDRB |= (1 << DDB0); 


    while(1){
            PORTB |= (1 << PB0);
            _delay_ms(1000);

           PORTB &= ~ (1 << PB0);
           _delay_ms(1000);


    }

    return 0;
   
}

void _init_Teensyduino_internal_(void)
{
        cli();
        CLKPR = 0x80;
        CLKPR = CPU_PRESCALER;
}