Добрый день!
Подскажите пожалуста как заставить таймер тикать 1 секунду и делать какое то действие после этого. Интересует формула расчета.
roboforum.ruТехнический форум по робототехнике. |
|
|
ISR(USART_RXC_vect) {
unsigned char symbol = UDR;
unsigned char buffer[4];
uint8_t i = 0;
if (symbol=='q') {buffer[i]=symbol; i++;}
else if (symbol == 'w') {buffer[i]=symbol; i++;}
else if (symbol == 'e') {buffer[i]=symbol; i++;}
else if (symbol == 'r') {buffer[i]=symbol; i++;}
else if (i==4) {ReadBuffer();}
}
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define CS00 0
#define CS02 2
#define TOIE0 0
#define TOV0 0
// Так как таймер0 тикает до значения 255, то >255 выставить нельзя
// Я выставляю значение 0xFA равное 32мс.
// При подсчете до 0xFA вызывается прерывание и загорается светодиод
ISR(TIM0_OVF_vect) {
TCNT0=0xFA;
PORTD=0xff;
}
void init_timer0() {
TCCR0|=(1<<CS02)|(1<<CS00);
TIMSK|=(1<<TOIE0);
TIFR|=(1<<TOV0);
SREG|=(1<<7);
TCNT0=0xFA;
}
int main (void) {
init_timer0();
DDRD=0xff;
PORTD=0x00;
sei();
while(1) {}
}
Вернуться в Новичкам или основы основ роботостроения.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11