Обсуждаем контроллеры компании Atmel.
Ответить

Re: Таймеры/счётчики в AVR

Пн янв 06, 2020 09:35:16

да, два таймера имеют один общий предделитель.
но никто не мешает брать для каждого таймера свои (разные) коэффициенты деления.

Re: Таймеры/счётчики в AVR

Пн янв 06, 2020 09:56:17

Прошу прощенья. Речь пока идет об одном конкретном МК - грызу Attiny85. Конечно каждый МК имеет свои особенности.
У этого камня таймеры имеют свои предделители, причем крепко разные.
Вложения
ATtiny85_T0.PNG
(33.73 KiB) Скачиваний: 62
ATtiny85_T1.PNG
(36.26 KiB) Скачиваний: 57

Re: Таймеры/счётчики в AVR

Пт янв 10, 2020 17:36:46

Это как раз я и выяснил! Да вот только компарировать Т1 никак не заставлю. Чудной какой то Т1. Использовал среду разработки CodeVisionAVR. Там галочек наставил каких надо - и всё показало в коде. Хотя я не любю генераторщиков кода - много лишнего, однако весьма полезны для начинающих. (...блокнот и ANT :))?! ). В своем проекте мне достаточно двух таймеров. Один для получения данных. Второй для динамической индикации. Для получения данных оказывается достаточно использовать сторожевой таймер - на нем пока я и остановился. Хотя с собаками я как то не очень. Но тут надо отметить - подружились сразу. :))
И обязательно в main.cpp
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK = (1<<OCIE1A) | (1<<OCIE1B) | (1<<OCIE0A) | (1<<OCIE0B) | (0<<TOIE1) | (0<<TOIE0);
----
Что я и думаю - а не много ли здесь лишнего. CodeVisionAVR нагенерировал всякого, оно вроде бы и работает - разбирайся потом надо-не надо это всё. Это как препод у нас, написал - объясни. Не смог - иди учи, не сдал. :))
Последний раз редактировалось Эйлер Леонард Сб янв 11, 2020 09:38:30, всего редактировалось 1 раз.

Re: Таймеры/счётчики в AVR

Сб янв 11, 2020 08:13:50

что-то я сомневаюсь, что тебе всего для двух дел нужно разрешать 6 (шесть) прерываний...

Re: Таймеры/счётчики в AVR

Сб янв 18, 2020 10:23:51

>>>использовать сторожевой таймер

Не очень то хорошая идея.
Ватчдог по идее должен перезагружать устройство, т.к. специально тактируется от других источников, в отличие от срандартных таймеров.

Re: Таймеры/счётчики в AVR

Вс янв 19, 2020 08:27:06

Действительно. Watchdog Timer - тактируется от своего собственного источника. И задача у него несколько иная. Это аппаратно-реализованная схема контроля над зависанием системы. Но ничего не стоит и не мешает использовать его (в моем случае) просто как счетчик, установив биты в WDTCR соответствующим образом. Тем более что по условиям своей задачи мне необходимо получать с внешнего прерывания некое усредненное значение за определенный период времени. Среднее арифметическое по 4-5 значениям. В этом случае WDT установлен с прескалером на 0.25 сек. Взяв четыре значения, которые могут быть разными, я их складываю и получаю среднее за 1 сек. (бензин в баке плещется)
Код:
ISR(WDT_vect){// j = 0,1,2,3
j=(j>2)?(j=0):(j+1);
average = average+impulses;
impulses=0;
if(j==3){
num = SplitNumber(average);
SHIFTREG_OutputValue( &reg, num.g, 5 );
average=0;
}
};
Полученое числовое значение за 1 сек. расшплинтовываю на разряды и отправляю на индикатор. Хотя всё это можно реализовать на Timer0/Timer1 (Проверял в протеусе - фурыкает :)) )

Re: Таймеры/счётчики в AVR

Вс янв 19, 2020 09:44:59

у"собаки" генератор не калиброванный.

Re: Таймеры/счётчики в AVR

Вс янв 19, 2020 14:16:40

Время устанавливается в секундах, через которое он(таймер) вздрагивает.
Watchdog_Timer_Attiny85.png
Watchdog_Timer_Attiny85
(77.24 KiB) Скачиваний: 43

Re: Таймеры/счётчики в AVR

Вс янв 19, 2020 22:35:33

У тини85 два таймера. На хера вам сторожевой? Озвучьте тз и соображения, по которым вы используете сторожевой таймер для временных интервалов.

Re: Таймеры/счётчики в AVR

Пн янв 20, 2020 20:18:15

Забегая наперед, скажу - для тарировки/калибровки при подключении внешнего генератора. Задал напр. 0,25/0,5/1 сек. В T0,T1 там тики по формулам считать надо - а тут всё готово. Хотя это и не сложно - формулы простые. Мне необходимо получить сначала зависимость частоты от количества бензина в баке. Заливаеш в бак по пол литра или 0,8 - записал на листочек частоту. И так до полного бака. Эту таблицу и запишу потом в коде в какой нибудь двухмерный массив, структуру. Фрагмент кода С++
Линейную интерполяцию реализовал по промежуточным значениям. (Функция добавлена к структуре). "Уплотнение таблиц" - для точности. Значения пока произвольные. Отдельный блок кода по тарировке с записью в EEPROM пока не планирую т.к. ещё не изучил это дело. Ув. Demiurg, - на счет использования сторожевого таймера, пусть будет в порядке эксперимента. Как говорил один старый фортранщик - программист должен быть извращенцем и экспериментатором. :)))
----
P.S. :)
Последний раз редактировалось Эйлер Леонард Вт янв 21, 2020 15:43:05, всего редактировалось 1 раз.

Re: Таймеры/счётчики в AVR

Пн янв 20, 2020 21:32:25

Ага, разбирать двигатель через выхлопную трубу и секасом заниматься в гамаке и стоя...
Ответить