GetSmart 0 19 октября, 2007 Опубликовано 19 октября, 2007 · Жалоба Какие там могут быть подводные камни?Не дорос ещё =GM= до этого алгоритма :):) А вообще алгоритм идеальный для управления светодиодами напрямую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=GM= 0 19 октября, 2007 Опубликовано 19 октября, 2007 · Жалоба =GM=, Пасиба что расжевали! Лыжи поехали:-) зы: а способ (.пост №73:неравными интервалами! т.е. к примеру с шагом 1,2,4,8,16,32,64,128,255) шим имеет право на жизнь? Там прерываний всего 8 (от разрядности зависит, можно 16) Какие там могут быть подводные камни? Там не камни, там под водой целый горный хребет(:-). Вы когда на лыжах будете съезжать, смотрите не наткнитесь(:-). Теоретически конечно можно перебрать все комбинации с 24 каналами и сделать соответствующее количество вариантов прерываний, чтобы получить заданную комбинацию 24 прерываний, но я не представляю, как это сделать в обозримое время на МК с ограниченными ресурсами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
add 0 19 октября, 2007 Опубликовано 19 октября, 2007 · Жалоба Там не камни, там под водой целый горный хребет(:-). Вы когда на лыжах будете съезжать, смотрите не наткнитесь(:-). Теоретически конечно можно перебрать все комбинации с 24 каналами и сделать соответствующее количество вариантов прерываний, чтобы получить заданную комбинацию 24 прерываний, но я не представляю, как это сделать в обозримое время на МК с ограниченными ресурсами. Дык ненада там прерываний больше. Сколько бит , столько прерываний. А байт каждого канала раскидывается по столбцам. Я по этому и спрашивал как подготавливаете таблицу. (про ролы(rol) и роры(ror) говорил.) А всетаки они разные. :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=GM= 0 19 октября, 2007 Опубликовано 19 октября, 2007 · Жалоба Сколько бит , столько прерываний. А байт каждого канала раскидывается по столбцам Ну, разжуйте теперь вы мне ваш алгоритм, видимо, я не так его понимаю, не дорос(:-) Что такое байт каждого канала, куда он раскидывается, в смысле по каким-таким столбцам? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
add 0 19 октября, 2007 Опубликовано 19 октября, 2007 · Жалоба Ну, разжуйте теперь вы мне ваш алгоритм, видимо, я не так его понимаю, не дорос(:-) Что такое байт каждого канала, куда он раскидывается, в смысле по каким-таким столбцам? Про "не дорос" я не говорил, прошу заметить.:-/ Как уже писал неоднократно, есть к примеру 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 ).. Ну вроде так. :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=GM= 0 19 октября, 2007 Опубликовано 19 октября, 2007 · Жалоба Те. просто поместили байт(значение яркости св.диода) в таблицу, только в столбец...в итоге получим последовательность на порту: 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 кГц. Вот вам одно фундаментальное ограничение. Может быть, можно придумать некий табличный способ, не знаю, надо думать. И еще останется выяснить, как будут жить такие короткие импульсы в системе. Стоит попробовать. Желаю удачи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 19 октября, 2007 Опубликовано 19 октября, 2007 · Жалоба Будет она работать? Теоретически будет, надо исследовать, как такая последовательность влияет на глаз человека. =GM= по ходу не в теме :) Глаз человека даже не заметит подмены. А вот симистору это не понравилось бы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=GM= 0 19 октября, 2007 Опубликовано 19 октября, 2007 · Жалоба =GM= по ходу не в теме :) Глаз человека даже не заметит подмены. А вот симистору это не понравилось бы Симистору будет по барабану, т.к. он включится от третьего-четвёртого-пятого разряда, а потом выключится только через 10000 мкс (полпериода сети 50 Гц), пройдёт более 50 периодов шим. Будет ли он правильно работать, это уже другой вопрос. Что касается глаза, то известны опыты с чёрно-белым кружком (как волчок), когда он крутится, возникают цветные полосы. Где-то у меня такой волчок валялся, надо поискать...Откуда бы им взяться, если кружок чёрно-белый? Ешё была статья в журнале Радио, где описывалась схема формирующая цветную заставку из черно-белой... Все эти эффекты основаны на особенностях человеческого зрения, вот так...а вы не в теме, не в теме... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bzx 0 19 октября, 2007 Опубликовано 19 октября, 2007 · Жалоба Я с другой стороны подойду. Если малость добавить внешних элементов. Например, на вход внешнего логического элемента AND подаётся частота заполнения ШИМ (Fd). На второй вход - частота ШИМ (Fpwm). Таким образом сформирован 1 канал ШИМ. Т.к. частота заполнения ШИМ формируется уже не программно, а именно, не через прерывания таймера, а задаётся внешнем тактовым генератором, то можно снизить частоту прерываний таймера до частоты ШИМ. При таком раскладе значительно освобождаются вычислительные возможности контроллера в ~(Fd/Fpwm) раз. Можно пойти дальше, наращивать число каналов с помощью внешнего сдвигового регистра. Т.е. так можно формировать десятки и сотни pwm каналов с приличной частотой. В общем, всегда можно найти компромисс между программно-аппаратным сочетанием для той или иной задачи, а задачей разработчика является сделать этот компромисс оптимальным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=GM= 0 20 октября, 2007 Опубликовано 20 октября, 2007 · Жалоба ... на вход внешнего логического элемента AND подаётся частота заполнения ШИМ (Fd). На второй вход - частота ШИМ (Fpwm). Таким образом сформирован 1 канал ШИМ. Т.к. частота заполнения ШИМ формируется уже не программно, а именно, не через прерывания таймера, а задаётся внешнем тактовым генератором, то можно снизить частоту прерываний таймера до частоты ШИМ. При таком раскладе значительно освобождаются вычислительные возможности контроллера в ~(Fd/Fpwm) раз Поясните, что вы понимаете под частотой заполнения шим и частотой шим? Например, непонятно, что вы подаёте на второй вход, меандр что ли? Или что? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться