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

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

  1. DetSimen

    DetSimen Guest

    Нет. Нихрена не напоминает. Там был стек и обратная польская запись к нему.
     
  2. Airbus

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

    Единственное что пришло на ум-а правильно ли Вы USART настроили?Какой бодрейт?Я обычно ставлю 9600.Какие магические числа в регистрах USCRA USCRB USCRC?Судя по кракозяблам что то не так с бодрейтом.http://easyelectronics.ru/avr-uchebnyj-kurs-peredacha-dannyx-cherez-uart.html
     
  3. a1000

    a1000 Гуру

    USCRA - регистр флагов. Я его не трогал. U2X и MPCM тоже оставил в нулях.
    USCRB
    Код (C++):
    ldi temp, 0b11011000
    out UCSRB, temp
    разрешил прерывания по окончанию приёма и передачи, включил приёмник и передатчик. UCSZ2 - 0, совместно с UCSZ1 - 1 и UCSZ0 - 1 - 8 битная посылка
    USCRС
    Код (C++):
    ldi temp, 0b10000110
    out UCSRC, temp
    URSEL - чтобы писать в USCRС. Далее - асинхронный режим, без проверки чётности, 1 стоповый бит, UCSZ1-0 - уже пояснил. UCPOL - зачем, режим асинхронный.
    Ну и
    Код (C++):
    .equ BAUD = 51
    Взял из даташита на atmega8 (битрейт 9600, частота МК 8 МГц).
    Настройки HyperTerminal
    [​IMG][​IMG]
    Если отправлять в ASCII кодировке - всё ОК! Просто передаю содержимое регистра - кракозябры. Видимо он по другому не воспринимает, или у меня мозгов его настроить не хватает..
    Скачал HTerm - там переключение кодировок на виду - всё ОК!
     
    Airbus нравится это.
  4. Airbus

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

    Частота 8 мГц?Без кварца?А не в этом ли дело?Когда то на асме писал тестовый код для Тини4313 без кварца так при касании пальцем через 3-5 сек чип нагревался и вместо АТ команд шли кракозяблы.Видимо плыл бодрейт.Попробуйте с кварцем?
     
  5. a1000

    a1000 Гуру

    Извини не уточнил - с кварцем. В фьюзах биты CKSEL0-3 все установлены в 1. (По инверсии галочки сняты).
     
  6. カオナシ

    カオナシ Нерд

    Не понял, а что требуется получить?
    Если в ASCII - то все нормально.
    Все правильно, терминал то ASCII отображает.
    Что Вы хотите увидеть передавая содержимое регистра в терминале ?
     
  7. a1000

    a1000 Гуру

    Если я понял - HyperTerminal принимает только ASCII. Перенастроить как HTerm не возможно?