Например TDA7294

Форум РадиоКот • Просмотр темы - Atmega8, ШИМ - низкий уровень на выводе после остановки ШИМ.
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Чт фев 12, 2026 18:33:37

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


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



Начать новую тему Ответить на тему  [ Сообщений: 114 ]    , , 3, , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Сб сен 25, 2021 00:28:46 
Мудрый кот

Карма: 11
Рейтинг сообщений: 114
Зарегистрирован: Пт июн 01, 2018 07:28:45
Сообщений: 1759
Рейтинг сообщения: 0
Достаточно повысить ток через потенциометр. И да - максимальное сопротивление резистор или потенциометра в цепи АЦП - всего 10 кОм. Средств увеличения времени накопления или периода опроса УВХ в старых атмегах нет. В новых есть. Поэтому там и 100кОм сопротивления вообще не проблема.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Сб сен 25, 2021 14:11:29 
Опытный кот
Аватар пользователя

Карма: -14
Рейтинг сообщений: -98
Зарегистрирован: Ср дек 01, 2010 00:38:15
Сообщений: 882
Откуда: Харьков
Рейтинг сообщения: 0
для приличия надо бы еще хоть немного программно пофильтровать результаты АЦП

_________________
ohmycode!
primuss3.com


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Пн сен 27, 2021 19:09:36 
Мучитель микросхем

Зарегистрирован: Вс апр 18, 2021 15:43:55
Сообщений: 430
Рейтинг сообщения: 0
Интересно, регистр ICR1 имеет двойную буферизацию в режиме Т1 №8 (ШИМ c точной фазой и частотой)?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Пн сен 27, 2021 20:11:08 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2934
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18944
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
а в даташите что на это написано?

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Вт сен 28, 2021 09:57:12 
Мучитель микросхем

Зарегистрирован: Вс апр 18, 2021 15:43:55
Сообщений: 430
Рейтинг сообщения: 0
Читал Евстифеева. Там как-то неоднозначно написано по этому вопросу. :) Похоже проблема с прерыванием ШИМа обусловлена именно тем, что регистр ICR1 не имеет двойной буферизации. Подключил один порт МК к светодиодам и вывел на него данные ADCH, которые записываются в регистр ICR1. Оказалось, что при плавном вращении потенциометра возникает ситуация, когда данные регистра ADCH начинают скакать. Причем с достаточно большой частотой (светодиоды порта начинают быстро мигать). Вот тогда и начинаются прерывания сигнала ШИМ. Видимо, идет беспорядочная и быстрая запись в регистр ICR1. А поскольку ICR1 не имеет двойной буферизации, то запись в этот регистр происходит в случайный момент времени работы таймера Т1 и он начинает сбоить. Думаю, когда счетный регистр приближается к точке ICR1 и в этот момент регистр ICR1 перезаписывается на меньшее число, которое TCNT1 > ICR1, то счетчик начинает считать до самого упора (0xffff), а потом разворачивается и начинает считать обратно пока не достигнет точки ICR1. Соответственно, пока счетчик наматывает ненужные круги, в неинвертированном режиме выход OC1A будет в 0.
Можно было бы сделать программную защиту (например сделать массив и кидать туда данные ADCH, а потом выводить среднее арифметическое) или поменять потенциометр на кнопку. Но я решил разобраться как работает режим Т1 №9? Я предположил, что в этом режиме регистры ICR1 и OCR1A должны были поменяться местами. Таким образом решилась бы проблема с двойной буферизацией регистра задающего период сигнала. Но... что-то этот режим у меня не работает ))) Светодиод просто горит, ни какого ШИМа нет. В чем моя ошибка? :)

Добавлено after 17 minutes 33 seconds:
Re: Atmega8, ШИМ - низкий уровень на выводе после остановки ШИМ.
Можно, кстати, записывать регистр ICR1 по флагу TOV1 - по даташиту он меняется на нижнем пределе счетчика. Наверно, так и сделаю. Но все равно интересно как работает режим №9 счетчика T1?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Вт сен 28, 2021 10:01:09 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2934
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18944
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
нужно создать еще одно прерывание - по переполнению таймера1.
это прерывание срабатывает, когда счетчик находится в нуле. и в этом прерывании записывать значение ADCH в ICR1.
тогда не будет подобных конфликтов.
то есть, записывать регистр не в обработке АЦП, а в прерывании по переполнению.

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Вт сен 28, 2021 10:05:27 
Мучитель микросхем

Зарегистрирован: Вс апр 18, 2021 15:43:55
Сообщений: 430
Рейтинг сообщения: 0
Starichok51, да, уже понял )) Спасибо!

