Адаптация ATMEGA1284 к светодиодной матрице
- Войдите на сайт для отправки комментариев
Вс, 28/11/2021 - 14:18
есть скетч для мега 2560 мне нужно перенсти его на атмега1284 - есть некоторые морменты мне не понятные.
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) // Arduino Mega is now tested and confirmed, with the following caveats: // Because digital pins 2-7 don't map to a contiguous port register, // the Mega requires connecting the matrix data lines to different pins. // Digital pins 24-29 are used for the data interface, and 22 & 23 are // unavailable for other outputs because the software needs to write to // the full PORTA register for speed. Clock may be any pin on PORTB -- // on the Mega, this CAN'T be pins 8 or 9 (these are on PORTH), thus the // wiring will need to be slightly different than the tutorial's // explanation on the Uno, etc. Pins 10-13 are all fair game for the // clock, as are pins 50-53. #define DATAPORT PORTA ///< RGB data PORT register #define DATADIR DDRA ///< RGB data direction register #define CLKPORT PORTB ///< RGB clock PORT register #elif defined(__AVR_ATmega32U4__) // Arduino Leonardo: this is vestigial code an unlikely to ever be // finished -- DO NOT USE!!! Unlike the Uno, digital pins 2-7 do NOT // map to a contiguous port register, dashing our hopes for compatible // wiring. Making this work would require significant changes both to // the bit-shifting code in the library, and how this board is wired to // the LED matrix. Bummer. #define DATAPORT PORTD ///< RGB data PORT register #define DATADIR DDRD ///< RGB data direction register #define CLKPORT PORTB ///< RGB clock PORT register #elif defined(ARDUINO_ARCH_SAMD) || defined(ARDUINO_ARCH_ESP32) // Support for ATSAMD21-based boards, done with PortType! #else // Ports for "standard" boards (Arduino Uno, Duemilanove, etc.) #define DATAPORT PORTD ///< RGB data PORT register #define DATADIR DDRD ///< RGB data direction register #define CLKPORT PORTB ///< RGB clock PORT register #endif
из этого следует что матрица по RGB подключена к порту D а потр тактирования B?
вот сама схема проекта
далее в скетче указано
это непосредственно ножки микроконтроллера?
atmega1284 arduino pinout
а в чем проблема добавить:
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1284__)
да собственно оно и по умолчанию на этот порт ссылается - вот только тактирование на порт В - поставил на порт А дальше
тоже поменял
простите, если вы не понимаете, что такое порт А и портВ - зачем лезете менять? чем вам не угодил порт тактирования В - неужеди у атмеги 1280 нет порта В ?
Скорее всего в коде управление матрицей и тактом идет через регистры - и если вы в заголовке что-то меняете, придется все менять и в коде.
вверху схема - и уже готовая плата - надо адаптировать. в pic18?dspic33 такой проблемы не существует - а здесь это для меня новый подход.
да и чем он там отличается? ну могут же аналоговый входа работать как цифровые!
у вас там на схеме CLK и так подключен к порту В - не пойму. что вы там меняете
да и чем он там отличается? ну могут же аналоговый входа работать как цифровые!
тем, что по программе пины данных матрицы должны быть последовательными выходами одного порта. произвольно их менять нельзя, работать не будет.
Может и CLK тоже ограничение есть.
У меня есть своя библиотека под такие матрицы - так у меня пины данных и клока ДОЛЖНЫ БЫТЬ на одном физическом порту, так алгоритм постоен. На разных портах не заработает.
проблемы не закончились - не стартует МК этого достаточно для программирования фьюзов?
насколько критичны емкости конденсаторов на осциляторе
zumer67, не надо дублировать вопросы из темы в тему - это нарушение правил.
Я вам в той теме уже ответил.