Перейти к содержанию
    

Какие там могут быть подводные камни?
Не дорос ещё =GM= до этого алгоритма :):)

А вообще алгоритм идеальный для управления светодиодами напрямую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

=GM=, Пасиба что расжевали! Лыжи поехали:-) зы: а способ (.пост №73:неравными интервалами! т.е. к примеру с шагом 1,2,4,8,16,32,64,128,255) шим имеет право на жизнь? Там прерываний всего 8 (от разрядности зависит, можно 16) Какие там могут быть подводные камни?

Там не камни, там под водой целый горный хребет(:-). Вы когда на лыжах будете съезжать, смотрите не наткнитесь(:-).

 

Теоретически конечно можно перебрать все комбинации с 24 каналами и сделать соответствующее количество вариантов прерываний, чтобы получить заданную комбинацию 24 прерываний, но я не представляю, как это сделать в обозримое время на МК с ограниченными ресурсами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там не камни, там под водой целый горный хребет(:-). Вы когда на лыжах будете съезжать, смотрите не наткнитесь(:-).

 

Теоретически конечно можно перебрать все комбинации с 24 каналами и сделать соответствующее количество вариантов прерываний, чтобы получить заданную комбинацию 24 прерываний, но я не представляю, как это сделать в обозримое время на МК с ограниченными ресурсами.

Дык ненада там прерываний больше. Сколько бит , столько прерываний. А байт каждого канала раскидывается по столбцам. Я по этому и спрашивал как подготавливаете таблицу. (про ролы(rol) и роры(ror) говорил.) А всетаки они разные. :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сколько бит , столько прерываний. А байт каждого канала раскидывается по столбцам

Ну, разжуйте теперь вы мне ваш алгоритм, видимо, я не так его понимаю, не дорос(:-)

 

Что такое байт каждого канала, куда он раскидывается, в смысле по каким-таким столбцам?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, разжуйте теперь вы мне ваш алгоритм, видимо, я не так его понимаю, не дорос(:-)

Что такое байт каждого канала, куда он раскидывается, в смысле по каким-таким столбцам?

Про "не дорос" я не говорил, прошу заметить.:-/ Как уже писал неоднократно, есть к примеру 8 прерываний (по числу битности). с интервалами кратными 1,2,4,8,16,32,64,128,256( длительность) . Теперь формируем образа портов: перый образ(первое прерывание кратное 1) :1-й бит 1-го байта, 1-й бит 2-го байта,

.....1-й бит 24-го байта.Второй образ(второе прерывание кратное 2) :2-й бит 1-го байта, 2-й бит 2-го байта,

.....2-й бит 24-го байта. И так все байты каждого канала. Далее выводим по прерыванию соответствующую строчку. все. те. значения яркости к примеру 9, для первого канала, остальные нули таблица будет такой:

 

;----32-ой канал...........................................1-ый канал

.db0b0000000,0b0000000,0b0000000,0b0000001 ;1-е прерыв (вес 1) (образ портов)

.db0b0000000,0b0000000,0b0000000,0b0000000;2-е прерыв (вес 2)(образ портов)

.db0b0000000,0b0000000,0b0000000,0b0000000;3-е прерыв (вес 4)(образ портов)

.db0b0000000,0b0000000,0b0000000,0b0000001;4-е прерыв (вес 8)(образ портов)

.db0b0000000,0b0000000,0b0000000,0b0000000;5-е прерыв (вес 16)(образ портов)

.db0b0000000,0b0000000,0b0000000,0b0000000;6-е прерыв (вес 32)(образ портов)

.db0b0000000,0b0000000,0b0000000,0b0000000;7-е прерыв (вес 64)(образ портов)

.db0b0000000,0b0000000,0b0000000,0b0000000;8-е прерыв (вес 128)(образ портов)

 

Те. просто поместили байт(значение яркости св.диода) в таблицу, только в столбец..говоря проще..:-)

в итоге получим последовательность на порту:1|t1|0|t2|0|t3|1|t4|0|t5|0|t6|0|t7|0 где t - интервал между прерываниями(кратными 1,2,4,8,16,32,64,128,256 ).. Ну вроде так. :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Те. просто поместили байт(значение яркости св.диода) в таблицу, только в столбец...в итоге получим последовательность на порту: 1|t1|0|t2|0|t3|1|t4|0|t5|0|t6|0|t7|0 где t - интервал между прерываниями (кратными 1, 2, 4, 8, 16, 32, 64, 128, 256)

Теперь понял(:-).

 

Ну, во-первых, будет не шим, а "поразрядная кодоимпульсная модуляция" (пКИМ). Будет она работать? Теоретически будет, надо исследовать, как такая последовательность влияет на глаз человека.

 

Во-вторых, загрузить из памяти в регистр и выдать для трёх портов можно за 9 МЦ минимум миниморум, пусть это будет квант младшего разряда, выдача для второго кванта будет полегче - 18 МЦ, для последующих - нет проблем, поскольку времени на выдачу будет не менее 36 МЦ. Следовательно, при той же разрядности в 8 бит, период пКИМ будет равен 9*256=2304 МЦ, т.е. частота пКИМ будет 8.7 кГц. Что выглядит совсем неплохо.

 

Можно хлеще сделать, разместить первые, вторые и третьи 3 байта образов порта в 9 регистрах, тогда выдача в три порта займет 3 МЦ, значит, общий период пКИМ будет 3*256=768МЦ, а частота поднимется до 26 кГц. Последующие образы брать из памяти.

 

Поскольку вам фактически надо транспонировать битную матрицу 8 х 24 в матрицу 24 х 8, то подготовку таблицы, наверное, лучше делать так. Разместить текущие 8 байт в регистры, с помощью 8 пар rol-rol получить текущий байт и сохранить его. Уйдёт где-то 480 МЦ, всего 480*3=1440 МЦ, т.е. период пКИМ будет не более 13 кГц. Вот вам одно фундаментальное ограничение. Может быть, можно придумать некий табличный способ, не знаю, надо думать.

 

И еще останется выяснить, как будут жить такие короткие импульсы в системе. Стоит попробовать. Желаю удачи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Будет она работать? Теоретически будет, надо исследовать, как такая последовательность влияет на глаз человека.
=GM= по ходу не в теме :)

Глаз человека даже не заметит подмены. А вот симистору это не понравилось бы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

=GM= по ходу не в теме :)

Глаз человека даже не заметит подмены. А вот симистору это не понравилось бы

Симистору будет по барабану, т.к. он включится от третьего-четвёртого-пятого разряда, а потом выключится только через 10000 мкс (полпериода сети 50 Гц), пройдёт более 50 периодов шим. Будет ли он правильно работать, это уже другой вопрос.

 

Что касается глаза, то известны опыты с чёрно-белым кружком (как волчок), когда он крутится, возникают цветные полосы. Где-то у меня такой волчок валялся, надо поискать...Откуда бы им взяться, если кружок чёрно-белый?

 

Ешё была статья в журнале Радио, где описывалась схема формирующая цветную заставку из черно-белой...

 

Все эти эффекты основаны на особенностях человеческого зрения, вот так...а вы не в теме, не в теме...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я с другой стороны подойду. Если малость добавить внешних элементов. Например, на вход внешнего логического элемента AND подаётся частота заполнения ШИМ (Fd). На второй вход - частота ШИМ (Fpwm). Таким образом сформирован 1 канал ШИМ. Т.к. частота заполнения ШИМ формируется уже не программно, а именно, не через прерывания таймера, а задаётся внешнем тактовым генератором, то можно снизить частоту прерываний таймера до частоты ШИМ. При таком раскладе значительно освобождаются вычислительные возможности контроллера в ~(Fd/Fpwm) раз.

 

Можно пойти дальше, наращивать число каналов с помощью внешнего сдвигового регистра. Т.е. так можно формировать десятки и сотни pwm каналов с приличной частотой.

 

В общем, всегда можно найти компромисс между программно-аппаратным сочетанием для той или иной задачи, а задачей разработчика является сделать этот компромисс оптимальным.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... на вход внешнего логического элемента AND подаётся частота заполнения ШИМ (Fd). На второй вход - частота ШИМ (Fpwm). Таким образом сформирован 1 канал ШИМ. Т.к. частота заполнения ШИМ формируется уже не программно, а именно, не через прерывания таймера, а задаётся внешнем тактовым генератором, то можно снизить частоту прерываний таймера до частоты ШИМ. При таком раскладе значительно освобождаются вычислительные возможности контроллера в ~(Fd/Fpwm) раз

Поясните, что вы понимаете под частотой заполнения шим и частотой шим? Например, непонятно, что вы подаёте на второй вход, меандр что ли? Или что?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...