User Tag List

Страница 2 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 11 по 20 из 42

Тема: Вопросы начинающего Ардуинщика...

  1. #11

    Регистрация
    20.03.2007
    Адрес
    Санкт-Петербург
    Сообщений
    3,000
    Спасибо Благодарностей отдано 
    201
    Спасибо Благодарностей получено 
    113
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Уже нашёл. Для проверки на возможность считывания из буфера, достаточно конструкции if (Serial.available(), т.е. без > 0. Данная функция после выполнения возвращает false, если в буфере 0 (буфер пуст); и true, если в буфере есть любое количество байт (в пределах размера буфера) для чтения.

    - - - Добавлено - - -

    SoftWareGuy, спасибо. Я там ниже ответил, что функция в if возвращает только логическое значение, а через переменную - числовое.
    МГТФ - любимый провод!
    KAY-1024(4096)/SL-4/TURBO v2010 + Nemo-FDC + Nemo-IDE (CF 4GB) + SMUC2 Rev.B RTC (HDD 1.6GB + DVD-ROM) + PROF-ROM + ZXMC2 + GENERAL SOUND 2MB + ZX-BUS_TEE + FDD 3.5' + FDD 5.25' + VGA&PAL

  2. #12

    Регистрация
    10.07.2005
    Адрес
    Ставрополь
    Сообщений
    1,158
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    61
    Поблагодарили
    34 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ...я влезу на секундочку: как в Ардуино ИДЕ писать код не на Си, а на ассмблере? А с учётом нескольких входных файлов на ассемблере? Просто есть проект (многофайловый) на асме, его нужно немного подкорректировать, а вот коррекцию можно и на Си сделать.

  3. #13

    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,870
    Спасибо Благодарностей отдано 
    522
    Спасибо Благодарностей получено 
    251
    Поблагодарили
    225 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SoftFelix Посмотреть сообщение
    Данная функция после выполнения возвращает false, если в буфере 0 (буфер пуст); и true, если в буфере есть любое количество байт (в пределах размера буфера) для чтения
    о чем я Вам и писал ))
    Цитата Сообщение от andrews Посмотреть сообщение
    нужно смотреть описание
    Цитата Сообщение от SoftFelix Посмотреть сообщение
    Serial.available()
    а почитать содержимое буфера и посчитать сколько в нем символов можно чем-то другим, очевидно

  4. #14

    Регистрация
    20.03.2007
    Адрес
    Санкт-Петербург
    Сообщений
    3,000
    Спасибо Благодарностей отдано 
    201
    Спасибо Благодарностей получено 
    113
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от andrews Посмотреть сообщение
    о чем я Вам и писал ))
    Там об это ни слова. Если честно.
    Цитата Сообщение от SoftFelix Посмотреть сообщение
    +

    2. МК должен ответить тремя (3) байтами - 0d, 0a, 3e - это успешная синхронизация. На ПЦ просто проверяют, что пришло 3 байта и НЕ парсят их.
    у Arduino есть окно терминала под выбранный порт. Посмотрите, что там MCU выводит. Только придется выход с lcd на Arduino переключить. По программам ничего не скажу, нужно смотреть описание
    Цитата Сообщение от SoftFelix Посмотреть сообщение
    Serial.available()
    Вообще лучше отлаживать "step by step" и железо тоже.
    И в описании к функции этого нет.

    Цитата Сообщение от andrews Посмотреть сообщение
    а почитать содержимое буфера и посчитать сколько в нем символов можно чем-то другим, очевидно
    Чем другим, если данная функция этим и занимается.

    p.s. Не хотелось бы флеймить по данному вопросу. И очень бы хотелось конкретно "вот тут неправильно, нужно так..."
    МГТФ - любимый провод!
    KAY-1024(4096)/SL-4/TURBO v2010 + Nemo-FDC + Nemo-IDE (CF 4GB) + SMUC2 Rev.B RTC (HDD 1.6GB + DVD-ROM) + PROF-ROM + ZXMC2 + GENERAL SOUND 2MB + ZX-BUS_TEE + FDD 3.5' + FDD 5.25' + VGA&PAL

  5. #15

    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,870
    Спасибо Благодарностей отдано 
    522
    Спасибо Благодарностей получено 
    251
    Поблагодарили
    225 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если конкретно, то для начала, какой у Вас Arduino board?

  6. #16

    Регистрация
    20.03.2007
    Адрес
    Санкт-Петербург
    Сообщений
    3,000
    Спасибо Благодарностей отдано 
    201
    Спасибо Благодарностей получено 
    113
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от andrews Посмотреть сообщение
    Если конкретно, то для начала, какой у Вас Arduino board?
    Это не повлияет на результат вопроса в первой мессаге. И там же в первой мессаге указана модель.
    МГТФ - любимый провод!
    KAY-1024(4096)/SL-4/TURBO v2010 + Nemo-FDC + Nemo-IDE (CF 4GB) + SMUC2 Rev.B RTC (HDD 1.6GB + DVD-ROM) + PROF-ROM + ZXMC2 + GENERAL SOUND 2MB + ZX-BUS_TEE + FDD 3.5' + FDD 5.25' + VGA&PAL

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17

    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,870
    Спасибо Благодарностей отдано 
    522
    Спасибо Благодарностей получено 
    251
    Поблагодарили
    225 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SoftFelix Посмотреть сообщение
    Это не повлияет на результат вопроса в первой мессаге. И там же в первой мессаге указана модель.
    UNO такая у меня тоже есть. На вопрос не повлияет, а на натурный эксперимент вполне повлиять может )) я не доверяю чужим кодам, и тем более чужим описаниям )) Попробую на своей(их) железке(ах) и MEGA тоже

    - - - Добавлено - - -

    Цитата Сообщение от rw6hrm Посмотреть сообщение
    как в Ардуино ИДЕ писать код не на Си, а на ассмблере? А с учётом нескольких входных файлов на ассемблере? Просто есть проект (многофайловый) на асме, его нужно немного подкорректировать, а вот коррекцию можно и на Си сделать.
    можете поэкспериментировать на Processing language
    https://www.processing.org/
    если Arduino железа под рукой никакого нет, так как скетчи вроде как почти идентичные и на одних и тех же Java-классах(?)
    Последний раз редактировалось andrews; 12.02.2020 в 19:48.

  9. #18

    Регистрация
    20.03.2007
    Адрес
    Санкт-Петербург
    Сообщений
    3,000
    Спасибо Благодарностей отдано 
    201
    Спасибо Благодарностей получено 
    113
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если подытожить начало темы, то ниже рабочая функция. Но там реализован только один цикл синхронизации, отличии от оригинала. Надо добавить второй, но я запутался во вложенных условиях и фигурных скобках. Видимо, из-за этого программа иногда пишет Failed!.

    Код:
    void SYNC_1986() { //функция синхронизации с 1986ВЕ91
    
      Serial.end(); //для смены скорости сперва нужно закрыть!
      Serial.begin(9600); //настроили скорость UART на 9600
    
      lcd.clear();
      lcd.setCursor(1, 0);
      lcd.print("Try to Sync...");
      lcd.setCursor(5, 1); //подготовим позицию для печати результата ("Failed!" / "Succes!")
    
      while (Serial.available()) Serial.read(); //вот это работает - очищает буфер UART'перед работой!!!
    
      for (int i = 0; i < 512; i++) {
        Serial.write(0); //выдали в порт 512 байт 0х00
      }
      Serial.flush(); //ждём окончания передачи из буфера
    
      int n = Serial.available();
      if (n == 3) {
        lcd.print("Succes!");
      } else {
        lcd.print("Failed!");
        delay(1000);
        menu = 3; //опять вернулись к файлу прошивки
        root = SD.open(name_folder + "/");
        SD_card(root);
        root.close();
      }
    }
    - - - Добавлено - - -

    p.s. Обновил первую мессагу, для какого девайса это пишется.
    МГТФ - любимый провод!
    KAY-1024(4096)/SL-4/TURBO v2010 + Nemo-FDC + Nemo-IDE (CF 4GB) + SMUC2 Rev.B RTC (HDD 1.6GB + DVD-ROM) + PROF-ROM + ZXMC2 + GENERAL SOUND 2MB + ZX-BUS_TEE + FDD 3.5' + FDD 5.25' + VGA&PAL

  10. #19
    SoftWareGuy
    Гость

    По умолчанию

    Цитата Сообщение от SoftFelix Посмотреть сообщение
    Видимо, из-за этого программа иногда пишет Failed!
    Попробуйте этот код:

    Код:
    void SYNC_1986() 
    {
      Serial.end();
      Serial.begin(9600); 
    
      lcd.clear();
      lcd.setCursor(1, 0);
      lcd.print("Try to Sync...");
      lcd.setCursor(5, 1);
    
      while (Serial.available()) Serial.read(); 
    
      for (int i = 0; i < 512; i++) {
        Serial.write(0); 
      }
      Serial.flush(); 
    
      const int NumBytesToReceive = 3; // количество байт которые ждем в ответ
    
      bool isSuccess = false; // флаг успешности операции
    
      int numBytesReceived = 0; // здесь храним количество принятых байт
      for(int istep = 0; istep < 5; ++istep) // делаем несколько попыток считать ответ
      {
    	while (Serial.available() && numBytesReceived < NumBytesToReceive) // читаем все что уже есть во входном буфере
     	{
     		char receivedByte = Serial.read(); // можно сохранить это где нибудь чтобы проверить значение
     		++numBytesReceived; // храним количество принятых байт
     	}
    
     	if (numBytesReceived == NumBytesToReceive) // получили все что нужно
     	{
     		isSuccess = true;
     		break;
     	}
    	delay(10);
      }
    
      
      if (isSuccess) {
        lcd.print("Succes!");
      } else {
        lcd.print("Failed!");
        delay(1000);
        menu = 3; //опять вернулись к файлу прошивки
        root = SD.open(name_folder + "/");
        SD_card(root);
        root.close();
      }
    }

    Этот пользователь поблагодарил SoftWareGuy за это полезное сообщение:

    SoftFelix(12.02.2020)

  11. #20

    Регистрация
    20.03.2007
    Адрес
    Санкт-Петербург
    Сообщений
    3,000
    Спасибо Благодарностей отдано 
    201
    Спасибо Благодарностей получено 
    113
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SoftWareGuy Посмотреть сообщение
    const int NumBytesToReceive = 3
    Почему именно const int?

    Цитата Сообщение от SoftWareGuy Посмотреть сообщение
    bool isSuccess = false; // флаг успешности операции
    bool ???


    Цитата Сообщение от SoftWareGuy Посмотреть сообщение
    for(int istep = 0; istep < 5; ++istep)
    Вот это вообще не понял. Тут цикл на 5? У нас же 3 байта...


    Цитата Сообщение от SoftWareGuy Посмотреть сообщение
    char receivedByte = Serial.read(); // можно сохранить это где нибудь чтобы проверить значение
    А почему char ?

    Я пока такое сложное не понимаю. Можно словами описать алгоритм этого кода или более подробно в комментариях?
    МГТФ - любимый провод!
    KAY-1024(4096)/SL-4/TURBO v2010 + Nemo-FDC + Nemo-IDE (CF 4GB) + SMUC2 Rev.B RTC (HDD 1.6GB + DVD-ROM) + PROF-ROM + ZXMC2 + GENERAL SOUND 2MB + ZX-BUS_TEE + FDD 3.5' + FDD 5.25' + VGA&PAL

Страница 2 из 5 ПерваяПервая 12345 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Вопросы начинающего ATM'щика
    от Максагор в разделе Разный софт
    Ответов: 43
    Последнее: 19.09.2023, 13:52
  2. Вопросы начинающего спектрумопаятеля :)
    от The_Medved в разделе Несортированное железо
    Ответов: 44
    Последнее: 08.10.2011, 22:59
  3. Монитор начинающего Спектрумиста
    от Doktor в разделе Для начинающих
    Ответов: 5
    Последнее: 14.04.2011, 11:02
  4. Ответов: 5
    Последнее: 25.08.2008, 01:13

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •