Кто пробовал Fast PWM в ATtiny2313? Вот пример кода из ICC. T/C1 в Fast PWM mode.
//ICC-AVR application builder : 15.04.2007 0:58:29 // Target : T2313 // Crystal: 4.0000Mhz
#include <iot2313v.h> #include <macros.h>
void port_init(void) { PORTA = 0x00; DDRA = 0x00; PORTB = 0xFF; DDRB = 0x1C; PORTD = 0xFF; DDRD = 0x20; }
//TIMER1 initialize - prescale:1
void timer1_init(void) { TCCR1A = 0x82; TCCR1B = 0x19; TCNT1 = 0x0758; OCR1AH = 0xFF; //set compare value OCR1AL = 0xB9; OCR1BH = 0xFF; //set compare value OCR1BL = 0xB9; ICR1H = 0x57; ICR1L = 0x61; }
//call this routine to initialize all peripherals void init_devices(void) { //stop errant interrupts until set up CLI(); //disable all interrupts port_init(); timer1_init();
MCUCR = 0x00; GIMSK = 0x00; TIMSK = 0x00; SEI(); //re-enable interrupts //all peripherals are now initialized }
main()
{ init_devices();
while(1) { ; } } Симулирую в AVR Studio. В старших байтах после прохода остается другое значение. Хотя записывал сначала старший, потом младший байты. А самое главное - таймер считает по модулю 1FF в dual slope mode, хотя верхнее значение лежит в ICR, а FastPWM предполагает single slope.
В чем может быть дело? Заранее премного благодарен.
|