Использование Serial1, Serial2, Serial3, Serial4 в плате Adafruit Grand Central M4

maks.dav
Offline
Зарегистрирован: 13.12.2015

Не могу использовать Serial2, Serial3, Serial4 в плате Adafruit Grand Central M4.

В файле variant.h на плату, порты, вроде как, обозначены следующим образом:

/*
 * Serial interfaces
 */
 
// Serial1
#define PIN_SERIAL1_RX      (0)
#define PIN_SERIAL1_TX      (1)
#define PAD_SERIAL1_TX      (UART_TX_PAD_0)
#define PAD_SERIAL1_RX      (SERCOM_RX_PAD_1)
 
// Serial2
#define PIN_SERIAL2_RX      (19)
#define PIN_SERIAL2_TX      (18)
#define PAD_SERIAL2_TX      (UART_TX_PAD_0)
#define PAD_SERIAL2_RX      (SERCOM_RX_PAD_1)
#define SERCOM_SERIAL2   sercom4
 
// Serial3
#define PIN_SERIAL3_RX      (17)
#define PIN_SERIAL3_TX      (16)
#define PAD_SERIAL3_TX      (UART_TX_PAD_0)
#define PAD_SERIAL3_RX      (SERCOM_RX_PAD_1)
#define SERCOM_SERIAL3   sercom1
 
// Serial4
#define PIN_SERIAL4_RX      (15)
#define PIN_SERIAL4_TX      (14)
#define PAD_SERIAL4_TX      (UART_TX_PAD_0)
#define PAD_SERIAL4_RX      (SERCOM_RX_PAD_1)
#define SERCOM_SERIAL4   sercom5
 
И в конце файла есть строки:
 
#ifdef __cplusplus
 
/* =========================
 * ===== SERCOM DEFINITION
 * =========================
*/
extern SERCOM sercom0;
extern SERCOM sercom1;
extern SERCOM sercom2;
extern SERCOM sercom3;
extern SERCOM sercom4;
extern SERCOM sercom5;
extern SERCOM sercom6;
extern SERCOM sercom7;
 
extern Uart Serial1;

extern Uart Serial2;     //Добавил сюда сам

extern Uart Serial3;     //Добавил сюда сам

extern Uart Serial4;     //Добавил сюда сам

 
#endif
 
// These serial port names are intended to allow libraries and architecture-neutral
// sketches to automatically default to the correct port name for a particular type
// of use.  For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
// the first hardware serial port whose RX/TX pins are not dedicated to another use.
//
// SERIAL_PORT_MONITOR        Port which normally prints to the Arduino Serial Monitor
//
// SERIAL_PORT_USBVIRTUAL     Port which is USB virtual serial
//
// SERIAL_PORT_LINUXBRIDGE    Port which connects to a Linux system via Bridge library
//
// SERIAL_PORT_HARDWARE       Hardware serial port, physical RX & TX pins.
//
// SERIAL_PORT_HARDWARE_OPEN  Hardware serial ports which are open for use.  Their RX & TX
//                            pins are NOT connected to anything by default.
#define SERIAL_PORT_USBVIRTUAL      Serial
#define SERIAL_PORT_MONITOR         Serial
// Serial has no physical pins broken out, so it's not listed as HARDWARE port
#define SERIAL_PORT_HARDWARE        Serial1
#define SERIAL_PORT_HARDWARE_OPEN   Serial1
 
#define SERIAL_PORT_HARDWARE 1       Serial2          //Добавил сюда сам
#define SERIAL_PORT_HARDWARE_OPEN1   Serial2     //Добавил сюда сам
#define SERIAL_PORT_HARDWARE2        Serial3          //Добавил сюда сам
#define SERIAL_PORT_HARDWARE_OPEN2   Serial3     //Добавил сюда сам
#define SERIAL_PORT_HARDWARE3        Serial4          //Добавил сюда сам
#define SERIAL_PORT_HARDWARE_OPEN3   Serial4     //Добавил сюда сам
 
#endif /* _VARIANT_GRAND_CENTRAL_M4_ */
 

Что ещё куда добавить, чтобы среда подхватывала Serial2, Serial3, Serial4 при компиляции? А то пишет, что 'Serial2' was not declared in this scope, и так же для Serial3, Serial4.

C Serial и Serial1 при компиляции проблем нет

maks.dav
Offline
Зарегистрирован: 13.12.2015

Может существует вообще какая документация по созданию или редактированию параметров плат?? а то мне, по хорошему, не мешало бы ещё так же второй SPI вытащить

rkit
Offline
Зарегистрирован: 23.11.2016

Может ты лучше документацию на свою плату прочитаешь?

maks.dav
Offline
Зарегистрирован: 13.12.2015

rkit пишет:

Может ты лучше документацию на свою плату прочитаешь?

Читал

Чем она мне поможет в данном случае?

maks.dav
Offline
Зарегистрирован: 13.12.2015

в ней производитель расписывает, как допилить функционал их платы до нужного??)))

maks.dav
Offline
Зарегистрирован: 13.12.2015

Добавил инициализацию в файл variant.cpp

Uart Serial2 (&sercom4, PIN_SERIAL2_RX, PIN_SERIAL2_TX, PAD_SERIAL2_RX, PAD_SERIAL2_TX ) ;
Uart Serial3 (&sercom1, PIN_SERIAL3_RX, PIN_SERIAL3_TX, PAD_SERIAL3_RX, PAD_SERIAL3_TX ) ;
Uart Serial4 (&sercom5, PIN_SERIAL4_RX, PIN_SERIAL4_TX, PAD_SERIAL4_RX, PAD_SERIAL4_TX ) ;
 
В нём имеются методы:
void SERCOM0_0_Handler()
{
  Serial1.IrqHandler();
}
void SERCOM0_1_Handler()
{
  Serial1.IrqHandler();
}
void SERCOM0_2_Handler()
{
  Serial1.IrqHandler();
}
void SERCOM0_3_Handler()
{
  Serial1.IrqHandler();
}

Я так понимаю, их так же нужно реализовать для остальных используемых SERCOM4, SERCOM1, SERCOM5?

И что это вообще за обработчики, за что они отвечают?

maks.dav
Offline
Зарегистрирован: 13.12.2015

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

Всё-таки есть сомнения в методах, т.к. не могу проследить, где они вызываются:

void SERCOM4_0_Handler()
{
  Serial2.IrqHandler();
}
void SERCOM1_0_Handler()
{
  Serial3.IrqHandler();
}
void SERCOM5_0_Handler()
{
  Serial4.IrqHandler();
}
 
и т.д.

 

rkit
Offline
Зарегистрирован: 23.11.2016

maks.dav пишет:

Читал

Врешь.

maks.dav
Offline
Зарегистрирован: 13.12.2015

rkit пишет:

maks.dav пишет:

Читал

Врешь.

Может пойдут по существу какие-то ответы? или будешь дальше засорять ветку??

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

maks.dav пишет:

Может пойдут по существу какие-то ответы?

Пойдут. Вставьте код правильно! Пять лет на форуме, блин!

maks.dav
Offline
Зарегистрирован: 13.12.2015

ЕвгенийП пишет:

Пять лет на форуме, блин!

Да плевать, сколько лет на форуме, всего раз 5 за все время заходил, когда какая-нибудь ерунда прижмет и приходится самому в этом дерьме ковыряться. В отличии от вас, я не живу на этом форуме и моя работа далека от ардуинок, поэтому, думаю, мне позволительно чего-то не знать и немного потупить.

ЕвгенийП пишет:

Вставьте код правильно!

Про какой код идёт речь, и куда его правильно вставлять??

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Про исходный код. В этом разделе есть прикреплённая тема про вставку кода. В таком виде его никто даже и смотреть не будет.

maks.dav
Offline
Зарегистрирован: 13.12.2015

Jeka_M пишет:

Про исходный код. В этом разделе есть прикреплённая тема про вставку кода. В таком виде его никто даже и смотреть не будет.

Благодарю, добрый человек, за разъяснение!) А то разговаривают загадками - поди догадайся, что имелось ввиду)