Достаточно повысить ток через потенциометр. И да - максимальное сопротивление резистор или потенциометра в цепи АЦП - всего 10 кОм. Средств увеличения времени накопления или периода опроса УВХ в старых атмегах нет. В новых есть. Поэтому там и 100кОм сопротивления вообще не проблема.
Читал Евстифеева. Там как-то неоднозначно написано по этому вопросу. Похоже проблема с прерыванием ШИМа обусловлена именно тем, что регистр 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?
нужно создать еще одно прерывание - по переполнению таймера1. это прерывание срабатывает, когда счетчик находится в нуле. и в этом прерывании записывать значение ADCH в ICR1. тогда не будет подобных конфликтов. то есть, записывать регистр не в обработке АЦП, а в прерывании по переполнению.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
пока я отправлял свой пост, ты успел отправить дополнение к своему посту. как я понимаю, в режиме №9 "верхушку" задает регистр OCR1A, а для ШИМ тогда остается только один канал В. а по каналу А в этом режиме ШИМ невозможен. не надо в обработке АЦП ничего блокировать. просто в обработке АЦП регистр ADCH где-то сохраняешь. а потом в прерывании по переполнению сохраненное значение записываешь в ICR1.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Kalisnik, и по второму потенциометру делаешь точно также - значение АЦП сохраняешь, а в прерывании по переполнению оба сохраненных значения записываешь, соответственно, в регистры ICR1 и OCR1A.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
а тебе нужно записать новое значение в регистр (буфер).
OCR1A обновляется из буфера по нижнему пределу счетчика. Буфер обновляется непосредственно в момент записи. Зачем мне синхронизировать запись в буфер? Буфер - это же TEMP. Он начинает выполнять свою функцию только в нижнем пределе счетчика. Или я снова чего-то не понимаю?
ну да, но тогда откуда у тебя проблемы в работе ШИМ? ты сначала сделай, как я предлагаю. когда заработает нормально, тогда будешь экспериментировать с записью в буфер не в прерывании, а при обработке АЦП. но я не сторонник подобных экспериментов - лучше делать сразу надежно, чтобы не было сюрпризов, как это сейчас у тебя.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения