Библиотека программных материалов для плат SAMD

У меня есть три платы, которые я использую для тестирования этого (измененного) кода:

int sensor1Pin = A0;
int sensor2Pin = A1;
int sensor3Pin = A2;


float sensors[] = {0,0,0};

void setup(){
Serial.begin(9600);
}

void loop(){

sensors[0] = analogRead(sensor1Pin);
sensors[1] = analogRead(sensor2Pin);
sensors[2] = analogRead(sensor3Pin);

Serial.print(sensors[0]);
Serial.print(",");
Serial.print(sensors[1]);
Serial.print(",");
Serial.println(sensors[1]);
}

Uno, Перо M0 и MKR1000. Код будет работать только на Uno, потому что он основан на AVR, в то время как две другие платы-SAMD. При запуске на пере вы получаете эту ошибку:

/home/ghylama/Arduino/libraries/SoftwareSerial_master/SoftwareSerial.cpp:260:2: error: #error This version of SoftwareSerial supports only 20, 16 and 8MHz processors
     #error This version of SoftwareSerial supports only 20, 16 and 8MHz processors

Однако разрешение UNO слишком низкое для моих целей (его ЦАП имеет разрешение 10, тогда как мне нужно разрешение 12, минимум). Существуют ли какие-либо библиотеки/обходные пути, которые можно использовать для этой цели?

Я пробовал SoftwareSerial, NeoSWSerial и этот.

, 👍0

Обсуждение

Извините, я в замешательстве, в чем именно заключается вопрос? Как добавить последовательные порты (/UART) в ваш Feather M0? Или о ЦАПЕ? Однако здесь вы используете "analogRead", который использует АЦП., @Maximilian Gerhardt

Какое отношение серийный номер имеет к разрешению ЦАП (АЦП?)?, @gre_gor

Извините, если моя формулировка была неясной, но я занимаюсь этим уже некоторое время, так что у меня есть туннельное зрение. Запуск этого кода на пере приводит к этой ошибке: Arduino/библиотеки/SoftwareSerial_master/SoftwareSerial.cpp:260:2:ошибка: #ошибка Эта версия программного обеспечения поддерживает только процессоры 20, 16 и 8 МГц #ошибка Эта версия программного обеспечения поддерживает только процессоры с частотой 20, 16 и 8 МГц Дело в том, что я могу запустить это на Uno без проблем, но я хочу, чтобы это было на пере. ЦАП не имеет ничего общего с последовательным, но это мое ограничение. Мне нужна библиотека, которая выполняет ту же работу, что и SoftwareSerial, но для M0., @rddead

Зачем вам нужно *программное обеспечение* последовательный? Как правило, часть РУКИ будет иметь несколько *аппаратных* последовательных портов., @Chris Stratton

@gre_gor Сериал не имеет к этому никакого отношения. Моя проблема в том, что я пытаюсь заставить библиотеку SoftwareSerial работать на устройствах, для которых она не была предназначена. Мне нужно, чтобы он работал на устройстве с более высоким разрешением DAC (Duo, ноль, перо)., @rddead

@ChrisStratton Я пытаюсь сохранить данные с трех датчиков на листе Excel. Я хотел сделать это с помощью обработки + Arduino IDE с кодом по этой ссылке: http://www.hackerscapes.com/2014/11/how-to-save-data-from-arduino-to-a-csv-file-using-processing/ Есть ли лучший способ?, @rddead

Это не имеет ничего общего с *программным обеспечением* последовательным, любая последовательная реализация должна работать. software serial *взлом*, чтобы справиться с тем фактом, что классический Arduino имеет только 1 порт., @Chris Stratton

@ChrisStratton Это есть в исходном коде Arduino, строка 27. Это показалось мне довольно важным, поэтому я оставил его внутри. Значит, этот пример сработал бы и без него?, @rddead

Нет, это не имеет ничего общего с алгоритмом и *все* связано с ограничениями ATmega328P. **Который вы не используете**. Если вы собираетесь запускать программы, которые вы не понимаете, и спорить с людьми, которые вам их объясняют, то вам нужно придерживаться того, чтобы делать все *точно* так, как описано, *не* пытаясь запускать их на альтернативном оборудовании., @Chris Stratton

@ChrisStratton Я не спорю, я просто хочу понять то, что, казалось бы, очевидно для всех остальных. Извини, если так получилось. Теперь, когда вы объяснили, что такое software serial, я понял. Поэтому, поскольку эта библиотека используется только в качестве исправления ограничений, я удаляю эту строку., @rddead


1 ответ


Лучший ответ:

2

Я повторю проблему так, как я ее понял: вам нужно больше последовательных объектов, то есть больше портов UART.

На вашем Adafruit Feather M0 с микроконтроллером SAMD21G18 Cortex-M0+ у вас есть шесть периферийных устройств SERCOM, которые вы можете произвольно настроить в качестве порта UART, I2C или SPI. Каждое периферийное устройство может подключаться к нескольким различным контактам на плате. Это очень универсальное оборудование.

Не используйте библиотеку программных материалов, созданную для микроконтроллеров AVR, когда у вас есть оборудование. В руководстве Adafruit показано, как вы можете перенастроить эти SERCOM для получения дополнительных последовательных объектов.

https://learn.adafruit.com/using-atsamd21-sercom-to-add-more-spi-i2c-serial-ports?view=all#creating-a-new-serial

,