Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

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

 
Опции темы

ATMega8515, заШИМить все порты вывода

Непрочитано 13.08.2012, 21:03  
gary2007
Почётный гражданин KAZUS.RUN
 
Аватар для gary2007
 
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,440
Сказал спасибо: 375
Сказали Спасибо 1,052 раз(а) в 621 сообщении(ях)
gary2007 на пути к лучшему
По умолчанию ATMega8515, заШИМить все порты вывода

Доброго всем дня, точнее вечера!

Есть семи-сегментное LED табло на 4 цифры, в котором все сегменты "сидят" на отдельных портах меги, нужно регулировать яркость ВСЕГО табло (ночной режим). Схема во вложении: если коротко, то включен аппаратный ШИМ - fast pwm 8 бит (частота небольшая 240 Гц), через транзисторный ключ по "плюсу" шимится 24 В, от которого (через который) собственно и питаются сегменты.

Все работает, вопрос в том как программно cделать то-же самое, т.е без схемы на ключе?
Другими словами, можно ли мультиплексировать все четыре выходных порта от одного аппаратного ШИМ?
Прерывания не использую. Пишу в AVR Studio на asm.

ps
Достаточно 16 уровней яркости.
Миниатюры:
Нажмите на изображение для увеличения
Название: Модуль LED табло ATmega8515.GIF
Просмотров: 1207
Размер:	116.5 Кб
ID:	37741  
Реклама:
__________________
Мелочи не решают главного. Они решают всё!
gary2007 вне форума  
Сказали "Спасибо" gary2007
warel (29.06.2019)
Непрочитано 13.08.2012, 21:18  
alvadep
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,042
Сказал спасибо: 589
Сказали Спасибо 3,967 раз(а) в 1,825 сообщении(ях)
alvadep на пути к лучшему
По умолчанию Re: ATMega8515, заШИМить все порты вывода

Можно проверять пин аппаратного ШИМа и по результату управлять портами, если конечно Вы не собираетесь освободить этот пин для чего-то другого?

Последний раз редактировалось alvadep; 13.08.2012 в 21:20.
alvadep вне форума  
Эти 2 пользователя(ей) сказали Спасибо alvadep за это сообщение:
gary2007 (14.08.2012), warel (29.06.2019)
Непрочитано 13.08.2012, 21:29  
niXto
Почётный гражданин KAZUS.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: ATMega8515, заШИМить все порты вывода

Можно еще проще - сделать аппаратное прерывание по ОСхВ и в нем гасить все сегменты. По переполнению таймера (или ОСхА) зажигать нужные сегменты. С фотодатчиком и матрицей 8х24 диода реально от 15 до 250 единиц из 256, и еще останется много времени на вычисления. Тем более что вам достаточно частоты 200 Гц, мне за счет 8 последовательных строк нужна частота в 8 раз больше - см видео

4shared.com/video/Vza0Mvfr/Часы_на_матрицах_-niXto-.html
niXto вне форума  
Эти 2 пользователя(ей) сказали Спасибо niXto за это сообщение:
gary2007 (14.08.2012), warel (29.06.2019)
Непрочитано 13.08.2012, 21:36  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: ATMega8515, заШИМить все порты вывода

...и поставьте токоограничивающие резисторы в коллекторы дарлингтонов (если внутренних нет), а то малейший сбой и светодиоды будут светить ооочень ярко, правда недолго...
omercury вне форума  
Эти 2 пользователя(ей) сказали Спасибо omercury за это сообщение:
gary2007 (14.08.2012), warel (29.06.2019)
Непрочитано 14.08.2012, 08:22  
gary2007
Почётный гражданин KAZUS.RUN
 
Аватар для gary2007
 
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,440
Сказал спасибо: 375
Сказали Спасибо 1,052 раз(а) в 621 сообщении(ях)
gary2007 на пути к лучшему
По умолчанию Re: ATMega8515, заШИМить все порты вывода

Сообщение от omercury Посмотреть сообщение
поставьте токоограничивающие резисторы
С резисторами все в порядке, они в самом табло.
Сообщение от niXto Посмотреть сообщение
аппаратное прерывание по ОСхВ и в нем гасить все сегменты. По переполнению таймера (или ОСхА) зажигать нужные сегменты.
Я так понял, надо два обработчика писать, в одном гасить в другом зажигать?
Сегодня буду пробовать. А управлять как лучше, менять direct (DDRA) или пинами (portA)

