Был мелкий дефект в блоке питания,теперь при подаче 220в экран включается и рисует узоры. Хотелось бы эти узоры менять или вообще цветомузыку из него сделать.
Поразбирался в внутренностях. Собственно светодиодами управляет большая плата с двумя CLPLD ATF1508AS. К ней подходит шлейф из 20 проводов который может быть присоединен или к маленькой плате с Atmega128 если устройство работает автономно, или к внешнему разъему если модули объединяются в массив (большой экран). У меня соответственно к маленькой плате подключен. Ну и собственно вопрос - а как бы в управлении разобраться?
Сделал фото маленькой платы с двух сторон. Из того что не видно: микросхема U2 это MAX232,понятно что такое, а вот на U3 написано 75176B 15M AL1H - не знаю что это.
ссылка на экран не открывается, некликать на фото лень (берегу ресурс правой кнопки) но наверняка экран имеет стандартный интерфейс типа HUB75 и иных подобных
Заголовок сообщения: Re: Светодиодный экран - хочу заставить работать
Добавлено: Пн июл 01, 2024 20:57:48
Это не хвост, это антенна
Карма: 6
Рейтинг сообщений: 83
Зарегистрирован: Ср сен 03, 2008 21:42:17 Сообщений: 1354 Откуда: Ленинградская область,пос.Красный Остров
Рейтинг сообщения:0
Для видеосигнала - слишком много проводов. Да и не логично это - генерировать Мегой видеосигнал чтобы потом на основной плате дисплея "видеозахватом" заниматься.
Распиновку интерфейса HUB75 нашел,как и еще нескольких HUB - на совпадение не похоже - земляные контакты не там. Хотя их тоже два,так что может и HUB75,но с нестандартной разводкой. Ну или нечто подобное по смыслу - хотябы понятен принцип управления,уже можно будет осциллографом тыкать.
Добавлено after 1 hour 47 minutes 32 seconds: Выяснил что разводка разъема с десятью штырьками на маленькой плате соответствует разводке обычного программатора для AVR. Ну и успешно считал прошивку из Atmega 128. Странно что файл получился только 5040 байтов. Хотя читалось пол-минуты. Это что - avrdude неиспользуемый "хвост" флэш-памяти само отрезало что ли? Однако при просмотре полученного файла в двоичном виде - он выглядит вполне осмысленно. Теперь буду пытаться этот код изучать. Надо только подумать чем бы его дизассемблировать.
Для демонстрации осмысленности вот вывод команды strings,напущенной на этот файл:
Заголовок сообщения: А чем бы поизучать прошивку,считанную из AVR ?
Добавлено: Пн июл 01, 2024 21:02:44
Это не хвост, это антенна
Карма: 6
Рейтинг сообщений: 83
Зарегистрирован: Ср сен 03, 2008 21:42:17 Сообщений: 1354 Откуда: Ленинградская область,пос.Красный Остров
Рейтинг сообщения:0
Я тут пытаюсь разобраться в управлении свтодиодным экраном,которым рулит Atmega128 - рисует на нем узоры. Хочется научиться узоры менять. Удалось подключить программатор и считать прошивку. А вот чем бы ее дизассемблировать?
Добавлено after 2 hours 48 minutes 4 seconds: Загрузил прошивку в симулятор VMLAB. Уже в нескольких местах ругается на использование не инициализированных регистров. В двух местах понятно что предполагалось после сброса в регистре нули. Я их руками прописал(в 4 и 9 регистры) - сработало. Заодно увидел что оба последовательных порта настраиваются на скорость 9600.
Чтобы VMLAB захотел симулировать прошивку - ему надо создать вот такой файл проекта (.prj)
Потом зайти в него,открыть проект,нажать F9-Build, открыть окно program memory,ну и другие по желанию,registers например,и можно запускать симуляцию. Оно само остановится на тех местах где что-то не понравится. Сейчас например спотыкается в с таким сообщением:
[PC = $021E, Time = 38.79 ms, {UND}]: SBIS instruction: bit in I/O = X (unknown)
А по этому адресу вот такая команда:
sbis $10,4
Проверяет бит 4 по адресу $10. А симулятор считает что этот бит "неопределенный". Означает ли это $10 абсолютный адрес в памяти или это адрес в "файле регистров воода-вывода",тогда к нему надо добавить 32? И тогда это будет регистр PIND. Похоже что так. Смотрим на плату,видим что старшие четыре бита соединены с питанием через резисторную сборку,говорим симулятору что четыре старших бита этого порта соединены с питанием через резисторы 1К,значение становится определенным и симулятор на этом месте больше не останавливается. Там четыре проверки подряд. Дальше смуляция спотыкается на
[PC = $0227, Time = 38.80 ms, {UND}]: SREG bit 1 (Z) = X (undetermined)
Опять виновато сравнение с неинициализированным регистром R22. Пишем нули и в него,рестартуем симуляцию - и о чудо - она работает! Ну во всяком случае не вылетает по ошибкам. И пожно пытаться понять что же она делает.
Видно что "таймер 1" и "таймер 3" работают одинаково,в режиме PWM 8 bit, с единичным делителем. Таймер 0 что-то считает с частотой Clock/8,а второй таймер не используется.
В последовательные порты ничего не пишется. Чтение скорее всего по прерываниям - надо будет попробовать просимулировать это.
Вот такая вот интересная компьютерная игрушка - этот VMLAB :) Раньше я в нем только свои сишные программы отлаживал,а вот оказывается можно и чужие ассемблерные.
Проверяет бит 4 по адресу $10. А симулятор считает что этот бит "неопределенный". Означает ли это $10 абсолютный адрес в памяти или это адрес в "файле регистров воода-вывода",тогда к нему надо добавить 32?
sbis $10,4 = sbis pind,4. По хорошему бы всем IO присвоить соответствующие имена, легче дальше разбираться будет. Ну и обязательно комментировать то, что уже разобрал.
sbis $10,4 = sbis pind,4. По хорошему бы всем IO присвоить соответствующие имена,
Вот ассемблерный файл с именами. Там кстати половина прошивки это данные. А кода всего-то два с хвостиком килобайта. И благодаря запуску в VMLAB уже более-менее понятно что есть что.
Заголовок сообщения: Re: А чем бы поизучать прошивку,считанную из AVR ?
Добавлено: Чт июл 04, 2024 04:03:07
Это не хвост, это антенна
Карма: 6
Рейтинг сообщений: 83
Зарегистрирован: Ср сен 03, 2008 21:42:17 Сообщений: 1354 Откуда: Ленинградская область,пос.Красный Остров
Рейтинг сообщения:0
Цитата:
Файлик отсюда ?
Да, оттуда. Спасибо хорошему человеку с хорошим дизассемблером. Там правда нет сопоставления символьных имен с цифровыми константами,что не очень удобно так как VMLAB показывает именно цифрами. Я попробовал подсунуть файл io.h от avr-gcc скормить этому компилятору,точнее ассемблеру от него. Увы - значения констант не совпадают. Зато заставил вышеупомянутый дизассемблер сгенерировать правильные .equ в начале еще одного листинга. Хотя при этом пропали смещения и опкоды в шестнадцатиричном виде.
И смещений от начала кода в этом листинке тоже нет так что это тоже несколько замедляет поиск нужной функции в VMLAB,ну или наоборот - переход из VMLAB в этот листинг. Впрочем - в листинге от другого дизассемблера который я выше выкладывал смещения хотя и есть но считаются не так как VMLAB. В одном случае байтами,в другом - двухбайтными словами. Но всё это не принципиальные мелкие неудобства. Можно будет из нескольких файлов попробовать скомпоновать один,которые еще и компилироваться может быть будет. Если еще и заработает в железе то разбирательство совсем быстро пойдет.
Главное - оказалось что собственно кода там всего-то два с хвостиком килобайта,остальное - данные. Так что есть шанс со временем разобраться. Чем формируется сигнал clock я уже нашел. Как минимум один. Теперь буду пытаться понять как передается информация какой диод на экране зажигать и каким цветом. Заодно понял что к точности тактового сигнала экран похоже не особенно критичен потому что формируется он просто чередованием команд установки/сброса бита в порту,причем не особенно равномерным. - между этими командами бывает разное число других. А это наводит на мысль что экран умеет работать статически - то есть записал в него что зажечь,оно загорелось и остается таковым. Если это действительно так то можно сделать пульт с переключателями как на СМ и ЕС ЭВМ было,и неспешно экспериментировать. Или более продвинутый вариант - учитывая наличие разведенного UART на плате, дописать функцию приема команд на запись в экран заданных ими значений.
Вобщем - интересную игрушку себе нашел. Будет чем заняться долгими осенними вечерами. Зато и цветомузыка классная получится если повезет и всё заработает :-)
Добавлено after 2 hours 58 minutes 20 seconds: Прочитал EEPROM из Атмеги - а там тоже что-то есть. Хотя VMLAB не показывает обращений туда.
И еще вылез интересный глюк. При включении экрана рисуется один повторяющийся узор в виде двух квадратов разного цвета. А вот если при включенном экране нажать reset то начинают рисоваться последовательно несколько разных узоров. У меня возникло предположение,что при включении питания не случается правильный сброс и что-то где-то не инициализируется правильно. Не просто так VMLAB ругался на использование неинициализированных значений трех регистров. Вот программа и падает,и перезапускается с начала. А после того как программа поработала и был нажат ресет кнопкой - по всей видимости что-то где-то уже инициализировано и программа отрабатывает цикл рисования узоров полностью.
Добавлено after 5 minutes 13 seconds: Сделал "отладочный стенд" - плату управления вытащил на проводах наружу,подключил к программатору. Попробовал читать и записывать прошивку - всё читается и пишется правильно. Всё же буду пробовать пересобрать прошивку из дизассемблера,заставить запуститься,а потом начну модифицировать.
Интересно - а что нужно для "железной" отладки чтобы прошивку пошагово исполнять прямо в контроллере? Вроде читал что Атмега128 обладает такими возможностями но никогда не возникало надобности пользоваться пока свои исходники на Си были - всегда отлаживал их в VMLAB.
+000001C3: 99E1 SBIC 0x1C,1 Skip if bit in I/O register cleared +000001C4: CFFE RJMP PC-0x0001 Relative jump +000001C5: BBBF OUT 0x1F,R27 Out to I/O location +000001C6: BBAE OUT 0x1E,R26 Out to I/O location +000001C7: 9AE0 SBI 0x1C,0 Set bit in I/O register +000001C8: B31D IN R17,0x1D In from I/O location
+000001CC: BBBF OUT 0x1F,R27 Out to I/O location +000001CD: BBAE OUT 0x1E,R26 Out to I/O location +000001CE: BB1D OUT 0x1D,R17 Out to I/O location +000001CF: 9AE2 SBI 0x1C,2 Set bit in I/O register +000001D0: 9AE1 SBI 0x1C,1 Set bit in I/O register
Вроде что-то читает.. И пишет Добавил несколько строчек, откуда переход на чтение.. зы: в твоем файле, чтение еепром - sub_1C3. Запись - sub_1CA. Надо найти откуда эти процедуры вызываются и уже там смотреть что там пишется в еепром.
Последний раз редактировалось Игорь_396 Чт июл 04, 2024 10:00:38, всего редактировалось 1 раз.
Для отладки в АВР Студии - самый простой самодельный JTAG.. Или с Алиэкспресс.
Увы - похоже что с этим облом - на плате насколько я понял не разведены нужные контакты на разъеме программатора. Ну значит и так обойдусь. Это я уже совсем халявы захотел :)
[ Помилуйте, а разве сопоставить не вы должны были при сборке ?
Так я не собирал,я считал то что было в контроллере и теперь расковыриванием ассемблера занимаюсь. На днях попробую создать компилируемый исходник из нескльких разных дизассемблерных листингов и скормить его avr-gcc,точнее ассемблеру от него. Не так чтобы это было особо сильно необходимо для разбирательства,просто хочется поэкспериментировать с перекомпиляцией.
Заголовок сообщения: Re: А чем бы поизучать прошивку,считанную из AVR ?
Добавлено: Пт июл 05, 2024 23:52:41
Это не хвост, это антенна
Карма: 6
Рейтинг сообщений: 83
Зарегистрирован: Ср сен 03, 2008 21:42:17 Сообщений: 1354 Откуда: Ленинградская область,пос.Красный Остров
Рейтинг сообщения:0
Цитата:
Так он уже создан, и скомпилирован в AVR студии Пробуйте в железе.
Так а где скомпилированный-то? Я бы попробовал прошить. Впрочем - можно даже и не прошивать,а просто сравнить двоичные файлы на идентичность - то что было и то что скомпилировалось после дизассемблера. В идеале различий быть не должно. Если есть - смотреть насколько они существенны.
Увы - у меня под линуксом avr студии нет,всю жизнь avr-gcc пользуюсь (лет так двадцать). Под него исходник отдельно делать надо,там есть отличия. Сейчас несколько занят - пользуюсь хорошей погодой и заготавливаю дрова на зиму чтобы в домике тепло было :-)
Вобщем-то пересобрать я хотел лишь для того чтобы можно было вносить всякие отладочные правки для лучшего понимания как оно работает. Причем запускать вполне можно и под VMLAB - оно похоже от железа ничего особенного не требует.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения