У ATtiny2313 есть регистр CLKPR (Clock Prescale Register). Изменяя его биты можно менять значение предделителя. Еще есть специальный Fuse Bit CKDIV8. Если он не запрограммирован, то предделитель устанавливается в 1.
Программное изменение значения предделителя:
/* **********************************
ATtiny2313
********************************** */
#include <avr/io.h>
#include <avr/interrupt.h>
int main(void)
{
// Input/Output Ports initialization
// Port A initialization
DDRA = 0b00000000;
PORTA = 0b00000000;
// Port B initialization
DDRB = 0b00000000;
PORTB = 0b00000000;
// Port D initialization
DDRD = 0b00000000;
PORTD = 0b00000000;
cli();
// Bits: CLKPCE - - - CLKPS3 CLKPS2 CLKPS1 CLKPS0
CLKPR = 0b10000000;
// Bits: CLKPCE - - - CLKPS3 CLKPS2 CLKPS1 CLKPS0
CLKPR = 0b00000000;
sei();
while (1)
{
}
return 0;
}
Будет работать или нет не знаю (Отредактировано автором: 23 Ноября, 2010 - 05:33:18) |