Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 15.08.2012, 11:12  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: ATMega8515, заШИМить все порты вывода

Сообщение от gary2007 Посмотреть сообщение
Нет, я только обнуляю предделитель таймера Т0 для более точных замеров фронтов.
Для более точных замеров и меньшей нагрузки на проц используйте прерывания. Ничего обнулять не надо, если конечно таймер настроен правильно и успевает натикать хотя бы до 10. Или вообще используйте режим захвата
Реклама:
niXto вне форума  
Непрочитано 15.08.2012, 11:35  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,941 раз(а) в 2,370 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: ATMega8515, заШИМить все порты вывода

gary2007,
сделайте все на одном таймере (программный сом-порт из аппнота атмел + шим на программных счетчиках) - никаких засветок и потерь данных не будет, ибо коллизий с наложением прерываний не будет
делал прибор с динамической индикацией, приемом данных и математикой - все успевало
jump вне форума  
Непрочитано 15.08.2012, 16:38  
DVD-RW
Временная регистрация
 
Аватар для DVD-RW
 
Регистрация: 26.06.2007
Сообщений: 71
Сказал спасибо: 7
Сказали Спасибо 41 раз(а) в 21 сообщении(ях)
DVD-RW на пути к лучшему
По умолчанию Re: ATMega8515, заШИМить все порты вывода

Аппаратный бы УСАПП задействовать... Частенько делаю программный ШИМ на много-много ног (довольно низкочастотный, правда). 8 бит таймер тикает и тикает себе под нос, а прерывание настроено по переполнению. Вот тут то всё и начинается: вводится ещё одна переменная-счётчик (допустим N) (8, 16, да хоть 200 бит!), которая и инкреминируется в прерывании, а то и вовсе поднимается флаг, по которому основная программа это самое N и увеличивает. Смотрим, если N больше чего-либо, то туши свет, если 255 (ну или 15, как захотите), то всё зажигаем и обнуляем счётчик. Фактически получается виртуальный таймер нужной нам размерности, но который тикает медленне реального во столько раз, до скольки считает таймер реальный. Прелесть в том, что заняв один реальный таймер получаем хренову кучу независимых виртуальных таймеров с нужными нам параметрами. Конкретно в вашем случае можно многократно проредить прерывания, замедлив реальный таймер (предделитель). При делении в 256 и 16 градаций яркости (режим сброс по совпадению с OCR1A, прерывание на OCR1A-всключаем и OCR1B-тушим) получаем частоту ШИМа чуть ниже килогерца, зато между соседними прерываниями (нулевую яркость не рассматриваем) у нас в самом худшем случае 256 тактов процессора, а в среднем одно прерывание примерно на 500 мкс. Удачи в борьбе с глюками!
__________________
Ушёл делать
DVD-RW вне форума  
Непрочитано 11.09.2012, 10:46  
gary2007
Почётный гражданин KAZUS.RU
 
Аватар для gary2007
 
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,450
Сказал спасибо: 376
Сказали Спасибо 1,060 раз(а) в 624 сообщении(ях)
gary2007 на пути к лучшему
По умолчанию Re: ATMega8515, заШИМить все порты вывода

Наконец то дошли руки до отладки программной части.
"Виновник" мерцания был определен. Ноги росли еще от версии с "железным" управлением ШИМ, когда цифра дешифрировалась и тут же выводилась в порт в одной процедуре, ЭТОТ непосредственный вывод в порт и был причиной дерганья яркости.

Когда были прописаны обработчики прерываний, то нужно было просто убрать это прямое присвоение порту и "зажигать/гасить" через переменные в процедурах прерываний.

Теперь яркость при смене цифр не прыгает при любой яркости, начиная от 1.

Тему считаю исчерпанной, а написал может кому пригодится?
__________________
Мелочи не решают главного. Они решают всё!
gary2007 вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PIC16F887A переключить все порты в цифровые i/o old_z Микроконтроллеры, АЦП, память и т.д 47 21.12.2011 02:04
Порты ввода/вывода AT90USB162 Archer07 Микроконтроллеры, АЦП, память и т.д 4 01.08.2011 11:05
Отрубились все порты на материнке omicron5 Ремонт оргтехники 9 06.05.2011 17:48
uart atmega8515 bass1981 Микроконтроллеры, АЦП, память и т.д 2 30.04.2011 20:27
AT90S8515 и ATmega8515 R_V_A Микроконтроллеры, АЦП, память и т.д 6 12.09.2006 18:22


Часовой пояс GMT +4, время: 15:04.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot