реклама на сайте
подробности

 
 
> ТАЙМЕР1, Дайте пример с инициализацией ТАЙМЕРА1.
dvs85
сообщение Apr 21 2008, 00:19
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 86
Регистрация: 24-03-08
Из: Владивосток
Пользователь №: 36 170



Здравствуйте!

Я только недавно начал осваивать МК ATMEL. Не мог бы кто нибудь дать пример программмы по инициализации таймера1 для подсчета временных интервалов и вывода этого подсчитаного времени на ЖКИ? Уже неделю бьюсь с ним и ничего не получается. wacko.gif
Пишу на СИ. Компилятор AVR Studio 4. Контроллер Мега1 .

Зараннее благодарю..
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dvs85
сообщение Apr 24 2008, 02:57
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 86
Регистрация: 24-03-08
Из: Владивосток
Пользователь №: 36 170



Код
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
//========================================
//Инициализация таймера
void Timer1_Init(void)
{
  TIMSK |= (1 << TOIE1)|(1<<TICIE1);            //разрешение переполнения по захвату и по переполнению
  TCCR1B=(1<< ICES1)|(1 << CS21);
  TCNT1=60535;                        // Начинать считать с этого значения
}
//==========================================
//Окончание работы таймера

void Timer1_Stop(void)
{
  TCCR1B = 0x00;                                //Останов. работы
}
//=========================================
//Прерывание по захвату

ISR(TIMER1_CAPT_vect)                        
{
    unsigned int timer;
    timer = ICR1;                        
}
//=========================================
//Программа расчета времени
void Timer1_Inc(void)
{
    unsigned int timer;
    timer ++;
}
//========================================
//Прерывание по переполнению таймера

ISR(TIMER1_OVF_vect)                  //Если возникает прерывание по переполнению таймера,
{
    Timer1_Inc();                        //то перейти к функции Timer1_Inc()
}

//========================================
int main (void)
{
    Timer1_Init();
    
}


Это правильно сделано?
И я не понял как по сохраненым значением счетчика таймера и конечным значением счетчика таймера и счетчиком числа переполнений посчитать временной интервал.


Цитата
можно спад твоего сигнала завести и на ICP.


А как это сделать? Как он отличит, что это спад?

Цитата
Я бы повесил этот сигнал на внешнее прерывание по обоим фронтам. Его обработчик пусть быстренько переписывает в регистр значение таймера, потом определяет задний или передний фронт. Если задний, то вычисляет длительность. Таймер бы я взял самый приоритетный, разрядность бы расширил софтом: в прерывании таймера по переполнению пусть наращивается регистр или хоть два, получится 24-разрядный таймер, 2 секунды на 16 мегагерцах.


Как таймер узнает, что поступает задний фронт?

Сообщение отредактировал dvs85 - Apr 24 2008, 03:03
Go to the top of the page
 
+Quote Post
Maik-vs
сообщение Apr 24 2008, 06:17
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101



Цитата(dvs85 @ Apr 24 2008, 06:57) *
[А как это сделать? Как он отличит, что это спад?
Как таймер узнает, что поступает задний фронт?


Всё это описано в документации. К сожалению, нужно всё это внимательно прочесть и понять. Если трудности с английским, то выучи язык! то можно поискать перевод на gaw.ru. Я когда разбирался, сделал вот это в екселе (Макросы не выключай!) Там меняешь битики в регистрах, оно показывает.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- dvs85   ТАЙМЕР1   Apr 21 2008, 00:19
- - IDE   вот примерно так: void timer1_init(void) { TI...   Apr 21 2008, 00:31
|- - dvs85   Спасибо. МК - Мега16. Не заметил как стер А в как...   Apr 21 2008, 00:57
|- - IDE   1. В оба 2. Да именно так   Apr 21 2008, 01:01
|- - domowoj   Цитата(dvs85 @ Apr 21 2008, 07:57) ICR1H=...   Apr 21 2008, 01:49
- - dvs85   То есть получается приходит сигнал на вход захвата...   Apr 21 2008, 01:07
|- - Qwertty   Цитата(dvs85 @ Apr 21 2008, 05:07) То ест...   Apr 21 2008, 01:31
- - dvs85   Что то я совсем запутался.. Как же мне сделать ...   Apr 21 2008, 01:48
- - dvs85   ЦитатаЧитайте Евстифеева, там все прописано Спаси...   Apr 21 2008, 02:10
|- - domowoj   Цитата(dvs85 @ Apr 21 2008, 09:10) Спасиб...   Apr 21 2008, 13:31
- - Палыч   Цитата(dvs85 @ Apr 21 2008, 03:19) ... пр...   Apr 21 2008, 06:29
- - dvs85   ЦитатаПосле обсуждения в соседней конференции (htt...   Apr 21 2008, 22:06
|- - Палыч   Цитата(dvs85 @ Apr 22 2008, 01:06) Необхо...   Apr 22 2008, 05:50
|- - Maik-vs   Цитата(dvs85 @ Apr 22 2008, 02:06) Вопрос...   Apr 22 2008, 09:02
|- - domowoj   Цитата(Maik-vs @ Apr 22 2008, 16:02)...   Apr 24 2008, 01:49
- - dvs85   ЦитатаC такой точностью без захвата счетчика тайме...   Apr 23 2008, 22:49
- - dvs85   ЦитатаЕсли трудности с английским, то выучи язык...   Apr 24 2008, 06:31
- - dvs85   Я уже наверно надоел, но увы.. Прочитал я все врод...   Apr 24 2008, 23:34
- - domowoj   В TCCR1B есть бит ICЕSn. А зачем TCNT1=60535; ...   Apr 25 2008, 00:17
- - dvs85   ЦитатаВ TCCR1B есть бит ICTSn. Я почему то не н...   Apr 25 2008, 00:37
- - domowoj   ICES1=0 - по заднему фр. ICES1=1 ло переднему одно...   Apr 25 2008, 01:08
- - dvs85   ЦитатаИ каковы параметры интервала и с какой точно...   Apr 25 2008, 01:23
- - domowoj   Фиксировать значение таймера можно по тому же сиг...   Apr 25 2008, 01:51
- - dvs85   Цитата(domowoj @ Apr 25 2008, 04:51) Фикс...   Apr 27 2008, 23:03


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 19:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01407 секунд с 7
ELECTRONIX ©2004-2016