[an error occurred while processing this directive]
|
FILE: C:\Document\AVR\Projects\tmp.c // коментарии стр. - ссылаются на .pdf на ATmega128
//
#include <iom128.h>
#include <inavr.h>
//
// --------------------------------------------- Глобальная переменная - счётчик
volatile unsigned int TimClock;
//
// *****************************************************************************
//
// Объявление функции - обработчика прерывания от Таймера1
//
#pragma vector=TIMER1_OVF_vect // cм. iom128.h, стр. 54
__interrupt void timer1 (void) {
++TimClock;
}
//
// *****************************************************************************
//
// ----------------------------------------------------- Инициализация Таймера 1
void Tim1Init (void) {
TCCR1B = 1; // тактирование от генератора, без делителя (стр. 130)
TIMSK = 1<<TOIE1; // разрешить прерывание по переполнению от таймера1 (стр. 134)
}
// --------------------------------------------- Аналог функции clock()
unsigned long Clock (void) {
unsigned long tmp;
// Запрещение прерываний
__disable_interrupt();
// сложение текущего состояния таймера-счётчика(TCNT1) с программным счётчиком
tmp = ((unsigned long)TimClock << 16) | TCNT1;
// Разрешение прерываний
__enable_interrupt();
return tmp;
}
//
void main (void) {
//
Tim1Init(); // Инициализация таймера
__enable_interrupt(); // Разрешение прерываний
//
while (1) {
; // bla-bla-bla...
}
}Created with The Source Studio - EVALUATION version
Составить ответ ||| Конференция ||| Архив
Ответы
E-mail: info@telesys.ru