Адаптация ATMEGA1284 к светодиодной матрице

zumer67
Offline
Зарегистрирован: 17.06.2021

есть скетч для мега 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? 

zumer67
Offline
Зарегистрирован: 17.06.2021

вот сама схема проекта 

zumer67
Offline
Зарегистрирован: 17.06.2021

далее в скетче указано 

// управляющие пины матрицы
#define CLK   1
#define OE    2
#define LAT   3
#define A     A5
#define B     A4
#define C     A3
#define D     A3

это непосредственно ножки микроконтроллера? 

Green
Offline
Зарегистрирован: 01.10.2015

atmega1284 arduino pinout

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

а в чем проблема добавить:
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1284__)

zumer67
Offline
Зарегистрирован: 17.06.2021

да собственно оно и по умолчанию на этот порт ссылается - вот только тактирование на порт В - поставил на порт А дальше 

1
// управляющие пины матрицы
2
#define CLK   1
3
#define OE    2
4
#define LAT   3
5
#define A     A5
6
#define B     A4
7
#define C     A3
8
#define D     A3

тоже поменял 

b707
Offline
Зарегистрирован: 26.05.2017

простите, если вы не понимаете, что такое порт А и портВ - зачем лезете менять? чем вам не угодил  порт тактирования В - неужеди у атмеги 1280 нет порта В ?

Скорее всего в коде управление матрицей и тактом идет через регистры - и если вы в заголовке что-то меняете, придется все менять и в коде.

zumer67
Offline
Зарегистрирован: 17.06.2021

вверху схема  - и уже готовая плата - надо адаптировать.  в pic18?dspic33 такой проблемы не существует - а здесь это для меня новый подход.

zumer67
Offline
Зарегистрирован: 17.06.2021

да и чем он там отличается? ну могут же аналоговый входа работать как цифровые! 

b707
Offline
Зарегистрирован: 26.05.2017

у вас там на схеме CLK и так подключен к порту В - не пойму. что вы там меняете

b707
Offline
Зарегистрирован: 26.05.2017

zumer67 пишет:

да и чем он там отличается? ну могут же аналоговый входа работать как цифровые! 

тем, что по программе пины данных матрицы должны быть последовательными выходами одного порта. произвольно их менять нельзя, работать не будет.

Может и CLK тоже ограничение есть.

У меня есть своя библиотека под такие матрицы - так у меня пины данных и клока ДОЛЖНЫ БЫТЬ на одном физическом порту, так алгоритм постоен. На разных портах не заработает.

zumer67
Offline
Зарегистрирован: 17.06.2021

проблемы не закончились - не стартует МК этого достаточно для программирования фьюзов? 

 

zumer67
Offline
Зарегистрирован: 17.06.2021

насколько критичны емкости конденсаторов на осциляторе

b707
Offline
Зарегистрирован: 26.05.2017

zumer67, не надо дублировать вопросы из темы в тему - это нарушение правил.

Я вам в той теме уже ответил.