Arduino Due не может получить доступ к библиотеке

Я не могу запустить код на Arduino Due, что ранее я запускал на Arduino Uno. Ошибка указывает на то, что он не может распознать библиотеку. Может ли эта проблема доступа к библиотеке быть вызвана различием микроконтроллеров 2-х плат?

, 👍2

Обсуждение

Пожалуйста, отредактируйте свой вопрос, чтобы включить точное и полное сообщение об ошибке. Пожалуйста, также предоставьте минимальный, полный пример демонстрационного скетча (который должен быть просто оператором "#include", за которым следуют пустые "setup ()" и " loop()`)., @per1234


1 ответ


1

Вполне возможно. Современный формат библиотеки содержит список типов плат, на которых она работает (в разделе library.properties). Если Due (SAM) не указан в списке, то он не будет включен в список библиотек.

Например, библиотека SD имеет:

name=SD
version=1.1.1
author=Arduino, SparkFun
maintainer=Arduino <[email protected]>
sentence=Enables reading and writing on SD cards. 
paragraph=Once an SD memory card is connected to the SPI interface of the Arduino or Genuino board you can create files and read/write on them. You can also move through directories on the SD card.
category=Data Storage
url=http://www.arduino.cc/en/Reference/SD
architectures=*

Однако специфичная для AVR библиотека SPI имеет:

name=SPI
version=1.0
author=Arduino
maintainer=Arduino <[email protected]>
sentence=Enables the communication with devices that use the Serial Peripheral Interface (SPI) Bus.  
paragraph=SPI is a synchronous serial data protocol used by microcontrollers for communicating with one or more peripheral devices quickly over short distances. It uses three lines common to all devices (MISO, MOSI and SCK) and one specific for each device.
category=Communication
url=http://www.arduino.cc/en/Reference/SPI
architectures=avr

Обратите внимание на последнюю строку каждой из них - architectures=... - которая определяет, с чем может работать библиотека. Если ваша (неопределенная) библиотека не имеет * или не включает sam в этот параметр, то эта библиотека не будет работать с Due.

,

Да, должного раньше не было в списке. Я установил Due из диспетчера плат. Он способен запускать другие программы . В настоящее время он не может получить доступ к библиотеке DFT, которую я ранее запускал на Arduino Uno., @Akash Vakil

Я не говорю о поддержке плат. Я говорю о том, сможет ли библиотека когда-нибудь поддержать Должного. Если это современный макет с "library.properties" и он не предназначен для работы в Due, то IDE даже не увидит, что он существует - что бы вы ни делали., @Majenko

"IDE даже не увидит, что он существует". Это неверно. Arduino IDE все равно попытается скомпилировать библиотеку, даже если значение architectures в library.properties не соответствует архитектуре выбранной платы. Если компиляция может продолжаться после предварительной обработки, то Arduino IDE отобразит полезное предупреждение: "ПРЕДУПРЕЖДЕНИЕ: библиотека FooBar утверждает, что работает на архитектуре (avr) и может быть несовместима с вашей текущей платой, которая работает на архитектуре (avr)". Примеры библиотеки также появятся в разделе Файл > Примеры > НЕСОВМЕСТИМЫЕ., @per1234

Теперь библиотеки, такие как SPI, которые поставляются с аппаратными пакетами, видны IDE только тогда, когда выбрана плата этого аппаратного пакета, но это не имеет ничего общего со значением "архитектуры" в library.properties, оно контролируется исключительно папкой, в которой находится библиотека., @per1234