ps
Видео по левой кнопке требует авторизации, а по правой грозится вирусами (Авира)
__________________
Мелочи не решают главного. Они решают всё!
gary2007 вне форума  
Сказали "Спасибо" gary2007
warel (29.06.2019)
Непрочитано 14.08.2012, 08:59  
alvadep
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,042
Сказал спасибо: 589
Сказали Спасибо 3,967 раз(а) в 1,825 сообщении(ях)
alvadep на пути к лучшему
По умолчанию Re: ATMega8515, заШИМить все порты вывода

Ну, раз прерываниями Вы все же не брезгуете, то можно обойтись и одним обработчиком. Смотрите в сторону БАМ (Bit Angle Modulation). Или как частный случай БАМа*, чередование циклов, например, по первому задается длительность 1, по второму длительность 0 (обратное значение). Хотя, чередование циклов это уже ШИМ.

*Имеется в виду, что длительность следующего цикла задается в предыдущем.

Последний раз редактировалось alvadep; 14.08.2012 в 09:30.
alvadep вне форума  
Эти 2 пользователя(ей) сказали Спасибо alvadep за это сообщение:
gary2007 (14.08.2012), warel (29.06.2019)
Непрочитано 14.08.2012, 10:24  
niXto
Почётный гражданин KAZUS.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: ATMega8515, заШИМить все порты вывода

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

Конечно же в регистр ПОРТ
ДДР вообще не трогать
niXto вне форума  
Эти 2 пользователя(ей) сказали Спасибо niXto за это сообщение:
gary2007 (14.08.2012), warel (29.06.2019)
Непрочитано 14.08.2012, 16:59  
alvadep
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,042
Сказал спасибо: 589
Сказали Спасибо 3,967 раз(а) в 1,825 сообщении(ях)
alvadep на пути к лучшему
По умолчанию Re: ATMega8515, заШИМить все порты вывода

Или по прерыванию от таймера увеличивать/уменьшать счетчик (какой-нибудь регистр) и сравнивать с числом, задающим скважность (яркость). Счетчик крутится по кругу. Например. Скважность › счетчика индикаторы отключены. Скважность ‹= счетчика индикаторы отображают информацию.
alvadep вне форума  
Сказали "Спасибо" alvadep
warel (29.06.2019)
Непрочитано 14.08.2012, 21:41  
Alecsej
Вид на жительство
 
Регистрация: 10.08.2005
Сообщений: 385
Сказал спасибо: 0
Сказали Спасибо 161 раз(а) в 140 сообщении(ях)
Alecsej на пути к лучшему
По умолчанию Re: ATMega8515, заШИМить все порты вывода

Может чем будет полезно:
http://www.atmel.com/Images/doc8020.pdf
http://www.atmel.com/Images/AVR136.zip
Alecsej вне форума  
Сказали "Спасибо" Alecsej
warel (29.06.2019)
Непрочитано 14.08.2012, 22:05  
gary2007
Почётный гражданин KAZUS.RUN
 
Аватар для gary2007
 
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,440
Сказал спасибо: 375
Сказали Спасибо 1,052 раз(а) в 621 сообщении(ях)
gary2007 на пути к лучшему
По умолчанию Re: ATMega8515, заШИМить все порты вывода

Сообщение от alvadep Посмотреть сообщение
Или по прерыванию от таймера увеличивать/уменьшать счетчик (какой-нибудь регистр) и сравнивать с числом, задающим скважность (яркость)
Это тоже самое, что и в случае с прерываниями как советовал niXto, только сложнее.
В общем, сделал на прерываниях, все работает, только заметны кратковременные вспышки яркости при приеме данных и смене цифр, на малых уровнях яркости, но видно от этого не уйти. Прием данных сравнительно медленный у меня.

Сообщение от Alecsej Посмотреть сообщение
Может чем будет полезно:
http://www.atmel.com/Images/doc8020.pdf
http://www.atmel.com/Images/AVR136.zip
Расскажите в двух словах, в чем там суть. Английский не мой родной язык.
Я предпочитаю изучать или выслушать объяснение на русском, чтобы все улеглось в голове... а уж за уточнениями лезу в даташиты и апноуты.
__________________
Мелочи не решают главного. Они решают всё!
gary2007 вне форума  
Сказали "Спасибо" gary2007
warel (29.06.2019)
 
Опции темы

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

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, время: 05:24.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.