А хоть примерная схема есть?
Динамическая индикация, плюс таймер времени плюс АЦП как?
[uquote="Alex_641",url="/forum/viewtopic.php?p=4133489#p4133489"]Как всё это женить на с++ ?? Хочу я сделать проект - замер ёмкости АКБ , то есть мне надо раз в секунду один (или нескольколько каналов опросить АЦП тока и напряжения), расчитать время , и вывести на динамическую индикацию 8-ми 7-ми сегментных индикаторов ... Как это сделать?[/uquote]
А хоть примерная схема есть?
А хоть примерная схема есть?
- Реклама
- Сообщения: 2314
- Зарегистрирован: Вт янв 26, 2021 22:33:21
Есть и схема, и печатные платы, и готовое устройство, только без подсчёта ёмкости (проблема считать время, и отображать динамическую индикацию, и считывать АЦП всё вместе). Вот схема .
Добавлено after 7 minutes 22 seconds:
Re: Динамическая индикация, плюс таймер времени плюс АЦП как?
Ну там ещё кнопка будет на один свободный пин, для переключения отображения режимов -"ток , напряжение" и "время , ёмкость".
Добавлено after 7 minutes 22 seconds:
Re: Динамическая индикация, плюс таймер времени плюс АЦП как?
Ну там ещё кнопка будет на один свободный пин, для переключения отображения режимов -"ток , напряжение" и "время , ёмкость".
- Вложения
-
- схема.png
- (33.08 КБ) 71 скачивание
Не спрашивай по ком звонит колокол, он звонит по тебе !
Понятно,я сделал свой но у меня только 4 сегмента,их мне хватает
На Timer0 индикация
На Timer1 счет секундных импульсов,измерение напряжения на нагрузочном резисторе, расчет тока и емкости
В основном цикле сравнение напряжения на аккумуляторе и когда оно будет 3,3 вольта нагрузка отключается
Ну там еще TP4056(вкл/выкл заряда) и т д
На Timer0 индикация
На Timer1 счет секундных импульсов,измерение напряжения на нагрузочном резисторе, расчет тока и емкости
В основном цикле сравнение напряжения на аккумуляторе и когда оно будет 3,3 вольта нагрузка отключается
Ну там еще TP4056(вкл/выкл заряда) и т д
- Сообщения: 2314
- Зарегистрирован: Вт янв 26, 2021 22:33:21
Не пойму как можно работать с прерываниями от переполнения двух ( и более ) таймеров ... Динамическая индикация ещё не закончилась, а тут хренакс пришло время "увеличивать время на десятую секунды" второй таймер переполнился причем временной , более важный.
Не спрашивай по ком звонит колокол, он звонит по тебе !
Я бы объяснил как сам понимаю но местные спецы все равно докопаются что я не прав,обосрут вдоль и поперек и уйдут,такая специфика месных сторожил-прийти,обосрать,ничего путного по теме не сказать и уйти
- Реклама
- Сообщения: 2314
- Зарегистрирован: Вт янв 26, 2021 22:33:21
А вот ещё далее , в прерывании которое считает время, нужно установить флаги нажатия на ( к примеру ) 3 кнопки , посчитать это время всех трёх кнопок, и установить флаг отжимания каждой чё бы расчитать время нажатия каждой из них, и в основном цикле уже зная время нажатия на каждую запустить соответствующие функции. А динамическая индикация ждёт !!
Не спрашивай по ком звонит колокол, он звонит по тебе !
Динамическая индикация не заканчивается,просто гасим разряд который горел,включаем/выключаем нужные сегменты следующего разряда,включаем след разряд и выходим из обработчика прерывания,нужный разряд будет гореть независимо от других таймеров (при условии что управление индикации больше нигде в программе не используется)
- Сообщения: 2314
- Зарегистрирован: Вт янв 26, 2021 22:33:21
АЦП сходит с ума от куевой хучи всяких прерываний и врёт как троцкий ...
Не спрашивай по ком звонит колокол, он звонит по тебе !
У меня чтение ацп сидит в обработчике прерывания таймера1 и работает как часы,если бы чтение ацп сидело в основной программе то да-начинает врать
[uquote="Alex_641",url="/forum/viewtopic.php?p=4137196#p4137196"]А вот ещё далее , в прерывании которое считает время, нужно установить флаги нажатия на ( к примеру ) 3 кнопки , посчитать это время всех трёх кнопок, и установить флаг отжимания каждой...[/uquote]
Не надо так делать. В прерывании просто увеличиваете глобальную переменную на 1, а в основном цикле реагируете на это изменение, уменьшая переменную на 1 пока она не станет равна нулю.
Не надо так делать. В прерывании просто увеличиваете глобальную переменную на 1, а в основном цикле реагируете на это изменение, уменьшая переменную на 1 пока она не станет равна нулю.
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
Чуть нижу есть тема АЦП вместо ... таймера
АЦП имеет собственное прерывание, регистр ADCW АЦП буферизированный,
это прерывание срабатывает когда готов результат преобразования,
и на этом же прерывании делаем динамическую индикацию.
Если вкратце: на частоте 16МГц прерывание АЦП 104мкс, сканируем 2 канала, за 0,2сек ложем 1024 отсчета на каждый канал,
пропускаем каждое 16 прерывание для динамической индикации, на 8 разрядов частота обновления получается примерно 67Гц.
Демонстрационный код нужен или сами здесь, на форуме, покопаетесь?
АЦП имеет собственное прерывание, регистр ADCW АЦП буферизированный,
это прерывание срабатывает когда готов результат преобразования,
и на этом же прерывании делаем динамическую индикацию.
Если вкратце: на частоте 16МГц прерывание АЦП 104мкс, сканируем 2 канала, за 0,2сек ложем 1024 отсчета на каждый канал,
пропускаем каждое 16 прерывание для динамической индикации, на 8 разрядов частота обновления получается примерно 67Гц.
Демонстрационный код нужен или сами здесь, на форуме, покопаетесь?
Что-то новое,прерывание ацп я еще не пробовал,но идея хорошая
Получилось! тактовая атмега8 8 МГц,предделитель ацп 128,прерывание наступает каждые 208 мксек (13 тактов )
Получилось! тактовая атмега8 8 МГц,предделитель ацп 128,прерывание наступает каждые 208 мксек (13 тактов )


