Клон и последовательный порт

Тема в разделе "Arduino & Shields", создана пользователем Legista, 15 фев 2016.

  1. Legista

    Legista Нуб

    Друзья, я гуглю уже несколько дней и ничего не нахожу. Молю о помощи! :)
    Имею клон Arduino Uno. Установил драйвера CH340, все работает - загружаю программку, мигаю лампочкой, ок.
    Начинаю дальше двигаться, мне нужно получать данные через порт, и в процессе работы я обращаю внимание на всякий "мусор" в мониторе порта (неожидаемые символы).
    Хм... Проверяю всяко и на данный момент пришел к такой тестовой программке

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

    void loop()
    {
    int cnt = 1;
    while (cnt<500)
    {
    delay(10);
    cnt=cnt+1;
    Serial.println(cnt);
    }
    }

    Что в итоге? Циферки в мониторе бегут, но дальше 200 еще не добегали. Где-то на середине пути (на разных значениях) в мониторе появляются несколько символов (тоже рандомных) и.... отсчет начинает сначала, как-будто скетч сбрасывается полностью! А иногда просто все зависает и ничего не бежит. Я пробовал ВСЕ. Разную скорость порта в мониторе и в скетче соответственно (проверил все), разные настройки в драйвере порта в Windows (поменял все варианты - четность, контроль, буферы) - но ничего не помогает!
    Вопрошаю к вам - вдруг кто-то что-то подобное встречал в практике или в интернетах. Я не могу ничего найти :( Ну если вдруг это частный случай глюков клона - буду пытать судьбу и пробовать другой клон.
     
  2. Onkel

    Onkel Гуру

    скорее всего буфер забивается. Поставьте delay(20);
     
    Legista нравится это.
  3. shpock

    shpock Гик

    принтскрин скинте, подумаем
     
  4. shpock

    shpock Гик

    да нет, даже без delayЯ должно работать...
     
  5. Airbus

    Airbus Радиохулиган Модератор

    всё и так работает просто в порту правильно выставьте скорость 19200 (там по умолчанию 9600 вот и лезут кракозяблы)у меня лично всё заработало
     
  6. Legista

    Legista Нуб

    Я даже 100 ставлю - все равно такое происходит.
    Принтскрин чего?
    Там в столбик много цифр)
    Вот лучше плоттер.
     

    Вложения:

    • plt1.png
      plt1.png
      Размер файла:
      29,1 КБ
      Просмотров:
      585
  7. Legista

    Legista Нуб

    Я все выставил. Цифры идут, но сбрасывается и все сначала. Пару раз уже доходило до 500.. Но это из полусотни нажатий на Reset.
    Кракозяблы перед сбросом появляются только на 9600. На 19200 например нет кракозяблов, просто молча сбрасывается.
     
  8. shpock

    shpock Гик

    интересно.... а попробуйте добавить включение светодиода на 13 ноге при достижении 499 и выключении при 1. И все это без вывода в сэриал.
     
  9. Legista

    Legista Нуб

    Эту проверку я сделал в самом начале - я просто сделал
    int cnt = 1;
    while (cnt<500)
    {
    delay(10);
    cnt=cnt+1;
    }
    Serial.println(cnt);

    И он нормально выводит "500" через 5 секунд. То есть сбросы идут если в цикле именно происходит обращение к порту.
     
  10. Legista

    Legista Нуб

    Главное, что скетчи выгружаются нормально, ни разу ошибок не было. А вот именно с этим такой косяк. Ох уж этот китайский CH340, теперь понимаю скептическое отношение на форумах к нему. Наверно мой бракованный просто :(
     
  11. shpock

    shpock Гик

    Пробуйте другой драйверок, другой комп ....
     
  12. Legista

    Legista Нуб

    Мне прямо не ловко, но я как раз со второго компа уже. Сначала но ноуте все это проявилось, я сел за стационарник. Тоже хотел попробовать другой драйверок - да их нет. Все что я даже качал под разными названиями - в архиве были одни и те же файлы :)
    Да, я уже попробовал другой провод и даже подключить внешнее питание :rolleyes:
     
  13. shpock

    shpock Гик

    какая винда? и можно терминалку какую то попробовать
     
  14. Legista

    Legista Нуб

    Windows 7 x86 и 64.

    Терминалку..... :)
     

    Вложения:

    • scrn1.png
      scrn1.png
      Размер файла:
      39,2 КБ
      Просмотров:
      709
  15. Legista

    Legista Нуб

    Да, я добавил в setup строчку
    Serial.begin(9600);
    Serial.println("INIT");

    Действительно, происходит полный перезапуск скетча - когда начинается все сначала вызывается и setup() тоже.
     
  16. shpock

    shpock Гик

    а почему не используете терминал с Arduino IDE ?
     
    Legista нравится это.
  17. Onkel

    Onkel Гуру

    зависит от скорости.
    так что, c delay(20) не пробовали?
     
  18. Legista

    Legista Нуб

    Так я его и использую... Я подумал, что есть идея попробовать в какой-то другой терминалке, типа может встроенная глючит ))
    Я же написал - даже 100 пробовал. И даже 1000 - работает дольше, но все равно на каком-то числе сбрасывается.


    Я заметил, что если как-то надавить на УСБ порт, то доходит до 500. Я подумал, что дело в разъеме и сейчас вот прямо к плате припаял УСБ проводок. Но и это не помогло. Но сжатие в районе порта помогает. Наверно микротрещина.....

    Update. Вот прямо сейчас "помял" плату в районе чипа туда-сюда, перевернул, подвинул проводок - и прямо один за другим нормально доходит до 500.
    Так что 99,9% проблема механическая.
     
  19. shpock

    shpock Гик

    USB врятли, скорее где-то в цепи CH430 непропай.
     
    Legista нравится это.
  20. shpock

    shpock Гик

    возьмите что-нибудь тонинькое типа зубочистки (непроводящее) и по компонентам постучите, пошевелите, где - то непропай, врядли трещинка на дорожке.
     
    Legista нравится это.