Due не читает COM порт
- Войдите на сайт для отправки комментариев
Пт, 16/10/2015 - 22:14
Добрый день!
Стокнулся со следующей проблемой: есть плата Adruino Due. Надо прочитать данные с COM порта.
Задача тривиальная, но плата почему-то не видит входного потока данных.
Меняю ее на Мегу - все работает. Заливаю тот же скетч и все работает
Для проверки набросал скетч, который пишет данные в файл и параллельно выводит на монитор (см. ниже):
#include <Wire.h> #include <SD.h> #include <stdio.h> #include <SPI.h> const int chipSelect = 4; // On the Ethernet Shield, CS is pin 4 int incomingByte = 0; // переменная для хранения байта данных, //принятых по последовательному интерфейсу File dataFile; void setup() { Serial.begin(9600); // открываем последовательный порт Serial3.begin(9600); // задаем скорость передачи данных 9600 бод Serial2.begin(9600); Serial1.begin(9600); Serial.print("Initializing SD card..."); // ВЫВОД ИНФОРМАЦИИ ОБ ИНИЦИАЛИЗАЦИИ КАРТЫ ПАМЯТИ // make sure that the default chip select pin is set to // output, even if you don't use it: pinMode(10, OUTPUT); // see if the card is present and can be initialized: if (!SD.begin(chipSelect)) { Serial.println("Card failed, or not present"); // ВЫВОД ИНФОРМАЦИИ ОБ ИНИЦИАЛИЗАЦИИ КАРТЫ ПАМЯТИ // don't do anything more: return; } Serial.println("card initialized."); // ВЫВОД ИНФОРМАЦИИ ОБ ИНИЦИАЛИЗАЦИИ КАРТЫ ПАМЯТИ */ } void loop() { // отправляем данные только после их получения: if (Serial3.available() > 0) { dataFile = SD.open("COM_3.DAT", FILE_WRITE); incomingByte = Serial3.read(); dataFile.write(incomingByte); Serial.print(incomingByte); } if (Serial2.available() > 0) { dataFile = SD.open("COM_2.DAT", FILE_WRITE); incomingByte = Serial2.read(); dataFile.write(incomingByte); Serial.print(incomingByte); } if (Serial1.available() > 0) { dataFile = SD.open("COM_1.DAT", FILE_WRITE); incomingByte = Serial1.read(); dataFile.write(incomingByte); Serial.print(incomingByte); } if (Serial.available() > 0) { dataFile = SD.open("COM_0.DAT", FILE_WRITE); incomingByte = Serial.read(); dataFile.write(incomingByte); Serial.print(incomingByte); } dataFile.close(); }
Проблема в коде или железо глючит?