Например, так(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Flasher 29 ноября 2006 г. 02:40
В ответ на: Внешний кварц на 7.3728. Тикать надо с 1 миллисекундой. Надо что бы дергалось прерывание, в котором будет инкрементится 4 байтная переменная. Таймер может с частотой кварца тикать? А хотя лана, пошел ДШ читать, а то совсем тупой стану. Спасибо Вам, люди :) отправлено <font color=gray>507</font> 29 ноября 2006 г. 01:34

#include
// global variables

static volatile unsigned long int tick0 = 0;//каждую миллисекунду

//Обработчик прерывания по переполнению таймера 0.
//Обрабатывается каждые 1.00694мс(кварц 7.3728Мгц,
//прескалер CK/64, начальный отсчет с 140dec)

#pragma vector=TIMER0_OVF0_vect
__interrupt void TIMER0_OVF0_interrupt( void )
{
TCNT0 = 0x8C; // Таймер проиницилизирован(256-116=140=0x8C)
tick0++;
}

void main(void)
{
_CLI(); //Запрещаем сначала все прерывания


// Инициализация портов
PORTA = iniPORTA;
DDRA = iniDDRA;
PORTB = iniPORTB;
DDRB = iniDDRB;
PORTC = iniPORTC;
DDRC = iniDDRC;
PORTD = iniPORTD;
DDRD = iniDDRD;

//Отключаем питание от аналогового компаратора, чтобы не потреблял
ACSR|=(1<
TIFR = 0xFF; // Сброс всех флагов прерываний от таймеров

// Инициализация таймера 0 на 1,00694 мс
TCCR0 = 0x00; // Таймер остановлен
TCNT0 = 0x8C; // Таймер проинициализирован(256-116=140=0x8C)
TIMSK|=(1< TCCR0 = 0x03; //Запускаем таймер 0 с предделителем
// CK/64 =8,6805555(5)мкс

//.........
)//End main


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
URL изображения: 
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
если прибавить четыре к четырём будет:


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание