Даже если вы новичок в работе с Raspberry Pi Pico, но понимание того, что в микроконтроллере RP2040 есть два ядра наводит на мысли, что скорость обработки в сочетании с наличием двух ядер может обеспечить интересный потенциал по сравнению со многими семействами плат Arduino.

Но для того, чтобы иметь возможность делегировать различные задачи 2 ядрам путем передачи информации, полученной во время их соответствующей обработки, необходимо иметь систему обмена сообщениями и синхронизации. В связи с этим в данном материале мы покажем основы реализации двухъядерной многозадачности при программировании Raspberry Pi Pico в среде Arduino IDE.
Мы покажем решение, в котором размер буферов данных обмена мог бы быть потенциально ограничен только доступной памятью. Итак, для начала создайте следующий экземпляр:
#define PICO_EMPTY true
PicoSem Sem(PICO_EMPTY,PICO_EMPTY);
И затем вы можете использовать следующие вызовы, помня, что допустимые значения параметра core равны 0 и 1:
void setDataEmptyFor(uint8_t core);
Вызывается, чтобы сказать, что буфер данных для ядра core пуст, поэтому готов принять новый набор данных:
bool canISendTo(uint8_t core);
Вернется true, если мы можем отправить новый набор данных в ядро core.
void setDataReadyFor(uint8_t core);
Вызывается, чтобы сказать, что мы только что написали новый набор данных для ядра:
void setDataReadBy(uint8_t core);
Вызывается, чтобы сказать, что мы только что прочитали последний набор данных:
bool anyDataFor(uint8_t core);
Вернется true, если есть новый набор данных, готовый для ядра core.
© digitrode.ru