Нужна идея

Jun 21, 2004 4 Replies

Тут мы с ребёнком для его кружка игрушку делаем. Есть большой глобус.Художница на него налепит знаки зодиака. Наша задача.Набором светодиодов(или мини-лампочек) сделать "звёздное небо". Тоесть лампочки должны не вспыхивать а постепенно зажигаться и гаснуть изображая мерцание... И так 8 каналов. решив совместить нужное с полезным мы приобрели Attiny26 и подумав написали программу.Смысл её в том что составили таблицу. Выходной порт считаю 8 бит.Рисую на бумаге длинную полоску из 8 клеток.Потом первую колонку забиваю 1-ицами.Колонку под ней - 1-ицами + один 0. И так наращиваю 0 до тех пор пока в колонку не останутся одни 0.В колонке под ней на один 0 меньше и так до тех пор пока снова не станут одни единицы.Получился один канал вывода.так-же со смещением на 16 строк относительно друг-друга делаю остальные 7 каналов.Получилось 128 байт. Потом сию таблицу вывожу в порт с задержкой между выводами... Набил сию таблицу .Сделал задержку включив в неё 1 канал АЦП на который повесил резистор для регулировки скорости мигания. В общем заработало.Но плавное мигание получается довольно быстрое. Если уменьшить скорость - видны "промаргивания" лампы. В общем-то решение есть.Сделать таблицу ещё больше.раза в 4.Но набивать полкилобайт - никакого настроения.Может кто делал подобное и подскажет более красивое решение. Конечно ШИМ было-бе неплохо.Но их всего 2. ( С инверсией 4 ). И ещё вопрос.При программировании AVRealom он пишет OSCCAL= A7,A9,9F,A3. Судя по описанию это настройки на 1,2,4,8 МГц.( Кстати,в какой последовательности ? ) О бязательно-ли настройки вставлять вначале в OSCCAL или они вставятся автоматически при задании CKSEL 0001,0010,0011,0100 соответственно...?



С уважением...


Hello, Andrew! You wrote on Mon, 21 Jun 2004 14:15:41 +0000 (UTC): AP> подумав написали программу.Смысл её в том что составили таблицу. AP> Выходной порт считаю 8 бит.Рисую на бумаге длинную полоску из 8 AP> клеток.Потом первую колонку забиваю 1-ицами.Колонку под ней - AP> 1-ицами + один 0. И так наращиваю 0 до тех пор пока в колонку не AP> останутся одни 0.В колонке под ней на один 0 меньше и так до тех пор AP> пока снова не станут одни единицы.Получился один канал вывода.так-же AP> со смещением на 16 строк относительно друг-друга делаю остальные 7 AP> каналов.Получилось 128 байт.

А зачем такое набивать? Это вполне "вычисляется" динамически. В конце концов, у него мегагерцы тактовой, пусть у него голова болит :-))).

Alexander,Derazhne@adic,kiev,ua (replace commas with dots) Alexander Derazhne

"Alexander Derazhne" snipped-for-privacy@adic.kiev.ua> сообщил/сообщила в новостях следующее: news:cb6tcs$27p1$ snipped-for-privacy@ddt.demos.su...

Подскажи как....

С уважением...

Hello, Andrew! You wrote to Alexander Derazhne on Tue, 22 Jun 2004 06:15:09 +0000 (UTC):

AP>>> пока снова не станут одни единицы.Получился один канал AP>>> вывода.так-же со смещением на 16 строк относительно друг-друга AP>>> делаю остальные 7 каналов.Получилось 128 байт.

AP> Подскажи как....

prepare: CLR R16 LDI R17, 0xFF ; .....

loop:

; 7 6 5 4 3 2 1 0 ; +-+-+-+-+-+-+-+-+ ; R16 | | | | | | | | | ; +-+-+-+-+-+-+-+-+ ; | ; 'C'<--+

CLC ; Сброс флага переноса SBIC R16, 7 ; Пропустить следующую команду, ; если старший бит R16 сброшен STC ; Установить флаг переноса

; 7 6 5 4 3 2 1 0 ; +-+-+-+-+-+-+-+-+ ; R17 | | | | | | | | | ; +-+-+-+-+-+-+-+-+ ; | ^ ; | | ; 'C'<--+ +-- 'C'

ROL R17 ; Сдвиг R17 через флаг переноса

; 7 6 5 4 3 2 1 0 ; +-+-+-+-+-+-+-+-+ ; R16 | | | | | | | | | ; +-+-+-+-+-+-+-+-+ ; | ^ ; | | ; 'C'<--+ +--> 'C'

ROL R16 ; Сдвиг R16 через флаг переноса

Если бы ты более подробно описал свой алгоритм и объяснил, что такое "мерцание", можно было бы ещё что нибудь придумать. А так - только "избавление" от таблиц(ы).

Alexander,Derazhne@adic,kiev,ua (replace commas with dots) Alexander Derazhne

Тут уже несколько версий попробовал - не пошло. Пока не буду мозги трепать - или решу или более чётко сформулирую вопрос. Ну а мерцание - это когда светодиодик постепенно зажигается и медленно гаснет в течении 2-4 секунд. И так восемь штук с небольшим сдвигом друг относительно друга загоранием...

С уважением...

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required