Ciao!
Sto provando da poco la programmazione tramite tramite Atmel Studio 6 e mi son voluto imbattere nella programmazione, per prova, dei registri del prescaler.
C'è tanta documentazione, datasheet incluso, che spiega come farlo. E l'ho fatto. E' uno stile simile al Freescale, dal quale provengo diciamo, ma comunque come tutti i micro anche senza bootloader.
Dopo aver realizzato che i fuses non li posso cambiare se non riscrivo il bootloader ho fatto una cosa: togglo il led della scheda con un for, se cambio il prescaler deve cambiare pure quello. E invece no. Come mai?
# define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
CLKPR=_BV(CLKPCE);
CLKPR=(CLKPR & (~_BV(CLKPS0) | ~_BV(CLKPS1) | ~_BV(CLKPS2) | _BV(CLKPS3)));
DDRB=0x20;
unsigned int i;
while(1)
{
for(i=0; i<65000; i++);
for(i=0; i<65000; i++);
for(i=0; i<65000; i++);
for(i=0; i<65000; i++);
//_delay_ms(1000); era per un prova per vedere che usasse davvero i 16Mhz, forse è compensato dal prescaler dnque son passato ai for
PINB=0x20;
}
}
Grazie a tutti anticipatamente!