Микроконтроллеры для начинающих "USART часть 2"

Поділитися
Вставка
  • Опубліковано 9 січ 2025
  • Программирование микроконтроллеров avr для начинающих. Работа USART на практике. Передача данных между микроконтроллерами avr, одного байта и пакет данных (массива)
    Программы для микроконтроллеров - atmel-programme...
    USART часть 1 - • Программирование микро...
    Р.С Есть оговорки, записывал все ночью, так что сильно не пинайте :)
    Помощь каналу: U203362127962, Z188974325606

КОМЕНТАРІ • 87

  • @marafon119
    @marafon119 10 років тому +4

    Спасибо за уроки.
    Надеюсь скоро понадобятся.
    Продолжайте в том же духе!
    Вы единственный у кого есть такой ценный материал для начинающих программистов!

  • @Андрейскрыто-ц5и
    @Андрейскрыто-ц5и 10 років тому +1

    Спасибо! Вы наконец то вернулись! С нетерпением жду Ваших видео!

  • @ИгорьЛосев-з9с
    @ИгорьЛосев-з9с 6 років тому

    Спасибо. Смотрю Ваше видео и успокаиваю нервы. (Это помимо восприятия материала)

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

    Спасибо за видеоуроки! Может кому будет полезно:
    Писал 9битный UART(Того требует протокол, по которому общаются устройства). Отправка у меня выполняется отдельно в функции, которая принимает в параметрах, что отправлять(байт, ну не совсем байт ведь это 9 бит).
    Посылка отправлялось как в коде в видео, в прерывании UDRE вызывалась моя функция, но выполнение не успевало дойти до инкремента счетчика в итоге слались одни и те же 9 бит. :)
    Решение:
    ISR(USART2_UDRE_vect){
    if(I

  • @никитанейм
    @никитанейм 7 років тому

    Честно скажу это лучшее за 3 дня поисков. Этот Ардуин мня бесил на протяжении всех трех дней. как только я начинаю искать помощь так сразу ардуин. Я уверен что если спросить хотя бы 10 случайных ардуинщика как происходит процесс передачи данных 9 из них тут же как по волшебству превращаются в баранов. Готовые библиотеки и скетчи... это все равно тоже что носить в трусах чужое г...о. (сори за сравнение) просто они действительно собрали "ЛЕГО" и думают что схемотехники и мало того забивают все поиски этим ге. в общем спасибо дядька! Выручил даже очень! Осталось только все переварить в своем котле и заработать первый миллион! Всех тебе благ и жизни длинной.

  • @nickm2186
    @nickm2186 9 років тому +1

    Добрый день! Уроки Супер! Не могли бы вы сделать еще урок по работе с USART. Хотелось бы разобраться как принимать и обрабатывать строки, например от gps приемника. Спасибо!

    • @АлександрПисанец
      @АлександрПисанец  9 років тому

      Nick M Именно с gpc в врятли, я не работал с ним не было надобности.

    • @nickm2186
      @nickm2186 9 років тому

      Александр Писанец Ну можно и с gsm модулями. Главное принцип понять, как делать.

  • @nagirich
    @nagirich 10 років тому

    Очень хороший урок!!!! Спасибо!!! Особенно меня удевила команда sizeof!!! раньше возникали проблемы, не зная этой команды

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

    Все ООочень просто! Я не программист и я чуть не рихнулся. Но за видео лайк. Супер

  • @Александр-д2м9ч
    @Александр-д2м9ч 10 років тому

    Спасибо!
    Больше уроков хороших и разных!!!

  • @dmitrylesnikov
    @dmitrylesnikov 8 років тому +4

    а как принять массив?

  • @AlekseiChip
    @AlekseiChip 7 років тому +1

    Такой вопрос я из терминала отправляю число в десятичном виде например 1 но в регистре UDR попадает уже 0х31 то есть в шестнадцатеричном виде как его привести к десятичному виду?

  • @АлекКаз
    @АлекКаз 10 місяців тому

    Огромное спасибо Вам. Материал разжеван.

  • @kulibin402
    @kulibin402 10 років тому

    Александр спасибо за ваши уроки.
    Очень нужен урок по работе с SSI интерфейсом. Самому разобраться не получается. Требуется для подключения абсолютного энкодера AS5040.

    • @АлександрПисанец
      @АлександрПисанец  10 років тому

      С данным интерфейсом не работал. Надо даташит изучить, а там посмотрим. Вовсяком случае сразу я не помогу, вы уж извините

    • @kulibin402
      @kulibin402 10 років тому

      Александр Писанец Понимаю, спасибо.

  • @bobybob5005
    @bobybob5005 10 років тому

    Здравствуйте Александр!
    Есть предложения на новые темы. Сейчяс самостоятельно пытаюсь разобраться, но если вас не затруднит, то если можно:
    * Как работает ватч дог , что это? (Watchdog)
    * Sleep моды. Kak можно усыпить и разбудить чип? (Power Management and Sleep Modes)
    * Спай. (SPI - Serial Peripheral Interface)
    * 2 wire Сериал итнерфасе. (2-wire Serial Interface)
    * Бут лодер. Как он работает и что ето? (Boot Loader Support)
    * Селф программинг флаш. (Read-While-Write Self-Programming)
    И думаю было бы удобно (но это так, только предложение ) для новых посетителей иметь хронологию например номер урока, основное nazvanije и тема урока.
    01_МикроконтроллерыAVR_Прерывания_урок_1
    Тогда будет легче новым посетителям разобраться с чего начать и если тема уже обсуждалась, k примеру 7 сегмент ЛЕД, то надо вернуться или наоборот ещё будет. В ютубе можно переименовывать видео и ставить в плай листы . Но это только мнение, а в общем всё просто супер. Надеюсь, что благодаря вам часть будущих да и нынешних разработчиков начнут делать более качественные товары.
    Спасибо что вернулись :)

    • @АлександрПисанец
      @АлександрПисанец  10 років тому

      Здравствуйте. Наоборот, я таким пожеланиям по улучшению только рад. Данный канал и создавался для начинающих. Поэтому что-то я из ваших пожеланий учту. Что касается уроков, то все упирается во время. Приносило бы мне это деньги :), я тратил куда дольше времени, темболее, что мне это нравится. А так, приходится довольствоваться мизером по времени. Также, мне очень интересно знать какие темы для вас интересны.
      Исходя из ваших пожеланий, я буду стараться делать уроки.

    • @bobybob5005
      @bobybob5005 10 років тому

      На счёт заработка, то можно попробовать создать отдельную домашнюю страничку и организовать донатион (donation) (тоесть денежные переводы кому не жалко ). Есть проекты которые с этого чтото получают, глядишь и у вас пошлобы. Также организовать продажу DVD дисков по интернету или скачать весь курс с вашей страницы через SMS или прямым переводом . А также организовать учебные курсы на заказ. Какие темы обсуждаются, сколько стоит и как организовать курс. У нас фирма порой тратить большие деньги чтобы отправить нас на какие нибуть бестолковые недельные курсы. У вас курсы реально толковые так что думаю и шансов больше.
      Успехов :)

    • @bobybob5005
      @bobybob5005 10 років тому

      На счёт частных курсов, обязательно надо засветиться в гугле и по возможности рекламироваться на разных пресс сайтов которые пишуть статьи на эти темы. Тоесть написать статью а в конце упомянуть про курсы и прочее, где найти... У вас очень хорошо получаются интро в уроки. С ними можно делать короткую рекламу перед уроком. Там 5 секунд интро вроде как рекламма, чтоб и интересно и красиво было.

    • @АлександрПисанец
      @АлександрПисанец  10 років тому

      Я знаю, уже разместил. Далеко не все сайты дают возможность рекламировать свой ресурс.

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

    В самом конце видео вы рассказали о определении длинны массива, вот только у вас размер массива в конце определяется не того, что выводится. Предположим, мы задали массив через указатель, но почему-то размер массива через указатель определяется не верно. Как бы это решить, а то все остальное вроде как работает отлично.
    ***
    Проверяю работу так : в протеусе шлю данные в 1-ый(виртуальный) ком порт, в котором данные перенаправляются (с помощью настройки программы виртуального ком-порта) на 2-ой(виртуальный) ком порт, с которого в этом же протеусе я считываю данные.

    • @АлександрПисанец
      @АлександрПисанец  8 років тому

      Увы, данный способ работает только с фиксированными размерами массивами. В вашем случае я не знаю способа определение размера, так сказать плавающего масcива, я бы сделал отдельно переменную в которой находится размер массива(естественно вы вами указываете значение).

  • @Vinipoh1
    @Vinipoh1 9 років тому

    Спасибо за USART, в протеусе все работает. Александр, а для синхронного режима от приемника поступает сигнал передатчику на начало отправки?

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

    Отличные уроки!

  • @dmitriibannikovasx
    @dmitriibannikovasx 6 років тому +1

    Помигать светодиодом с помощью _delay_ms() -обычный человек
    Помигать светодиодом с помощью таймера -мега мозг.
    Помигать светодиодом с помощью uart - сверхразум)

  • @АнтонМуравьев-я2р
    @АнтонМуравьев-я2р 10 років тому

    Добрый день! Уроки Супер! Не могли бы вы сделать урок по управлению lcd c контроллером HD44780, или как создать для него библиотеку.
    Спасибо!

    • @АлександрПисанец
      @АлександрПисанец  10 років тому

      Здравствуйте. Вы далеко не первый кто просит. Я готовлю материал по данной теме. Та как я не использую готовых библиотек, то нужно время все подготовить и объяснить. А это занимает не мало времени.

  • @denial3874
    @denial3874 2 роки тому

    Александр Писанец: скажите пожалуйста, а принимать пакет данных как ?

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

    Уважаемый Александр Писанец у Вас на видео(5:47) показана отладочная плата. с виду самодельная, Вы не поделитесь схемой и печаткой. если конечно у Вас осталось от неё схемка и схема печатки. Спасибо за ваши уроки.! ( моя почта zoom.85.vc@gmail.com)

  • @NIKOLAY_PSHONIA
    @NIKOLAY_PSHONIA 9 років тому

    Александр когда по USART передается поток (10байт) после каждого 1 байта передается стоповый бит или после всего пакета. хотелось бы понять физику, в 1wire и в I2S понимаю, (ведь буфер фактически 1 байт)

  • @valentynberehovyi4146
    @valentynberehovyi4146 10 років тому

    С длиной передаваемых данных не все точно.
    Даже если указателю Р присвоить адрес второго массива и переменной Temp его размер, то данные будут переданы с 4го по 10й байты.
    Условие передачи данных нужно изменить.

  • @NIKOLAY_PSHONIA
    @NIKOLAY_PSHONIA 9 років тому

    Александр а какое расстояние между двумя мегами можно сделать по UART PX TX провод витая пара? Если пробовали. Мне надо 32м вынести пульт (буду пробовать- но не зная зарание продавят меги или нет)Спасибо.
    .

    • @АлександрПисанец
      @АлександрПисанец  9 років тому

      +Никола Пшоня Я пробовал витой парой на 160м нормально работает на скорости 9600.

    • @NIKOLAY_PSHONIA
      @NIKOLAY_PSHONIA 9 років тому

      Спасибо вы меня обрадовали.

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

    Александр Писанец: Очень ждем курс по STM

  • @ІванВерьовкін
    @ІванВерьовкін 10 років тому

    (UBRRL) = 51 ?? почему ? сколько у него максимальное значение ?для чего он надо ?

  • @JackSparrow-dn1cu
    @JackSparrow-dn1cu 8 років тому

    Доброго дня! Скажите а как синхронизировать массивы? Есть 2 массива по 20 значений каждый и чтобы ячейка masiv1 [5] передавалась и записывалась в ячейку masiv2[5], а ячейка masiv1[18] в masiv2 [18] . На практике получается что контролеры стартуют по разному даже если питаются от одного источника и значения массива смещаются произвольно.
    Спасибо!

    • @АлександрПисанец
      @АлександрПисанец  8 років тому

      +Jack Sparrow Вы сами ответили на свой вопрос. Микроконтроллер выступает в качестве мастера. Устанавливает единицу на порту, для синхронизации подчиненному микроконтроллеру. Ну что то вроде такого

  • @MrKr1k
    @MrKr1k 9 років тому

    Здравствуйте, Александр. Можно ли подключать одновременно usart
    и spi устройства к одному микроконтроллеру для коммуникации между собой (т.е. микроконтроллер будет выступать в своем роде конвертером) ? Например к Atmega32. Задача такова, что с spi устройства будут приходить данные (постоянно). По запросу устройства usart нужно будет передавать последние принятые данные от spi к usart. Не будет ли это многовато для микроконтроллера?

    • @АлександрПисанец
      @АлександрПисанец  9 років тому

      Nik RU42 Здравствуйте. Вполне все реально, при грамотном написании программы.

  • @bobybob5005
    @bobybob5005 10 років тому

    В даташите имена векторов не имеют окончания _vect и _num как это предлогает Visual studio. Вопрос. Какая разница между этими именами?
    К примеру:
    USART_UDRE_vect
    USART_UDRE_vect_num
    USART_UDRE
    ?

    • @АлександрПисанец
      @АлександрПисанец  10 років тому

      Я и сам не знаю, не разберался.

    • @bobybob5005
      @bobybob5005 10 років тому

      Google говорит, что это имена прерывания и вектора. Например:
      USART_РХС - это имя самого прерывания
      USART_РХС_vect - это имя вектора.
      Ну и ладно, это не суть. Я думал может сдесь есть какоетo важное отличае.
      www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=48188

  • @ДенисБутузов-п5г
    @ДенисБутузов-п5г 10 років тому

    Александр, не подскажите по какой причине в регистр UDR не производится запись? В режиме отладки прошагиваю код, а мне показывает, что регистр UDR пуст даже после команды записи числа 2. В чём может быть причина?
    #include
    #include
    int main(void)
    {
    UBRRH = 0;
    UBRRL = 25;
    UCSRB|=(1

    • @АлександрПисанец
      @АлександрПисанец  10 років тому

      Скорей всего оптимизация причина. Компелятор считает что данное действие бесмысленое. Попробуйте создать функцию и там запись производить.

    • @ДенисБутузов-п5г
      @ДенисБутузов-п5г 10 років тому

      Не помогло. Пробовал даже на всех уровнях оптимизации, и всё равно ничего не помогает((
      void USART_SENT(unsigned char b)
      {
      UDR = b;
      }
      .
      .
      .
      while(1)
      {
      USART_SENT(2);
      }

  • @ИгорьФлейфле
    @ИгорьФлейфле 7 років тому

    Спасибо! Вопросик!! Так связать 2 микр-ра можно и по USART и по SPI. Так а какой вариант лучше?? Если расстояние между мик-рами пол-метра(Атм8 измеряет, а Атм16 связана с ЛСД выводит данные) Как лучше их связать??

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

    У меня при обработке прерывания ошибку выдает во время сборки Atmel Studio 7
    ISR (USART_UDRE_vect){
    UDR0 = Data;
    UCSR0A &= ~(1

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

      Вуберите цифру "нуль" и букву "е" в записи udr, ucsra

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

      Aleksandr Bengard в новой студии регистры именно так пишутся

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

      Aleksandr Bengard проблема уже решилась, я просто не подключил библиотеку прерываний

  • @ievgenod9708
    @ievgenod9708 9 років тому

    Можно ли использовать МК без кварца для передачи данных на ПК?Насколько использование внутреннего резонатора повлияет на точность принятых комп данных?

    • @АлександрПисанец
      @АлександрПисанец  9 років тому

      +Ievgen Od Можно, я использовал 9600 бит, больше уже начинают ошибки.

    • @ievgenod9708
      @ievgenod9708 9 років тому

      просто у меня ошибки на 9600 бит.Например отправляю цифру "2" ,а комп получает 2...мусор...мусор..2.... и т.д. Думал ошибки из-за отсутствия кварца,но наверное проблема в коде.

    • @АлександрПисанец
      @АлександрПисанец  9 років тому

      Кварц точно лишним не будет

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

    а как передать (или принять) в USART переменную x = 65 в виде 65 а не в виде символа "A" ASCII??

  • @никитанейм
    @никитанейм 7 років тому

    рано я начал танцевать... вот посмотрите.... во первых библиотека на подсвечена а во вторых вот такие ошики передает. если проблема в объявлении то как ее правильно обвить? а если в самой библиотеке то где можно скачать такую?
    undefined symbol 'USART_RXC_vect'
    undefined symbol 'USART_UDRE_vect'
    undefined symbol 'asm'
    undefined symbol 'asm'
    библиотека подключена как: #include

  • @LoveJoy-el4wv
    @LoveJoy-el4wv 8 років тому

    В этом видео нет инициализации портов tx на выход rx на вход почему? И в даташите на мк указаны екземплы для юартов но ни они ни ваши варианты не работают

    • @АлександрПисанец
      @АлександрПисанец  8 років тому

      Да, порты желательно переопределить, хотя и так работает но это не правильно. Пример рабочий, и был естественно опробован на мк. Опешите что именно у вас не получается постараюсь помочь.

    • @LoveJoy-el4wv
      @LoveJoy-el4wv 8 років тому

      Я схематически ошибся но во код настройки частоты #define FOSC 4000000 // Clock Speed
      #define BAUD 9600
      #define MYUBRR FOSC/16/BAUD-1 я адекватно вижу данные на частоте 2400 Гц
      например мне нужна 9600 я меняю код на #define FOSC 2000000 и я уже вижу данные на частоте 4800 ГЦ то есть если я установлю FOSC 1000000 то стоило ожидать данных на частоте 9600 но идут кракозябры. Почему так? Как вы понимаете я не знаю/не умею определить действительную FOSC можно ли открыть эту тему. Потому как фузы я прошиваю на внутрений 8МГц , а тактирование юарта UBRR0H = (unsigned char)(MYUBRR>>8); UBRR0L = (unsigned char)MYUBRR; Использую ATmega48PA

    • @LoveJoy-el4wv
      @LoveJoy-el4wv 8 років тому

      На ATmega8A це працює а ось на атмега 48 частота юарта в нижча в 4 рази

  • @ІванВерьовкін
    @ІванВерьовкін 10 років тому

    UBRR почему 51 ?????

  • @ІванВерьовкін
    @ІванВерьовкін 10 років тому

    Подскажите пожалуйста! почему в Протэусе когда подключаю virtual terminal при отправки на него у меня одни буква АААА любое число там буквы АА,
    А вот если напишу так
    \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    #define BAUD 9600
    #define UBRR_VAL F_CPU/16/BAUD-1
    ----------------------------------------------------------
    usart_init (UBRR_VAL); вызову
    ----------------------------------------
    void usart_init(unsigned int speed)
    {
    UBRRH=(unsigned char)(speed>>8);
    UBRRL=(unsigned char) speed;
    }
    ////////////////////////////////
    вот так в терминал отправляю код все норм работает почему ?? так ??

  • @ZOXAN18
    @ZOXAN18 10 років тому

    сколько есть интерфейсов и каких?спасибо заранее!

  • @LoveJoy-el4wv
    @LoveJoy-el4wv 8 років тому

    У меня STK500 как мне дебажить не на симуляторе а на железе.

    • @АлександрПисанец
      @АлександрПисанец  8 років тому

      Насколько я знаю STK500 это отладочный модуль с интегрированным программатором, но без возможности отладки.

  • @ericsson3507
    @ericsson3507 10 років тому

    Уважаемый Александр куда можно отправлять нашу благодарность Вам

    • @АлександрПисанец
      @АлександрПисанец  10 років тому

      Спасибо конечно. Я очень сильно сомневаюсь, что какие-то деньги будут :), хотя поживем увидим. В разделе сведения на канале кошелек.

  • @ericsson3507
    @ericsson3507 10 років тому

    А кроме веб мани ище както можно помочь каналу? Нет у меня там кошелька

  • @ІванВерьовкін
    @ІванВерьовкін 10 років тому

    ой гоню) 25 )

    • @АлександрПисанец
      @АлександрПисанец  10 років тому

      С помощью числа задается скорость передачи данных. В уроке все это есть.

    • @ІванВерьовкін
      @ІванВерьовкін 10 років тому

      Александр Писанец нету,или я не нашел ,число от 0 до ?

  • @ericsson3507
    @ericsson3507 10 років тому +1

    Обращаюсь ко всем ценителям уроков Александра Писанец! Я предлагаю скинуть гривен по 50 автору ето будет нашей благодарностью автору и стимулом для продолжения ево уроков ! Я думаю с нас никто не обеднеет если скинет полтиник а автору будет приятно и судя по количеству подпищиков нормальные деньги если конечно Вам не жалко