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

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

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

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

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

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

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

 
Опции темы
Непрочитано 13.08.2012, 21:03  
gary2007
Почётный гражданин KAZUS.RU
 
Аватар для gary2007
 
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,450
Сказал спасибо: 376
Сказали Спасибо 1,060 раз(а) в 624 сообщении(ях)
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.RU
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
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.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
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.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: ATMega8515, заШИМить все порты вывода

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

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

ps
Видео по левой кнопке требует авторизации, а по правой грозится вирусами (Авира)
__________________
Мелочи не решают главного. Они решают всё!
gary2007 вне форума  
Сказали "Спасибо" gary2007
warel (29.06.2019)
Непрочитано 14.08.2012, 08:59  
alvadep
Почётный гражданин KAZUS.RU
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
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.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: ATMega8515, заШИМить все порты вывода

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

Конечно же в регистр ПОРТ
ДДР вообще не трогать
niXto вне форума  
Эти 2 пользователя(ей) сказали Спасибо niXto за это сообщение:
gary2007 (14.08.2012), warel (29.06.2019)
Непрочитано 14.08.2012, 16:59  
alvadep
Почётный гражданин KAZUS.RU
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
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.RU
 
Аватар для gary2007
 
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,450
Сказал спасибо: 376
Сказали Спасибо 1,060 раз(а) в 624 сообщении(ях)
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, время: 19:30.


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