Вывод данных АЦП в USART

Тема в разделе "Микроконтроллеры AVR", создана пользователем a1000, 12 апр 2019.

  1. a1000

    a1000 Гуру

    В процессе разбирательств с ассемблером, в учебных целях организовал вывод 8 бит получаемых с АЦП в USART. Из всего найденного в интернету родился такой алгоритм.
    Полученное число преобразуется в двоично-десятичное, потом к каждому (сотни, десятки, единицы) прибавляем 0х30 и последовательно выводим через USART в терминальную программу. Заканчиваем это безобразие 0x0A (новая строка). Всё как-бы заработало, но возникает вопрос - существует-ли более простой способ реализации такого простого, на первый взгляд, процесса?
     
  2. Daniil

    Daniil Гуру

    Зачем преобразовывать если можно сразу передать байт?
     
    DetSimen нравится это.
  3. a1000

    a1000 Гуру

    Если передаю байт - выводит кракозябры.
     
  4. SergeiL

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

    Существует! Намного проще писать на языке Си.
    Си - это как супер макро ассемблер!
    Но обязательно, с пониманием, как этот код будет скомпилирован.

    Тогда и по коду увеличение, по сравнению с асм-ом, будет незначительным.

    Все зависит от того как писать на Си.

    На самом деле пописать на ассемблере, это очень полезно.
    Еще, очень полезно, анализировать листинги Си-шных программ на ассемблере.
    После этого приходит понимание что лишнее, и как правильно написать.
     
  5. DIYMan

    DIYMan Guest

    Куда выводит? Вы понимаете, что кроме вас - тут никому ничего не ясно? Либо вы даёте полные вводные, либо - единственный правильный ответ будет - зачем что-то преобразовывать, если можно передать сразу байтами?
     
    DetSimen нравится это.
  6. Daniil

    Daniil Гуру

    Есть 2 пути - передать байт и преобразовать на более мощной машине все те же операции или же тратить ресурсы на мк, чтобы сразу видеть "красивое" число.
    Для мк 10тичная система чисел чужда, поэтому кому-то нужно этим заниматься.
     
  7. カオナシ

    カオナシ Нерд

    Все правильно, преобразовывается в ASCII добавлением 0x30 == '0'
     
  8. a1000

    a1000 Гуру

    Вывожу через USB–UART переходник на компьютер. В нём смотрю с помощью HyperTerminal
     
  9. a1000

    a1000 Гуру

    Ну так можно вообще не заморачиваться
    Код (C++):
    Serial.println(analogRead(analogPin));
    Но это не наш метод.
     
  10. Daniil

    Daniil Гуру

    Воспользуйтесь HTerm, там можно выводить принимаемые байты в разных системах (ascii, hex, bin, dec). Там вы увидите нужное число без преобразований на мк.
     
    a1000 нравится это.
  11. Airbus

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

    Почему?
     
  12. SergeiL

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

    Можно!
    Можно и не заморачиваться, в таком виде все будет работать.

    Но это - использование заготовок arduino.
    И это ни как не коррелируется с ассемблером.
    На ассемблере Вы же не используете ардуиновские фишки?
    Вот и попытайтесь написать на Си так же.
    Поймете, что это намного проще, и по коду примерно столько же. :)
     
    Daniil нравится это.
  13. a1000

    a1000 Гуру

    Ну хочется на самом низком уровне в кишках поковыряться.:):)
     
    Airbus нравится это.
  14. a1000

    a1000 Гуру

    Спасибо, скачал, всё работает. Класная штука.
     
    Daniil нравится это.
  15. カオナシ

    カオナシ Нерд

    Так а Си это легко позволяет :)
    В этом то его и прелесть!
     
  16. a1000

    a1000 Гуру

    Наверное ностальгия замучила. Первый опыт практического программирования был на МК-52. Был такой программируемый калькулятор. Ассемблер немного напоминает методы программирования тех калькуляторов.
     
    Airbus нравится это.
  17. SergeiL

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

    А у меня первый опыт был на БЗ-34, до сих пор к нему нежно отношусь - работает.
     
  18. parovoZZ

    parovoZZ Гуру

    Да. Смотри
    http://forum.amperka.ru/threads/Осциллоскоп-в-atmel-studio.17041/
     
  19. parovoZZ

    parovoZZ Гуру

    Современные СИ компиляторы очень хорошо оптимизируют код. Поэтому потери в Сях по сравнению с асмом - минимальны. Зато исключается огромное количество ошибок связанных с возвратом стека, переходами по меткам и проч.
     
  20. Daniil

    Daniil Гуру

    Мужики, вы чего. Дайти побаловаться асмом. Сами знаете, с него легко слезть, а посмотреть любопытно, чего вы отговариваете то?:D
     
    Airbus нравится это.