Форум программистов, компьютерный форум, киберфорум
Наши страницы
Электроника и радиотехника
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.84/61: Рейтинг темы: голосов - 61, средняя оценка - 4.84
ryko_81
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 219
1

трёхканальный PWM driver на Tiny 13 с управлением по I2C

05.03.2012, 15:10. Просмотров 11069. Ответов 3
Метки нет (Все метки)

Ну вот ! )) Вроде бы что-то осилил...
из плюшек:
30 кГц скорость IIC (меньше можно, больше - будет глючить), ШИМ от 36 кГц до 400 Гц. изменяемая градация от 2 до 255 ( От градации зависит частота ШИМ ), пин включения
полная совместимость с аппаратным TWI, возможность навешивания на одну шину до 65 025 таких штук )) !! (адресация двубайтная в первой версии ),знаю... знаю... Паразитная ёмкость линии,снижение скорости и ты. ды, но мало ли ))))...
эррата:
нет защиты от сбоя тактирования мастера ( лечится сбросом питания)
При обращении к драйверу, после передачи пакета ( сразу за командой STOP в "железном" I2C ) требуется принудительно обнулить регистр TWCR для корректного последующего обращения .
возможное применение:
руление скоростью движков при загруженности основного контроллера (естественно через ключи :))
драйвер RGB-светодидов ( для чего он собсна и делался )
всякие плавные тушения \зажигания гирлянд, подсветок и прочего ))) и ещё куча всего что можно повесить на низкоскоростной ШИМ )




ещё пара особенностей:
уникальный адрес драйвера записывается при прошивке, а изменить его можно вот в этом куске кода:
Код
;==========================================================
;                           SLAVE addres
ldi temp,$01
mov XL,temp       ; адрес слейва 0х0001
ldi temp,$00
mov XH,temp
;==========================================================
он как раз впилен в инициализации , так что его искать не надо :)
пример отправки пакета по шине будет таким:


самый первый слейв_адрес , который передает мастер всегда равен 0 (нулю), так что фактически адрес у нас получается трёхбайтный, только изменяются младшие 2 ... он будет служить инициализационным байтом драйвера.
типа... пришол ноль! Ага !...значит щас будем 2 байта адреса читать, если не ноль, то нефиг даже слушать шину пока новый старт не придёт.
но вот пришол ноль, а за ним два байта нужного адреса !... значит следом будут идти 3 байта управления каналами шим.
как только их прочитываем, сразу освобождаем шину и ждём когда пин ENABL встанет в высокий уровень для работы. (кстати он всегда в высоком уровне потому что с внутренней подтяжкой) перед стартом передачи по I2C, ENABL надо придавить к земле. так драйвер поймет что надо вырубать ШИМ и слушать шину.
Ну вот вроде бы и ничего сложного ))) кому надо - пользуйтесь на здоровье и не забывайте Рика вспоминать за бутылкой правильного пыва ! )))
UPD. Забыл добавить. При прошивке фьюзы выставляем на 9.6 МГц, они вроде по дефолту так стоят, отключаем предделитель и ножку risit . Шьётся на глушняк ! Потом можно перешить толко параллельным либо Фузедоктором ))


[28.35 Кб]
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2012, 15:10
Ответы с готовыми решениями:

Контроллер управлением оконных жалюзи и дистанционным управлением
МПК AVR в интернете вообще ни какой информации по этой теме нет может кто то реферат писал.или...

MS SQL driver type 4 ошибка: [Microsoft][SQLServer JDBC Driver]No ResultSet set was produced.
Всем привет! Может мне кто-нибудь помочь с моей проблемой связанной с MS SQL driver type 4? Я...

wpd file system volume driver has a driver problem
Добрый вечер. Выносной хард видит диск но его нельзя открыть. Пробовал встроенным фиксом, он пишет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
DJK
0 / 0 / 0
Регистрация: 08.11.2011
Сообщений: 3
18.03.2012, 02:39 2
ryko_81
в архиве нет прошивки для ведщей меги8 :(
0
ryko_81
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 219
19.03.2012, 12:32 3
так а в чем проблема ? :) я описал работу драйвера. А уж как вы его примените , уже дело барина ;) протокол я описал. а мега там просто как картинка, когда проверял то осталась на скриншоте.
0
ryko_81
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 219
27.04.2012, 13:36 4
небольшой upgrade драйвера... добавлена функция смены градаций от 2 до 255 (дефолтное состояние 28) , при 1 шим просто отрубается, при 0 - работает как при 255.
адрес слейва как обычно однобайтный(я так подумал....накуа 2 байта адреса ? ), бит R/W всегда в ноль(запись) ,изменяется в программе там же где и в прошлой версии.
Следующие 2 байта идут [enable byte]:[gradation byte] - если в первом байте стоит $80 "0b10000000", то это типа "R/W - ON" , то драйвер всасывает в себя второй байт для смены градации. При любом другом байте [enable byte] , второй байт игнорируется... короче если ничего в градациях менять не надо, то тупо гоним 00 или FF. Остальное как обычно... три байта каналов шим.
пакет отправки остался прежним по длине [SlaveAddr]:[enable byte]:[gradation byte]:[channel1]:[channel2]:[channel3]
ну и конечно, при уменьшении градаций возрастает частота шим ! )) при значении 255 частота примерно 460 Гц, при значении 2 будет уже меиндр частотой 36 000 Гц, по дефолту стоит 28 (4000 Гц)... как то так.
.UPD кстати , добавил хекс для меги , кому влом писать для проверки , ну или жмотно херить тинку для пробы ))))
[10.45 Кб]


[8.48 Кб]
0
27.04.2012, 13:36
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.