Добавлено after 1 minute 33 seconds:
Re: Atmega8, ШИМ - низкий уровень на выводе после остановки ШИМ.
Starichok51 писал(а):
нужно создать еще одно прерывание - по переполнению таймера1.

При этом в подпрограмме прерывания АЦП нужно блокировать общее разрешение прерываний в регистре SREG?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Вт сен 28, 2021 10:11:31 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2934
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18944
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 1
Медали: 1
Лучший человек Форума 2017 (1)
пока я отправлял свой пост, ты успел отправить дополнение к своему посту.
как я понимаю, в режиме №9 "верхушку" задает регистр OCR1A, а для ШИМ тогда остается только один канал В. а по каналу А в этом режиме ШИМ невозможен.
не надо в обработке АЦП ничего блокировать.
просто в обработке АЦП регистр ADCH где-то сохраняешь. а потом в прерывании по переполнению сохраненное значение записываешь в ICR1.

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Вт сен 28, 2021 10:15:13 
Мучитель микросхем

Зарегистрирован: Вс апр 18, 2021 15:43:55
Сообщений: 430
Рейтинг сообщения: 0
Starichok51, понял. Спасибо!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Вт сен 28, 2021 10:18:19 
Мудрый кот

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Вт сен 28, 2021 10:46:48 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2934
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18944
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
Kalisnik, и по второму потенциометру делаешь точно также - значение АЦП сохраняешь, а в прерывании по переполнению оба сохраненных значения записываешь, соответственно, в регистры ICR1 и OCR1A.

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Вт сен 28, 2021 11:41:58 
Мучитель микросхем

Зарегистрирован: Вс апр 18, 2021 15:43:55
Сообщений: 430
Рейтинг сообщения: 0
Starichok51, из каких соображений запись регистра OCR1A лучше перенести в подпрограмму прерывания по переполнению таймера?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Вт сен 28, 2021 11:52:21 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2934
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18944
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
для синхронности изменения обоих регистров.

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Вт сен 28, 2021 12:00:11 
Мучитель микросхем

Зарегистрирован: Вс апр 18, 2021 15:43:55
Сообщений: 430
Рейтинг сообщения: 0
OCR1A вроде автоматом записывается по нижнему пределу или я чего-то не понял?

Добавлено after 2 minutes 47 seconds:
Re: Atmega8, ШИМ - низкий уровень на выводе после остановки ШИМ.
Это и является сутью двойной буферизации.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Вт сен 28, 2021 13:50:46 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2934
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18944
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
это не записывается, а обновляется из буфера. Update - это обновление.
а тебе нужно записать новое значение в регистр (буфер).

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Вт сен 28, 2021 14:02:01 
Мучитель микросхем

Зарегистрирован: Вс апр 18, 2021 15:43:55
Сообщений: 430
Рейтинг сообщения: 0
Starichok51 писал(а):
а тебе нужно записать новое значение в регистр (буфер).

OCR1A обновляется из буфера по нижнему пределу счетчика. Буфер обновляется непосредственно в момент записи. Зачем мне синхронизировать запись в буфер? Буфер - это же TEMP. Он начинает выполнять свою функцию только в нижнем пределе счетчика. Или я снова чего-то не понимаю?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Вт сен 28, 2021 14:42:38 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2934
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18944
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
ну да, но тогда откуда у тебя проблемы в работе ШИМ?
ты сначала сделай, как я предлагаю. когда заработает нормально, тогда будешь экспериментировать с записью в буфер не в прерывании, а при обработке АЦП.
но я не сторонник подобных экспериментов - лучше делать сразу надежно, чтобы не было сюрпризов, как это сейчас у тебя.

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Вт сен 28, 2021 20:28:32 
Опытный кот
Аватар пользователя

Карма: -14
Рейтинг сообщений: -98
Зарегистрирован: Ср дек 01, 2010 00:38:15
Сообщений: 882
Откуда: Харьков
Рейтинг сообщения: 0
дубовость тоже аргумент

_________________
ohmycode!
primuss3.com


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Вт сен 28, 2021 22:26:34 
Мучитель микросхем

Зарегистрирован: Вс апр 18, 2021 15:43:55
Сообщений: 430
Рейтинг сообщения: 0
...как и рейтинг сообщений.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8, ШИМ - низкий уровень на выводе после остановки
СообщениеДобавлено: Ср сен 29, 2021 03:41:08 
Опытный кот
Аватар пользователя

Карма: -14
Рейтинг сообщений: -98
Зарегистрирован: Ср дек 01, 2010 00:38:15
Сообщений: 882
Откуда: Харьков
Рейтинг сообщения: 0
умник, давай свой код

_________________
ohmycode!
primuss3.com


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

Часовой пояс: 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