Микроконтроллеры avr для начинающих ( расширяем порты микроконтроллера)

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

КОМЕНТАРІ • 80

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

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

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

    Александр Николаевич благодарим Вас за ваш труд

  • @Techn0man1ac
    @Techn0man1ac 10 років тому +2

    Просто, наглядно, понятно. Спасибо большое.

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

    Санечка, с первого раза в голове каша, нужно пару раз пересмотреть и всё уляжется. А всё потому что суть в уроке изложена, просто начинающим как я это тяжело в память мозга как ячейку загрузить. Считаю, что получилось, спасибо за Труд!

  • @webenotlinux4860
    @webenotlinux4860 7 років тому +2

    Александр, Большое спасибо!

  • @OlegBelyash
    @OlegBelyash 11 років тому

    Хорошая идея для начинающих! Только стоит подправить, что это не мультиплексор, а демультиплексор (дешифратор).

  • @МаксимМ-в9з
    @МаксимМ-в9з 7 років тому +2

    Молодец Автор! зачетно!

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

    Спасибо вам большое ваши примеры помогли понять как программировать микроконтроллеров, можете сделать
    пример для работы по RS485 протоколу

  • @владимирлам-ъ6о
    @владимирлам-ъ6о 6 років тому

    Хорошо получилось.Спасибо,молодца!

  • @КоляЛев-й1в
    @КоляЛев-й1в 11 років тому

    Здравствуйте Александр . Я очень благодарный вам за ваши уроки они мне очень помогают в осваиваний МК так как я занимаюсь ими только пол года . Уже пробовал писать разные программки но хотелось сделать что то полезное .Хочу сделать цифровой двух канальный вольтметре. Но тут есть тонкость с настройкой АЦП, конечно в CodeVisionAVR это проще настроить чем в Atmel Studio ,но хотелось бы научится в Atmel Studio . Хочу вас попросить сделать урок по АЦП если можно? (по возможности еще может о ЛСД символьном расскажите)

  • @antongladkov9826
    @antongladkov9826 5 років тому +1

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

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

    с наступающим Вас!

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

    У этой темы есть развитие/продолжение?
    Допустим нужно увеличить количество портов до сотни?

  • @kpecmuk
    @kpecmuk 5 років тому +2

    Вот вроде видео про расширение портов, а на деле какие-то этюды программирования по экономии команд.

    • @kissandjerr886
      @kissandjerr886 2 місяці тому

      У автора в самого каша.

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

    Обращение к памяти, загрузка операнда в АЛУ, выполнение операции, выгрузка в память. Что в случае с переменной, что в случае с адресом количество шагов одинаковое. Только ассемблерные команды отличаются.
    Ссылки нужны для экономии памяти. При передаче значения в функцию по ссылке переменная остается на своем месте, и новая память под нее не выделяется.
    Если разименовать ссылку т.е. записать &(*XX)++; (вместо *XX = 1 + *XX), то инкрементируется переменная.

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

    Спасибо большое

  • @ВатквизДеСад
    @ВатквизДеСад 5 років тому

    Большое спасибо. Скажите, а ничего страшного, если использовать один вход "А" для двух микросхем, а для переключения пользоваться INH?

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

    Это хорошо если использовать много микросхем 4051. А а место 4051 можно использовать 595 тый? В чем разница у них. У 595 два входа только и 8 выходов

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

    А расскажите еще про блуждающий указатель

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

    Спасибо!

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

    можно ли этот вариант применить для включение релюшек и клапанов? будут ли корректно работать.

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

      Конечно. Я для производства цилиндрами ( пневмо и гидро ) так управляю.

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

    все понятно, пошел повторять

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

    Спасибо, освежил теорию, и попробовал на практике мультиплексоры. Не понятен такой момент: зачем каждый раз в векторе таймера записывать адреса в указатели, при инициализации 1 раза не достаточно?

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

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

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

      Еще такой момент любопытен: вы расширяли порты для 100 датчиков, switch блок будет толстым. Может проще функцию сделать?

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

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

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

    Данный модуль можно использовать только на вход? или на выход тоже? Если нельзя, то как сделать аналогично, только на вход и выход, т.е. другими словами замкнуть другую группу контактов. Для данной задачи по идее можно взять переключатель (механический), но мне не нравится, что будет дребезг контактов. Мне нужно соединить контроллер интерфейса с двумя приемопередатчиками. Только вот как сделать пока не могу разобраться

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

      +Nik RU42 Мультиплексор работает как на вход так и на выход. Можно на выход поставить сдвиговой регистр.

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

    Спасибо за урок! С мультиплекторами хоть давно разобрался, но всёравно интерестно было посмотреть.
    И да, спасибо огромное что так подробно расказали про указатели. Я сними имел дело но таких подробностей не знал)
    И один вопрос: для чего команда "volatile" и что она делаем?

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

      "Итак, volatile в языке Си - это квалификатор переменной, говорящий компилятору, что значение переменной может быть изменено в любой момент и что часть кода, которая производит над этой переменной какие-то действия (чтение или запись), не должна быть оптимизирована."

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

    Я помню немного С++. Помойму команда *CC++ не работает потому что у разыменования меньший приоритет. Получается *(СС++) сначала мы производим увеличение указателя, а потом его разыменовываем. Нужно както так (*CC)++; Хотя я могу и ошибаться =)

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

    помогите разобратся с таким вопросом
    пишу вот такую програмку
    #include
    int main(void)
    {
    DDRB &=~(1

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

      В режиме симуляции pin настроенные на вход, не знаю почему, но нужно выставлять в ручную самому. Меняя состояние на порте на пине не меняется.

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

    Я поместил вашу программу в Протеус у меня на микросхеме мультиплексора шине адресов A,B,C порты A5 ,A6 ,A7 постоянно висит логическая 1 . Если ваша программа не полная пожалуйста скажите чтобы я не тратил своё время.

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

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

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

      У вас частота процессора 8 мгц . и Атмега 16 ? Генератор внешний ? Какие ноги на проце задействованы кроме 5 портов A ?

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

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

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

      Вот текст программы может я где то ошибся посмотрите пожалуйста -
      #include
      #include
      #define Ind_Port PORTA
      unsigned char Kanal_1,Da1,No1;
      unsigned char *XX,*CC;
      vxod (volatile unsigned char s)
      {
      volatile unsigned char A;
      switch (s)
      {
      case 0: Ind_Port|=0b10100000;A=0; break; //вход1
      case 1: Ind_Port|=0b11100000;A=0; break; //вход2
      case 2: Ind_Port|=0b01100000;A=0; break; //вход3
      case 3: Ind_Port|=0b00100000;A=0; break; //вход4
      case 4: Ind_Port|=0b01000000;A=0; break; //вход5
      case 5: Ind_Port|=0b10000000;A=0; break; //вход6
      case 6: Ind_Port|=0b00000000;A=0; break; //вход7
      case 7: Ind_Port|=0b11000000;A=0; break; //вход8
      case 8: Ind_Port|=0b10100000;A=1; break; //вход9
      case 9: Ind_Port|=0b11100000;A=1; break; //вход10
      case 10: Ind_Port|=0b01100000;A=1; break; //вход11
      case 11: Ind_Port|=0b00100000;A=1; break; //вход12
      case 12: Ind_Port|=0b01000000;A=1; break; //вход13
      case 13: Ind_Port|=0b10000000;A=1; break; //вход14
      case 14: Ind_Port|=0b00000000;A=1; break; //вход15
      case 15: Ind_Port|=0b11000000;A=1; break; //вход16
      default: return;
      }
      if (PINA& (1

  • @CuranderoUA
    @CuranderoUA 11 років тому

    Для тех, кто привык к старой элементной базе и кому лень гуглить SD4051 это К561КП2

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

    кто нибудь не подскажет как на codevision все это написать?

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

    У меня вопрос вы указали в программе порты - A0 , A1 . а как же - A5, A6, A7 ? Как будет меняться код на шине адреса ( A,B,C,) микросхем ?

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

      Это в прерывании вы задали код -
      Ind_Port=0;
      DDRC|=(1

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

      Давно это было ). Не влияет на данные вывода

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

      Не понял вас , Вы задавали код на шине адреса всё время одинаковый 000 ?

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

      Извиняюсь я не правильно дал ответ. Та я вроде все наглядно показал 1:01

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

      Видел , но в вашей программе я не понял каким образом меняется код на шине адресов . Порты A5,A6A7 .

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

    Здравствуйте Александр
    У меня такой вот вопрос
    у меня ATmega 16 задаю порту (С ) работать на выход (DDRC = 0b11111111; ) и неработает (PINC2, PINC3, PINC4, PINC5)
    А нулевой ,первый, шестой, седьмой работают без проблем подскожите пожалуйста вчем можыт быть проблема ,

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

      Данные порты предназначены для JTAG изначально вам не доступны. Их конечно можно перевести в нормальное использование но для этого нужно програматором все устанавливать.

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

      Большое спасибо что ответили мне
      а можите подскозать как устанавливать и каким ппрогроматором
      Спасибо вам за ваши уроки очень интересно ,понятно обьясняите

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

      Я пользуюсь AVRDragon, но потом проблемонтичьно все вернуть на место. Нужно много проводов припаивать и т.д.

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

      спасибо что ответили

  • @РоманМороз-д2я
    @РоманМороз-д2я 6 років тому +1

    А еще можно так записать: *CC += 1; или даже так (*CC)++;

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

    Как с Вами связаться? Нужен маленький совет!!
    Мне надо посчитать количество включенных кнопок и вывести их сумму на семисегментник. Надо чтобы оно считало вне зависимости от номера кнопки. Например: нажата 1-я и 4-я кнопки - на семисегментнике число 2, или же - нажата 5 и 6 кнопки, но количество все равно два! Помогите пожалуйста с данным вопросом. Очень нужно!

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

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

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

    Дякую за урок! А дана мікросхема розширює порти лише як входи чи і як виходи? Дякую!

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

    Вот не знаю почему было сказано что при работе с переменными выполняется +1 лишняя команда, когда всё совсем наоборот вышло, проверил на этом сайте, который преобразовывает код С++ в asm (godbolt.org/)
    Может имелось ввиду время доступа, что через указатель быстрее, не знаю

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

      приведите код на ассмеблере. ваша страница не доступна

  • @vytas7708
    @vytas7708 11 років тому

    Александр можите вы зделать видео урок, как надо прогамировать лед матрицу. Ну например как в етом видео: Opel Astra Electronic Gear Indicator

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

      У меня есть готовый проект с данными светодиодными матрицами. Размер всего поля 80 X 80 см. Делалось для магазина, для показа рекламы. Только данный проект, уж точно не для начинающих. Хотя за идею спасибо, надо будет подумать.

  • @Tiranitos
    @Tiranitos Рік тому

    Музыку бы убрать фоновую

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

    Досмотрел до строки 67, дальше можно не смотреть. Не забудьте в комментарии к define приписать, что при смене порта, необходимо сменить на 67 строке соответствующий DDRx.

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

    Все то оно да, а всетаки где обещанное для начинающих??

  • @leonid_kolissetskiy
    @leonid_kolissetskiy 7 років тому +6

    Ужас какой то))) И вы говорите что это для начинающих???????

  • @ДмитрийД-в3й
    @ДмитрийД-в3й 2 роки тому

    Ужасно получилось.)))) но принцы подключения мультиплексора был полезен.

  • @ilyaivanov6379
    @ilyaivanov6379 11 років тому

    не SD4051, а CD4051

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

      Спасибо, исправил.

    • @ilyaivanov6379
      @ilyaivanov6379 11 років тому +1

      Александр Писанец Спасибо вам за ваши труды. С удовольствием смотрю.

  • @Павел-х8ы7е
    @Павел-х8ы7е 4 роки тому

    "... У СВОИХ РАБОЧИХ ..." ???
    с какого перепугу они ТВОИ ????
    не задумывался никогда над этим ????
    нелогично получается :
    знания раздаёшь как альтруист , а рабочих держишь как эгоист ....!!!!

  • @ВадисТванов
    @ВадисТванов Рік тому

    Людям надо давать инфо пошагово а не прыгать с 1го на 8ое а потом на 3е .так народ ничему тольком не научишь . Ставлю палец вниз

  • @ВадисТванов
    @ВадисТванов Рік тому

    Людям надо давать инфо пошагово а не прыгать с 1го на 8ое а потом на 3е .так народ ничему тольком не научишь . Ставлю палец вниз