Світлодіодний рядок, що біжить (допоможіть розібратися)
Попросили мене допомогти з рядком, що біжить, ну така, як в автобусах ставлять, наприклад. А саме: рядок заточений під роботу через інтернет, а потрібно його «переточити», щоб він дані баралу просто з ПК (короче викинути повністю частину з модемом). Власне завдання начебто зрозуміле, але зі своїм рівнем знань, боюся, сам не впораюся (ну це і не страшно, бо якщо не впораюся, просто віддам назад, але хотілося б допомогти людині).
Отже, хто допоможе у реверс-інжинірингу? :) А може хто з такими вже працював, і у вас є інформація, доки?
Для початку ось як воно виглядає:
Затягнуто вийшло, навіщось намагався чіпи зняти, потім подумав, що простіше сфотографуватиме…
Живлення 5 вольт.
Сам рядок, що біжить, складається з 3-х секцій, з'єднаних послідовно. По 4 світлодіодні матриці 8x8 на кожній секції. Так само на кожній секції присутні такі елементи: 1) toshiba japan tb62706bng 5e9ka 2шт. - 16BIT SHIFT REGISTER, LATCHES & CONSTANT CURRENT DRIVERS 2) 74hc138d 1шт. - 3-to-8 line decoder/demultiplexer; inverting 3)in74ac244 1шт. - Octal 3-State Noninverting Buffer/Line Driver/Line Receiver Ну і кілька інших деталей.
У першу секцію встромляється (у роз'єм 2x8 пін) блок управління, на ньому присутні: 1) atmega128L-8au 1шт - так розумію, вона і командує парадом 2) at45db041b-tu 1шт - флеш-пам'ять 3) 74act244 1шт - Octal Non-Inverting Buffers/Line Drivers with 3-State Outputs 4) 74hc573d 1шт - Octal D-type transparent latch; 3-state 5) BSI BS62LV256SCP70 1шт - Very Low Power CMOS SRAM, 32K X 8 bit 6) motorola g24 data module model:
Так само на блоці управління маємо роз'єм для сімки і три штирьові роз'єми: 1) 2x8 — встромляється в рядок, що біжить На вигляд: два крайні ліві контакти — мінус живлення наступні два ліворуч — замкнуті між собою, йдуть до 74act244 потім наступні два по два взагалі ні до чого не йдуть (на просвіт не видно, плата на просвіт начебто як двошарова всього) потім наступні два - знову замкнуті, йдуть до 74act244 потім 4 контакти - йдуть до 74act244 два крайніх правих - відповідно плюс харчування
2) 2x3 - я відразу подумав "ISP", а ніфіга! Насправді і справді ISP, а я знову — сам дурень. Поки що зателефонував: — + харчування — земля — 2 і 3 ноги меги — 11 нога меги SCK — 20 нога меги RESET
3) 1x4 - я відразу подумав «UART», а також повз! — земля — 7, 8, і 9 ноги меги О_о Втрачаюсь у здогадах, гм, може це роз'єм для підключення кнопок управління? При включеному живленні двох з них висить 3,3 вольта, але в останньої 0,03 вольта.
Варіанти розв'язання задачі:1) Розібратися в системі команд рідних мізків і змусити їх дані на рядок виводити без коннекту за модемом, просто з комп'ютера ПК 2) Якщо перший варіант обламається, повністю позбутися від мізків (жовтої плати), замість них розвести свою зі своїми мізками 3)Update:написати власну прошивку і залити її в мізки, правда шкода тоді буде дарма модем на хустці простоювати
Насамперед, здається, потрібно спробувати підключитися по UART. Мабуть не вийде, тому що це не УАРТ виявився, а просто на ньому і ISP висить ...
Хто що скаже, порадить?
Update1:Так як роз'єм 2x3 таки виявився ISP, як я спочатку і подумав, підключився до нього і злив прошивку (дивитися в атачі, внизу). Ось тут би мені, напевно, стали б у нагоді знання асемблера та вміння дизассемблювати тощо, але, грішний — каюся, я цього всього не знаю і не вмію… У зв'язку з цимвиник 3 варіант рішення (див. вище). Заодно такі фузи: High C9 Low BF Ext FF Lock 3F
Update2:(Ось, з'явився час, сів помозгувати.) Як спочатку і планував - плюнув на рідні мізки і став вивчати роз'єм 2x8 на предмет самостійного управління цією фігнею.
Насправді на цьому роз'єм ми маємо: > 2 лінії - живлення (5.2 вольт) > 6 ліній - управління (всі підтягнуті резюками на 6 або 12 ком до +, тобто керуємо - перетягуючи до мінуса): >> 3 лінії - управління рядками 23 = 8 рядків, тобто. за їх різної комбінації горить певний рядок >> 3 лінії - управління стовпцями (а тут маємо зсувний регістр): >>> 1 лінія - дані >>> 1 лінія - клок/такт >>> 1 лінія — enable+latch Ось і всього діл :)
Алгоритм простий: 1) Відпускаємо Enable 2) Видаємо 96 біт даних (перший рядок) у лінію даних (тактуємо через клаптик) 3) Видаємо потрібну комбінацію на лінії управління рядками, щоб запалити перший рядок 4) Даємо Enable 5) Повторюємо пункти 1-4 для решти 7 рядків 6) PROFIT :)
Тепер треба залізницю розробити. Тобто залізниця проста до мозку кісток. Коротше, пішов думати над залізкою. В наявності є меги 8 і 16, в ідеалі було б зробити на V-USB, щоб перехідник на комп'ютер не плодити, але це не так критично насправді. Та й софт писати. :)
Update3:Рано я радів, уточнив мені тут чоловічок, що йому потрібно не просто з комп'ютера працювати, а щоб з комп'ютера тільки вивантажувати дані, а працювати воно автономно потім повинно. Ялинки… Отже фішка простого рішення в лоба вже не прокотить. Значить потрібна пам'ять тощо, отже мізки доведеться таки рідні використати, і розбиратися вже з пам'яттю на них, а щастя було так близько…
Update4:Хм, ну поки суд та справа (мені обіцяли програму вислати, яка формує дані для рядка, і з якої хотіли якраз працювати, чекаю), підзапилив свого коду трошки: змусив рядок працювати від своїх мізків (не не у прямому звичайно сенсі, хоча) з ПК (з програмуліни на Delphi). Алгоритм такий: 1) Делфі виводить на картинку текст, далі побайтово картинку читає та відправляє ці байти (12x8=96) по UART 2) МК з переривання від таймера постійно малює те, що в 1 буфері на екран, а після переривання від UART пише те, що прийшло у 2 буфер 3) Як тільки 2 буфер повністю заповнюється, МК змінює буфери місцями 4) Делфі зрушує напис на картинці, і знову пункт 1 Ось що вийшло:
Біжить рядок нормально, чорні пропуски - це просто так частота камери з оновленням рядків збіглася :)
Update5:У результаті прийшов до наступного: ATmega328 + SD карта. Здається, поставлене завдання виконано. Автономність і простота: беремо SD карту, вставляємо в ПК, у програмі, яку мені надав власник рядка, створюємо скрипт і зберігаємо на карту (благо в тій програмі є така функція, хоча могли зробити і просто збереження у файл, але ж ні, тільки на карту пам'яті, причому з карти при цьому все видаляється, наскільки чорт? Далі запускаємо невелику програму, яка файл скрипту трохи модифікує (дуже боляче у оригінального файлу структура не оптимальна). Потім карту вставляємо в рядок, що біжить, включаємо рядок, PROFIT? Здається так. Ось:
Update6 (останній):в якості логічного завершення додаю фото, як тепер ззаду виглядає світлодіодний рядок:
