Например TDA7294

Форум РадиоКот • Просмотр темы - Таймеры/счётчики в AVR
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 07:45:25

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 1322 ]     ... , , , 59, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Вс янв 17, 2021 15:46:15 
Встал на лапы
Аватар пользователя

Карма: 1
Рейтинг сообщений: -3
Зарегистрирован: Пн фев 06, 2017 15:20:04
Сообщений: 114
Рейтинг сообщения: 0
sergs777, вангую, что в протеусе, в свойствах компонента МК просто не поменяли частоту на нужную.

Частоту ставлю в цифрах. Всё остальное ставлю в дефолт. Предполагаю, что будут читаться установки из сгенерированного в codevision файла. Перепробовал все комбинации с первым нулём в CKSEL. При симуляции зависимость периода от TCNT0 вообще непонятна.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Вс янв 17, 2021 15:53:44 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Цитата:
Предполагаю, что будут читаться установки из сгенерированного в codevision файла.

Предположение неверное. Еще раз, правый клик в протеусе на AVRку и выставьте там частоты и настройки согласно фьюзам вашего проекта. Это нужно сделать ручками, из CV оно читает только файл прошивки, но не фьюзы. А по-умолчанию там частота 1 МГц стоит.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Вс янв 24, 2021 16:36:20 
Встал на лапы
Аватар пользователя

Карма: 1
Рейтинг сообщений: -3
Зарегистрирован: Пн фев 06, 2017 15:20:04
Сообщений: 114
Рейтинг сообщения: 0
Изображение
Это самый простой китайский ардуино. В нем сейчас зашита немного изменееная классическая программа имгания диода. Для проверки функционирования прошивальщика. Нормально функционирует. Сейчас хочу зашить рабочую прошивку. С одного вывода нужен импульсный сигнал в десятки килогерц. Алгоритм прокатываю на codevision 3.12. При отладек в протеусе зашел в полный тупик. CKSEL работают только для RC установки частоты. т. е. максимально 8 МГц. 16 даже с внешнего источника не получить. Периоды при отладке не соответствуют полученныым на коде в кодевизионе. Лепить отладчик, что бы с компа через com в TCNT значения менять для отладке и чем нибудь частоту мерить очень долго. Что делать, не зняю. Помогите пожалуйста. :shock:


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Вс янв 24, 2021 17:22:28 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
sergs777, вообще-то про протеус отдельная тема есть. Просто в свойствах компонента AVR есть поле для частоты МК, просто впишите туда 16000000 и будет он симулироваться на 16 МГц, кристалл даже можно не ставить на схеме, оно не симулируется всё-равно.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: avr-gcc, timer0, millis() - некоторое непонимание
СообщениеДобавлено: Сб фев 06, 2021 13:19:41 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 10
Зарегистрирован: Ср дек 08, 2010 19:03:17
Сообщений: 513
Рейтинг сообщения: 0
добрый день

есть некоторое непонимание :о)

шаблон для avr-gcc, timer1, function millis() переделываю на timer0

СпойлерCPU = atmega328p
F_CPU = 16000000UL

time_millis.h
Код:
#include <avr/interrupt.h>
#include <util/delay.h>
#include <util/atomic.h>

#define CTC_MATCH_OVERFLOW 254

extern volatile uint32_t timer1_millis;

ISR                  (TIMER0_OVF_vect);
uint32_t millis      (void);
void     millis_init (void);


time_millis.c
Код:
#include <avr/interrupt.h>
#include <util/delay.h>
#include <util/atomic.h>

#include "time_millis.h"

volatile uint32_t timer1_millis;

////////////////////////////////////////////////////////////////////////////////
ISR (TIMER0_COMPA_vect)
////////////////////////////////////////////////////////////////////////////////
{
timer1_millis++;
}
////////////////////////////////////////////////////////////////////////////////
uint32_t millis(void)
////////////////////////////////////////////////////////////////////////////////
{
uint32_t millis_return;

ATOMIC_BLOCK(ATOMIC_FORCEON)
  {
  millis_return = timer1_millis;
  }

return millis_return;
}
////////////////////////////////////////////////////////////////////////////////
void millis_init(void)
////////////////////////////////////////////////////////////////////////////////
{
TCCR0A |= (1 << WGM01);        // режим CTC
TCCR0B |= (1<<CS00)|(1<<CS01); // Тактировать с делителем 64
OCR0A   = (CTC_MATCH_OVERFLOW);
TIMSK0 |= (1<<OCIE0A);         // Разрешить прерывание по совпадению
}


ключевое слово CTC_MATCH_OVERFLOW
в "инете" - его "рекомендуют" выставлять в 125

проверил на тесте, бежит в 2 быстрее... "подтюнил" вручную, получилось 254

решил уточнить у калькулятора:
Код:
калькулятор KAVRCalc
16MHz / 64 / 1uSec -->
- overflow: = 1024.000 uSec
- CTC       = 4.0000   uSec
- Error     = -75.000%


Изображение

исходные
Код:
atmega328p / arduino-nano
16MHz
timer0 / 1 uSec


p.s. видимо, так будет чуток красившее :)) ... бессонные ночи, в погоне за мышами ... :kill:
Изображение

_________________
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Сб фев 06, 2021 19:06:22 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4219
Откуда: Ижевск
Рейтинг сообщения: 0
Проще. OCR0=F_CPU/64/1000-1


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Вс фев 07, 2021 06:57:10 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 10
Зарегистрирован: Ср дек 08, 2010 19:03:17
Сообщений: 513
Рейтинг сообщения: 0
спасибо :beer:

_________________
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Пн фев 08, 2021 19:21:27 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 10
Зарегистрирован: Ср дек 08, 2010 19:03:17
Сообщений: 513
Рейтинг сообщения: 0
Проще...

я наоборот немного усложнил:
- добавил "вашей" математики
- можно выбрать любой из таймеров (timer 0/1/2)
- 2 варианта частоты системной шины: 16 и 1 МГц

ТЫЦ

_________________
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Пн мар 29, 2021 17:25:23 
Родился

Зарегистрирован: Пн мар 01, 2021 09:01:13
Сообщений: 15
Рейтинг сообщения: 0
Привет всем, такой вопрос.
На atmega328 настройка таймера такова
TCCR0A = 0<<COM0A1|0<<COM0A0
TCCR0B = 1<<CS02
OCR0A = 109
TIMSK0 = 1<<OCIE0A
TCCR0A = 1<<WGM01
Как понимаю таймер будет отсчитывать 0,00352 секунды. Если за этот переуд у меня произайдет событие, мне нужно сбросить таймер.
Остановить счет, записать 0 в регистр TCNT0 и запустить счет. Получится так или нужно по другому?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Пн мар 29, 2021 17:53:51 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4219
Откуда: Ижевск
Рейтинг сообщения: 0
Нет. Вы установили таймер в режим CTC (автосброс при совпадении с OCR0A) и установку флага требования прерывания. Т.е. каждые 0,125[мкс]*256*110=3520мкс таймер будет аппаратно сбрасываться и продолжать счет до следующего совпадения.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Пн мар 29, 2021 18:59:36 
Родился

Зарегистрирован: Пн мар 01, 2021 09:01:13
Сообщений: 15
Рейтинг сообщения: 0
А если другая ситуация. В пределах 0.0035 сек. должно произойти событие А которое сбросит таймер. Если время истекло, срабатывает прерывание на событие В. Как в таком случае сбросить таймер? И возможно такое сделать в нормальном режиме (WGM0[2:0] = 0)?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Вт мар 30, 2021 05:28:08 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4219
Откуда: Ижевск
Рейтинг сообщения: 0
Почему все спрашиваете как сбросить таймер. Зачем тогда его вообще запускать? Если бы был вопрос как определить время между событиями А и В с помощью работающего в нормальном режиме таймера Т0
пришло событие А-запомнили состояние TCNT0_A
пришло событие B-запомнили состояние Nb+TCNT0_B. Nb-число переполнений
Время между событиями T(B-A)=32[µs]*{(Nb*256+TCNT0_B)-TCNT0_A}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Вт мар 30, 2021 07:15:43 
Родился

Зарегистрирован: Пн мар 01, 2021 09:01:13
Сообщений: 15
Рейтинг сообщения: 0
Потому что, событие В происходит когда не успело произойти событие А.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Вт мар 30, 2021 11:25:26 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
trojninalex, ну тогда вам больше подходит режим CTC, нежели нормальный. В CTC разница лишь в том, что значение, на котором переполняется таймер (TOP) вы контроллируете. Сбрасывать таймер не нужно будет, он сам сбросится когда произойдет прерывание по переполнению, вам там надо будет обработать событие B. А если произойдет событие А, можно просто сбросить таймер, останавливать его необязательно для этого, но есть нюанс в том, что если он был близок к переполнению, прерывание всё-равно может произойти пока вы будете его сбрасывать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Вт мар 30, 2021 13:05:32 
Мудрый кот

Карма: 11
Рейтинг сообщений: 114
Зарегистрирован: Пт июн 01, 2018 07:28:45
Сообщений: 1759
Рейтинг сообщения: 0
Цитата:
но есть нюанс в том, что если он был близок к переполнению, прерывание всё-равно может произойти пока вы будете его сбрасывать.

Я на всякий случай сбрасывал TOV флаг.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Вт мар 30, 2021 17:03:44 
Родился

Зарегистрирован: Пн мар 01, 2021 09:01:13
Сообщений: 15
Рейтинг сообщения: 0
Хорошо, спасибо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Сб июл 31, 2021 01:06:57 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 254
Зарегистрирован: Вт ноя 03, 2009 21:02:38
Сообщений: 2031
Откуда: Москва
Рейтинг сообщения: 0
Тема большая, возможно это уже обсуждалось.
Нужно сформировать ШИМ на 16-битном таймере (Atmega1280, timer4, OC4A).
Пробую использовать режим 15:
загоняю "1" в регистры WGM43,WGM42,WGM41,WGM40, настраиваю делитель /1
код:
tcnt4=0
tccr4a=&B11000011
tccr4b=&B00011001
tccr4c=0
ocr4a=333
Нету ШИМ. Ноль висит на выходе. Но вот если изменить WGM43 на ноль (tccr4b=&B00001001, режим 7) ШИМ появляется, работает в 10-битном режиме. В принципе, это хорошо и задача решена, но почему не работает fastpwm 15 mode? Земля в иллюминаторе осциллографа...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Сб июл 31, 2021 06:45:17 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4219
Откуда: Ижевск
Рейтинг сообщения: 0
Думаю, так и должно быть. Точки SET и CLEAR совпадают. Можно попробовать режим 14, загрузив в ICR4 значение периода, а в OCR4A значение длительности. Если оставить режим 15, придется в OCR4A загружать значение периода, а длительность задавать в OCR4B(C)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Сб июл 31, 2021 10:29:38 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 254
Зарегистрирован: Вт ноя 03, 2009 21:02:38
Сообщений: 2031
Откуда: Москва
Рейтинг сообщения: 0
Спасибо за подсказку. Всё действительно так.
код:
icr4=&HFFff
tcnt4=0
tccr4a=&B11000010
tccr4b=&B00011001
tccr4c=0
ocr4a=32767

На выходе меандр. Регистром ICRx задаётся перезапуск счета (частота), а регистром OCRx скважность.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Таймеры/счётчики в AVR
СообщениеДобавлено: Сб сен 11, 2021 14:39:25 
Мучитель микросхем

Зарегистрирован: Вс апр 18, 2021 15:43:55
Сообщений: 422
Рейтинг сообщения: 0
Atmega8. Необходимо реализовать сигнал в виде прямоугольных импульсов с возможностью произвольно регулировать частоту и скважность посредством двух потенциометров. Один потенциометр регулирует частоту, другой, соответственно, скважность. ШИМ отбросил сразу, поскольку частоты ШИМа жестко фиксированы предделителем и плавной регулировки частоты не получится. Есть идея реализовать такое на двух таймерах в режиме СТС. Один таймер будет отвечать за частоту, другой за скважность. Как думаете, это хорошая идея?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 1322 ]     ... , , , 59, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y