Как принимать данные с массива с Uart

Тема в разделе "Микроконтроллеры AVR", создана пользователем Yerabdi, 18 май 2018.

  1. Yerabdi

    Yerabdi Гик

    Код (C++):
    ISR(USART_RX_vect)         //завершение приема
    {  a=UDR0;//забираем принятые данные
        b=a;
        c=0;
        if ((a>=48) && (a<=57)) {// преоброзование с символа на чисел
          c = c * 10 +  (a - 48);
        }
        for (int i;i < 10;i++)
        {Danie1[i]=c;
        }    
    }
    //*****uart********    
    ISR (USART_UDRE_vect)//регистр данных на передачю пуст
    {   if (Temp < 10)
        {UDR0 = Danie1[Temp];
             Temp++;     }
         else                    
          {  UCSR0B &=~(1 << UDRIE0);  //прерывания по опусташение регистра данных на передачю зап
                  }  
    }
    Принимаемые данные повторяются
     

    Вложения:

    • uart.jpg
      uart.jpg
      Размер файла:
      335,6 КБ
      Просмотров:
      35
  2. b707

    b707 Гуру

    код бредятина.
    Если вам надо передать числа - так и передавайте числа сразу! Зачем вы их сначала в символы переводите, а потом в приемнике - обратно?
    Глупо передавать число 128 как три символа "1", "2" и "8" - когда можно отправить всего 1 байт. И принимать так же.
     
  3. parovoZZ

    parovoZZ Гуру

    ну точно. Терминалку же можно настроить, чтоб числа слала, а не их представления из ASCII таблицы .
     
  4. Yerabdi

    Yerabdi Гик

    Здравствуйте а как можно настроить терминал чтоб числа отправлял заранее спасибо
     
  5. b707

    b707 Гуру

    использовать функцию Serial.write() вместо Serial.print
     
  6. parovoZZ

    parovoZZ Гуру

    Вопрос про программу.