ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
480432
A-Engineer (16.01.2014 11:59 - 16:12, просмотров: 8726)
Мега8 в прерывании по переполнению таймера, задаю новое значение таймера, но не достигаю желаемого результата.  Давеча начал знакомство с С++. Задумка такова: Таймер тактируется от Fcpu= 8 МГц. В прерывании по переполнению я задаю значение таймера = 155, ожидая следующего переполнения ч/з 100 циклов.... Но следующее переполнение происходит значительно позже..((
void init_io() {
	 // set output
	DDRB = 0b00111111;
	DDRC = 0xFF;
	DDRD = 0b10011111;
	// pull-up resistors
	PORTB |= 0b11111111;
	PORTC |= 0b00000101;
	PORTD |= 0b11111111;
	// timer interrupts
	TCCR0 |= (1 << CS00);				// Fcpu/1
	TCCR2 |= 0b00000001;
	TIMSK = (1<<OCIE2) | (1<<TOIE0);
}

ISR (TIMER0_OVF_vect){
	Motor_PORT^= (1 << IR_LED_PIN);
	TCNT0=155;
}

ISR(TIMER2_COMP_vect){
}

static void SIRC(){
	Status_IR=1;
	TCNT2=0;
	TCNT0=0;
	irSet();
}

int main(void){
	init_io();
	LcdInit();
	_delay_ms(500);
	sei();
	
	SIRC();
	PORTD^= (1 << PD0);	
    while(1)    {
		        LcdClear();
		        LcdGotoXYFont(0,3);
		        LcdFStr(FONT_1X,(unsigned char*)PSTR("Hello World :)"));
		        LcdUpdate();
			_delay_ms(300);
				    }
}