Программирование МК AVR. Урок 14. USART. Связь МК с ПК. Часть 4

Поділитися
Вставка
  • Опубліковано 9 січ 2025

КОМЕНТАРІ • 45

  • @Yupitrer
    @Yupitrer 4 роки тому +1

    Адский труд. Сегодня сделал завтра уже забыл.
    Спасибище тебе

  • @ivanoparin5743
    @ivanoparin5743 4 роки тому

    Если кому надо, вот рабочий код под ATMega64C1
    В окне терминала выбираем номер COM порта который занял ваш девайс и жмем connect. У меня сначала в диспетчере устройств был USB Serial Port (COM10), а у терминала 10й выбрать нельзя, поэтому я залез в "Свойства" USB Serial Port (COM10) и во вкладке "Параметры порта" нажал кнопку "Дополнительно", и там уже в выпадающем меню назначил "Номер COM-порта" в COM1 (нужно выбрать любой свободный номер от 1 до 5).
    В терминале бодрейт ставите 9600, стоповый бит 1 шт. Остальное все как у Владимира.
    #define F_CPU 16000000UL
    #include
    #include
    #include
    #include
    #include
    #define BAUD 9600

    void USART_Init(void) {
    LINCR=(18;
    LINBRRL = (((F_CPU/BAUD)/32)-1);
    LINCR = (1

  • @ebjikkolu4757
    @ebjikkolu4757 5 років тому

    код рабочий ,проверил на ttl конверторе с чипом CH340 .Есть вариант использовать другой терминал от ардуино IDE ,заодно при установке этой IDE установятся драйвера на конвертер .Спасибо

  • @tupoy_ytub_uberi_psevdonim
    @tupoy_ytub_uberi_psevdonim 3 роки тому

    вот бы для протеуса инструкцию, мне рисует треугольники в терминале

  • @dimarussian3252
    @dimarussian3252 8 років тому

    СПАСИБО!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  • @ДмитроПерший
    @ДмитроПерший 7 років тому

    Не понял одну вещь. Всё делал тоже самое, что показано в уроке. Только для Attiny 2313A. Отличие лишь в том, что нет у даного контроллера бита URSEL, а все остальные регистры такие же. При этом, при попытке сбора проекта выдаёт ошибку: если я в код вставляю функции, которые объявлены в файле 'usart.c' и прототипы которых объявлены в 'usart.h'. Не пойму, что сделал не так. Такое ощущение, что при сборке, компилятор не видит части файлов проекта... Установлена Atmel Studio 7.

  • @vaspit7065
    @vaspit7065 6 років тому

    нет FT232 под рукой. Делаю в протеусе. Соединил ножки TX контроллера и RX терминала. При симуляции терминал почему-то пуст. Будет ли вообще работать эта прошивка с протеусом?

  • @serdukegor5402
    @serdukegor5402 8 років тому

    Мой usb-uart преобразователь рабьтает на чипе CH340 я долго мучался с дровами на него (он выглядит в точности как переходник на PL2303, тут нужно быть внимательнее)

    • @narodstream552
      @narodstream552  8 років тому

      Такие в ардуино ставят, и много куда. В принципе по VID и PID все распознается.

    • @serdukegor5402
      @serdukegor5402 8 років тому

      narod stream
      Ну я как-то по невнимательности упустил этот момент и долго не мог понять почему дрова не ставятся

    • @serdukegor5402
      @serdukegor5402 8 років тому

      narod stream
      Не могли бы Вы выложить программу для приема и передачи данных отдельным архивом, а то ссылка в описании под 5 видеоуроком уже недействительна. И ещё вопрос: написав код в 5 уроке получил полнейшую дичь, дисплей при подключении или сбросе МК инициализируется дай Б-г каждый 10 раз, постоянно теряются символы при передаче, или вместо символов идёт кракозябра, с чем это может быть связано?

    • @narodstream552
      @narodstream552  8 років тому

      Связано это с несовпадением скоростей. Возможно у Вас контроллер работает не на той частоте, которая заявлена здесь
      #define F_CPU 8000000UL
      Если частота другая, то в регистр UBR заносится уже другая величина вот здесь
      //Зададим скорость работы USART 115200
      UBRRH = (unsigned char)(ubrr>>8);
      UBRRL = (unsigned char)ubrr;
      Ссылку на гуглдок проверил - рабочая. Также ниже выложил архив всего проекта.

    • @serdukegor5402
      @serdukegor5402 8 років тому

      narod stream
      Насчёт ссылки я имел в виду вот эту перезалить www.mcu4you.ru/obnovlenie-terminal-v1-9b.html я скачал более новую программу и она похоже с ошибками, так как вместо строки 12345678901245678901234567890 передаёт стабильно 1234567890123456789123456780 (рассинхрон в 20 и 27 символах, причём проверка с передачей обратно в терминал показывает что данные тупо не доходят до мк, хотя все скорости настроенны верно)

  • @АндрейКаримов-м1з
    @АндрейКаримов-м1з 5 років тому

    Здравствуйте!
    Огромное спасибо за уроки! У меня в терминале вместо "Ок!" принимается "XJoy=" все в одну строку. Подключал логический анализатор, там все нормально, с микроконтроллера улетает "Ok!" с возвратом каретки и переносом. Передавал как на встроенный COM порт ноута, так и через преобразователь MOXA UPort-1150, пробовал другой терминал (COM Port Toolkit 4.0), менял настройки COM порта в диспетчере устройств, результат тот же - "XJoy=". Подскажите где еще копать?

    • @АндрейКаримов-м1з
      @АндрейКаримов-м1з 5 років тому

      Если в программе МК байт перед записью в буфер передатчика сдвинуть влево на 1 бит и инвертировать - UDR = ~(data

    • @АндрейКаримов-м1з
      @АндрейКаримов-м1з 5 років тому

      Кажись понял. У COM порта логика +/-12 вольт, нужен преобразователь TTL, а я напрямую в Com шлю, но в наличии пока нет, проверить не могу.

  • @vyacheslavboyko6114
    @vyacheslavboyko6114 8 років тому

    1 Baud = 10 Bits ili odin "frame": start bit + 00010001 + stop bit.
    Toest' odin Byt moget sodergat' w sebe odin simwol ASCII. Drugimi
    slowami pri skorosti 9600 bps wozmogna peredaa 9600/10 = 960 simwolow w
    secundu. Ya prawil'no ponyal? eto wopros k wideo 14.1
    kanal o4en' nrawitsya! Spasibo bol'shoe!

  • @АлександрГерлинский

    Спасибо огромное за видео! Скажите, пожалуйста, а можно ли работать с USART не имея кварцевого резонатора.

  • @ingvarorlov6726
    @ingvarorlov6726 8 років тому

    просмотрел несколько уроков и совсем запутался UDRE должен быть равен 1 чтобы можно было записывать UDR, верно?
    while ( UCSRA & (1

    • @narodstream552
      @narodstream552  8 років тому

      Точка с запятой обозначает окончание команды

  • @ВладимирСтороженко-п7н

    вместо Ok! почемуто Joe нет перевода на новую строку ,все посылки строго в одну строку можете подсказать причину-?

    • @narodstream552
      @narodstream552  8 років тому

      Что-то не так, перевод в коде есть. Терминальная программа такая же?

  • @andreyparovozz
    @andreyparovozz 7 років тому

    USB - UART в два клика делается в ардуино на 32u4 (Leonardo по кодификации arduino). Из UNO вообще без лишних телодвижений.
    А VisualStudio в ascii кодировке посылает символы? Как тогда кириллицу отправлять? Договариваться совместно с приемником об используемой таблице?

  • @ОлегШалагин-ц9щ
    @ОлегШалагин-ц9щ 8 років тому

    Здравтсвуйте! Не могу разобраться как сделать инициализацию под кварц 16Мгц, что бы корректно отображало на скорости 115200?

    • @narodstream552
      @narodstream552  8 років тому

      Олег Шалагин если Вы не про фьюзы то в макросе объявить 16000000L вместо 8000000L и в вызове функции инициализации выбрать 16 вместо 8. Есть же таблица в даташите. Ничего даже считать не нужно.

    • @ОлегШалагин-ц9щ
      @ОлегШалагин-ц9щ 8 років тому

      С прошедшими праздниками! Ничего не получилось, когда установил на 16, корректно стало отображаться только на скорости 14400, а когда ставлю 8 то на 28800... Что не так дела?

    • @narodstream552
      @narodstream552  8 років тому

      Проверьте частоту с помощью мигания светодиода раз в секунду в бесконечном цикле

    • @ОлегШалагин-ц9щ
      @ОлегШалагин-ц9щ 8 років тому

      Ну все, разобрался я наконец то. Все дело во фьюзах, контроллер работал на 2МГц, поправил и щас все в норме) Спасибо.

  • @anton66649
    @anton66649 8 років тому

    Такая конструкция:
    while (|(UCSRA&(1

    • @narodstream552
      @narodstream552  8 років тому

      Не, это не то совсем. Вставьте открывающую и закрывающую фигурные скобки перед точкой с запятой, может пройдёт. Если нет, то тогда вставьте пустой такт (операцию NOP).

    • @anton66649
      @anton66649 8 років тому

      То есть вот так : while (!(UCSRA&(1

  • @skypropeller
    @skypropeller 8 років тому

    Объясните пожалуйста, как передать массив из МК на ПК? Спасибо.

    • @skypropeller
      @skypropeller 8 років тому

      Еще не испытал в железе, но нашел у Вас в уроке по внутренней EEPROM.

    • @skypropeller
      @skypropeller 8 років тому

      Еще не испытал в железе, но ответ на вышепоставленный вопрос нашел у Вас в уроке по внутренней eeprom.

    • @narodstream552
      @narodstream552  8 років тому

      Урок 39.2
      Время 10 минут 20 секунд.
      Как раз мы такую функцию и написали.
      Вопросы лучше задавать, когда просмотрите полностью весь цикл по AVR.

  • @MaximmmUA
    @MaximmmUA 8 років тому

    Добрый день.
    Я поменял фьюзы как было сказано в видео, но теперь микроконтроллер выдаёт ошибку. Посоветуйте, как исправить данную проблему?

    • @narodstream552
      @narodstream552  8 років тому

      Подробнее, пожалуйста. Какую именно ошибку выдает микроконтроллер и каким образом он это делает?

    • @MaximmmUA
      @MaximmmUA 8 років тому

      Появляется окно со словом "Ошибка". Данное сообщение появляется после попытки чтения не говоря о других действиях.

    • @MaximmmUA
      @MaximmmUA 8 років тому

      Также в терминале не появляется слово "OK!". В коде нет ошибок. Я использую "CH340G", Atmega32. Скачал новую версию "Terminal" поскольку ссылка на старую версию не работает. На компьютере установлена Windows 10.

    • @MaximmmUA
      @MaximmmUA 8 років тому

      Я немного не достоверную информацию предоставил Вам. В первый раз я использовал Atmega16 (проблемы с фьюзами), а во второй раз это была Atmega32 (но оповещение в терминале не появлялось по прежнему).

    • @narodstream552
      @narodstream552  8 років тому

      Максим Пушкарёв Там другие фьюзы

  • @D._-Porcupine-_.
    @D._-Porcupine-_. 8 років тому

    все чітко, лайк!