Управление через COM

Тема в разделе "Arduino & Shields", создана пользователем EAZ, 23 апр 2015.

  1. EAZ

    EAZ Нуб

    Здравствуйте!
    Вопрос - наладил более-менее установку уровня ЦАП на Arduino Due с компьютера (интерфейс написан на С++), однако при циклической записи через некоторое количество циклов запись прекращается и устанавливается нулевой уровень.
    В чем может быть дело?
     
  2. Megakoteyka

    Megakoteyka Оракул Модератор

    Будете ждать телепата или покажете свои исходники?
     
  3. EAZ

    EAZ Нуб

    Скетч ардуино:
    Код (Text):
    int in;

    void setup() {
    analogReadResolution(8);
    analogWriteResolution(8);
    Serial.begin(9600);
    }

    void loop() {

    while (Serial.available() == 0);
    in = Serial.read();
    analogWrite(DAC1, in);
    Serial.println(in);
    }
    Для интерфейса использовались cpp и header отсюда:
    http://playground.arduino.cc/Interfacing/CPPWindows

    Код отправки:
    Код (Text):
            char buf[256]="";
         
            while(com1.IsConnected())
            {
            buf[0]=1;
            com1.WriteData(buf,1);
            buf[0]=255;
            com1.WriteData(buf,1);
            }
    На выходе получаем что-то похожее на меандр, частота которого зависит от скорость передачи данных, который вскоре пропадает.
     
  4. Megakoteyka

    Megakoteyka Оракул Модератор

    Попробуйте в код выдачи добавить задержку между байтами и посмотрите что будет.
     
  5. EAZ

    EAZ Нуб

    Не помогло. Количество нормальных циклов при записи со скоростью 9600 оставило ~12000.
    При введении задержки 10 мсек - 4000 раз.
    Без задержки со скоростью 115200 - те же 4000 раз.

    После этого количества циклов запись не прекращается, но очень сильно замедляется - 1-2 цикла в секунду.
    То есть функция WriteData не возвращает false.