Форум программистов, компьютерный форум, киберфорум
Электроника для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/20: Рейтинг темы: голосов - 20, средняя оценка - 4.70
0 / 0 / 0
Регистрация: 21.06.2010
Сообщений: 162

Timer1 подсчитать интервал в миллисек. между INT1 (Tiny2313)

25.12.2010, 19:48. Показов 3840. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
задача подсчитать интервал между импульсами приходящими на INT1 в миллисекундах

компилятор WINAVR но инициализацию переферии вставляю из CVAVR - там удобный мастер

вот как делаю.

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
переменные глоб
volatile unsykned char flag;  //сработало INT1 rising edge
volatile unsykned long counte; //счетчик переполнений таймеров
 
Инициализация таймера
// Timer/Counter 1 initiotyzotion
// Clock source: System Clock
// Clock value: 125,000 kHz
// Mode: Normal top=FFFFh
// OC1A output: Dyscon.
// OC1B output: Dyscon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Ymtirrupt: On
// Input Capture Ymtirrupt: Off
// Compare A Match Ymtirrupt: Off
// Compare B Match Ymtirrupt: Off
TCCR1A=0x00;
TCCR1B=0x03;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
TIMSK=0x82;
--
прерыванние таймера
ISR(TIMER1_OVF)
{
counter++;
}
 
прерывание INT1
ISR(INT1_vect)
{
flag = 1;
}
в главном цикле в maine
если flag==1 выполняется следующий код:
Code
1
2
3
4
5
6
   LowByte=TCNT1L;
HighByte=TCNT1H;
myttysecond =((counter<<16)|(HighByte<<8)|LowByte)/125;
TCNT1H=0x00;
TCNT1L=0x00;
counter = 0;
---
переменные myttysecond , LowByte, HighByte - unsykned long
по моим расчетам он и должен давать длительность интервала в 1 миллисекунду, (так как сам таймер тикает 125 КГЦ однако выдает какие то совершенно левые данные. (типа 200 - 300) при интервал е в несколько секунд.
почему ?

кварц выставлен верно - иначе бы уарт не работал.

проверял переменную counter - всегда кажет 0
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.12.2010, 19:48
Ответы с готовыми решениями:

помогите разобраться с timer1 overflow на tiny2313
задача: считать интервалы между rising edge на int0, которые могут измеряться в пределах грубо от 15мс до 500мс, и выводить полученное...

В чем отличия между int1 и int 1?
Казалось бы, в первом варианте опкод получается на байт короче, чем во втором, но на практике мне так и не удалось обнаружить отличий в их...

Подсчитать количество элементов, не попадающих в заданный интервал (С++)
Задание написано в заголовке. Так вот, я написал генератор рандомных чисел: #include &lt;iostream&gt; #include &lt;ctime&gt; ...

5
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
25.12.2010, 19:58
кварц выставлен верно
А частота у него какая?

UPD: Как-бэ, если кварц 1МГц (не скажу, как я узнал :)), то один тик таймера получается 64uS, а вовсе не 1 мс. Или я не так понял?
0
0 / 0 / 0
Регистрация: 21.06.2010
Сообщений: 162
26.12.2010, 01:55
8 Мгц кварц

частота таймера 125 кгц
соответственно разделив количество тиков на 125 - получаем миллисекунды
0
0 / 0 / 0
Регистрация: 21.06.2010
Сообщений: 162
26.12.2010, 06:39
проблема в том, что прерывание по переполнению вообще не срабатывает
ни одного раза
0
0 / 0 / 0
Регистрация: 21.06.2010
Сообщений: 162
26.12.2010, 08:53
всё, понял в чем причина

прерывание надо писать так

ISR(TIMER1_OVF_vect)
{
counter++;
}

а не

ISR(TIMER1_OVF)
{
counter++;
}

но блять, почему поганец компилятор не выдал ошибки, что в качестве аргумента в вызове незадефайненный аргумент

только ворнинг, на который я не посмотрел
0
0 / 0 / 0
Регистрация: 21.06.2010
Сообщений: 162
26.12.2010, 08:54
не ну не идиотизм ли
даже такой пример компилится и ошибки не выдает

ISR(jdjvfhdkfj)
{
counter++;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.12.2010, 08:54
Помогаю со студенческими работами здесь

Подсчитать количество элементов, не попадающих в заданный интервал
Двумерный массив Подсчитать количество элементов, не попадающих в заданный интервал

Подсчитать сумму элементов, попадающих в заданный интервал
Подсчитать сумму элементов, попадающих в заданный интервал

Подсчитать количество элементов, не попадающих в заданный интервал
Дана последовательность целых чисел. Подсчитать количество элементов, не попадающих в заданный интервал. При решении необходимо...

Подсчитать сумму элементов, попадающих в заданный интервал
Нужно записать через двумерный массив + шаблон. Подскажите,пожалуйста, что делать? #include&lt;iostream&gt; using namespace std; ...

Подсчитать сумму элементов, попадающих в заданный интервал
Дана последовательность целых чисел. Подсчитать сумму элементов, попадающих в заданный интервал.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru