Arrays | Microcontrollers from scratch #9

Поделиться
HTML-код
  • Опубликовано: 2 ноя 2024

Комментарии • 88

  • @Программированиемикроконтролле

    Программирование микроконтроллеров. Полный курс для начинающих: diodov.net/programmirovanie-mikrokontrollerov-avr/
    Электроника для начинающих. Мощный курс. diodov.net/elektronika-dlya-nachinayushhih/

  • @ProgressiveChannel
    @ProgressiveChannel 4 года назад +31

    выполнил бесценный труд и остался недооцененным, справедливая жизнь) какой то ***плёт набирает по 50 000 000 просмотров, который нихрена из себя не представляет, а только рожи корчит. Ну да, ну да расскажите мне после подобного, как в жизни всё на своих местах находится, расскажите как нужно трудится не покладая рук честным трудом, чтобы потом нихрена не иметь, сама жизнь нас толкает на поиски путей с наименьшим сопротивлением. Всем всего доброго, это был лишь поток моей мысли.

    • @nissren
      @nissren 2 года назад

      Лучше иметь мало, но нормальных подписчиков. Чем стадо даунов отсталых, которую любую хуйню схавают

    • @sucker7032
      @sucker7032 Год назад

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

    • @ProgressiveChannel
      @ProgressiveChannel Год назад

      @@sucker7032 и тут я понимаю, что спустя 2 года в моей голове почти ничего не поменялось. Да микроконтроллеры не все обязаны изучать, но смотреть всякую чепуху обязаны все)) Не ладно, я не претендую ни на что, просто как факт смешно немного)

    • @ProgressiveChannel
      @ProgressiveChannel Год назад

      @@RetroJoin вот знаете, я сейчас живу в Норвегии в силу войны, так как я из Украины, вот про деньги, у них тут денег куры не клюют, на мусорках лежат рабочие приставки игровые последнего поколения, возможно с мизерной неисправностью, такой как просто расшатанный коннектор хдми или поврежденный жесткий диск, деньги есть, пошел купил новое, классно, но будучи честным, они тупые как валянки, по моему мнению. Я пришел к этому общаясь с их молодежью, более старшие, поумнее будут конечно же. Просто я к тому, что стоит ли оно того, коснись чего, они тупо вымрут, так как тут даже мастеров нет адекватных. Например, на войне мы выживали без света, воды, газа, скорых, полиции и тд и это произошло внезапно, если бы не скилл и понимание элементарного, то с голоду бы умерли, так как костер даже не развели бы.
      Я и так живу как нравится мне по факту, мне мир интересно изучать, всякие явления, любые.

    • @ProgressiveChannel
      @ProgressiveChannel Год назад

      @@RetroJoin да они тут жалуются, что у них всё дорого, электроника дорогая очень тут, вообще, если соизмерять зарплаты на всё с нашими до войны, то это примерно как получать 25 тысяч гривен в Киеве или Харькове, жить можно, но если есть свой дом, если арендуешь, то конец)
      Аниме не смотрел, в химию вообще не получалось никогда, не шла она мне.

  • @wisetringmen2293
    @wisetringmen2293 5 лет назад +11

    Ты гордость технического Ютуба. Твоя работа бесценна.

  • @ЕвгенийБондарев-к7ф

    Благодарю вас учитель за такое дозодчивое объяснение! Не мог и поверить , что начну программировать🎉❤🤝 Мирного неба над головой вам!!!

  • @Dmitrii82
    @Dmitrii82 5 лет назад +5

    Так уж случилось что давно на вас подписан, но из-за того что вы редко выпускаете видео как то про вас забыл. Понадобились мне массивы и операции с ними и портами, долго копал инет искал инфу и по кускам нашел, а тут пересматривал и нашел это видео. Лучшее обьяснение! Все что искал в одном видео и обьяснено все четко. Спасибо огромное!!!

  • @NK-pg6im
    @NK-pg6im 2 года назад +1

    Дмитрий, какой вы молодец! Я учился по данной профессии, нам объясняли ужасающе поверхностно. Спасибо Вам за Ваш труд!

  • @avr_stm_pro2955
    @avr_stm_pro2955 6 лет назад +13

    СПАСИБО ЗА ТРУД!!!

  • @panzerlo3418
    @panzerlo3418 4 года назад +1

    Лучше чем в учебных заведениях.

  • @ShomaAbd1991
    @ShomaAbd1991 6 лет назад +18

    Многократное увеличение связано не с дребезгом контактов, а с многократным выполнением цикла и соответственно проверки условия IF на нажатое состояние. Для того, что бы не считывать много раз одно нажатие Вы и добавили задержку, т.е. что бы успеть отпустить кнопку прежде, чем контроллер прочитает состояние кнопки снова. Разве не так? В программе же нет вызова функции по прерыванию что бы дребезг контактов мог ее вызывать.

    • @ДимаДимов-в6п
      @ДимаДимов-в6п 6 лет назад +4

      Правильно. А вот если добавить что бы условие срабатывало не по нажатию а по перепаду. То есть сперва нажатие а потом отжатие (по сути выполнение двух условий последовательно) то тогда в протеусе все бы работало без проблем из без задержки, а вот в реальной схеме могли бы наблюдать эффект дребезга!

    • @HemulMozyr
      @HemulMozyr 5 лет назад

      ​@@ДимаДимов-в6п На AVR я пока не программировал, только учусь. Но на ардуине по моему опыту дребезг проявляется если пин не подтянут к земле или потенциалу. Физически пин подтягиваю к потенциалу/земле и без проблем отслеживается состояние нажатия или отжатия кнопки.

    • @sasha88886
      @sasha88886 5 лет назад +1

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

    • @HemulMozyr
      @HemulMozyr 5 лет назад

      @@isakneuman9995 Вы как в анекдоте: Почему бабы говорят что я плох в сексе, откуда они могут это понять за 40 секунд?
      з.ы. Согласен, если вы ГУРУ, то можете оставлять такие "диванные" комменты. А про многократные проверки состояния и их обработку я тоже, представьте себе, знаю.

    • @КаримКеримков
      @КаримКеримков 2 года назад +3

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

  • @postscriptum1667
    @postscriptum1667 6 лет назад +38

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

    • @Yarikkasl
      @Yarikkasl 5 лет назад

      Как это реализовать программно?

    • @HybridWarARgungame
      @HybridWarARgungame 5 лет назад +3

      @@Yarikkasl программно нужно отслеживать не только когда кнопка нажата, но и когда отжата. В конце нужно ставить задержку до тех пор пока кнопку не отожмут. И только после отжатия продолжать цикл.

    • @Yarikkasl
      @Yarikkasl 5 лет назад

      @@HybridWarARgungame спасибо

    • @ogurezzz
      @ogurezzz 4 года назад +3

      @@Yarikkasl Флажки нужно ставить. И добавить условие на инкремент только пока флажок опущен. При нажатии кнопки флажок поднимается и висит пока кнопку не отпустят.

    • @Yarikkasl
      @Yarikkasl 4 года назад

      @@ogurezzzспасибо, с флагами я́ так и не разобрался, сделал задержку по времени.

  • @TrasherFCR
    @TrasherFCR 3 года назад +5

    .
    11:11 А это не из-за того, что, пока кнопка нажата, контроллер производит много циклов?
    .

  • @LoyalLuckyAngel
    @LoyalLuckyAngel 5 лет назад +2

    Большое спасибо, очень интересное и понятное видео)

  • @ZestRise
    @ZestRise 5 лет назад +2

    Я немного вас поправлю, дабы не плодить неправильных утверждений. if - это условие, а оператор это то, что проводит действия ==, и тд. Операнд это, над чем проводятся какие либо действия. Соответственно в условии выражение (а == с) оператор сравнения == проверяет действительно операнды а и с равны между собой.

  • @Иванов-у2к
    @Иванов-у2к 5 лет назад

    Както винаги отлично изложение! Благодаря! Успех!

  • @AntonContra
    @AntonContra Год назад

    Вопрос, а если после установления параметра задержки дребезг контактов не ушел?

  • @ЮрийАндрианов-ч8ъ
    @ЮрийАндрианов-ч8ъ 5 лет назад +1

    Не могу понять. Делаю все тоже самое. Правда Атмега168. Делаю ВХОД на пины PB0 и PB1. Кнопки не работают. Делаю все тоже с PB6,7 все работает. PB3,4,5 заняты программатором SCK,MISO,MOSI. Почему пины В 0 и 1 на вход не работают не понимаю.

  • @CreedBaddog
    @CreedBaddog Год назад

    Я вместо индикатора подключил 4 светодиода на порт B. PB0 PB1 PB2 PB3. Кнопку на PC0. Никак не хотела работать. Переделал программу для порта D и перенес туда светодиоды, только после этого начало переключать. Так и должно быть?

  • @boukinist3899
    @boukinist3899 5 лет назад +9

    У тебя в коде где-то ошибка: обратный отсчёт заканчивается, а бонба не взрывается. Исправь как надо и перезалей, пожалуйста.

  • @aliaksandrkrasnoselskiy8401
    @aliaksandrkrasnoselskiy8401 3 года назад

    Понять не могу), уже всю голову сломал)

  • @x-comics4581
    @x-comics4581 6 лет назад +1

    Нашел!!!! , а то на другом канале было смотрю там удалено, думал КАПУТ)))

  • @Sweet-kc1oz
    @Sweet-kc1oz 2 года назад

    Поддерживают ли контроллеры мультипоточность?

  • @фафкафафкин
    @фафкафафкин 4 года назад +1

    А зачем считывать данные всех 8 портов B? Если нужно остальные порты B сделать на выход, что тогда?
    Как можно считывать значения только на PB0 и PB1 ??

  • @Программист1С-ю8ъ
    @Программист1С-ю8ъ 3 года назад

    Доброго времени суток! Очень помогает ваши видео! Хотел спросить , будет ли видео по подключению индикаторов через регистр 74HC595 (статика и динамика). И в какой версии Atmel Studio вы работаете? Есть ли какие то различие между ними

  • @ВикторБорода-т7п
    @ВикторБорода-т7п 3 года назад

    А почему на порт С назначение кнопок не работает? Код один в один, только с портом С. Все заработало только когда кнопки перенёс на порт В. Или тут идет разделение на аналоговые и цифровые входы и выходы? МК Atmega328p.

  • @Jamal_Malik
    @Jamal_Malik Год назад

    16:09
    А вы не подскажете, почему после прошивки меги, секунды идут не правильно? Т.е. (1секунда =1.5) каждой полтора секунды считает...1...2...3...
    Хотя в проге поставил #Define F_CPU 8000000L и даже поставил так: F _CPU 1000000L и даже UL не помогает.

    • @staskyrychenko8319
      @staskyrychenko8319 11 месяцев назад

      возможно прошит неправильно фьюз SCKDIV8

  • @alanalanov4125
    @alanalanov4125 2 года назад

    1:00 Дмитрий, у порта "Д" нулевой бит отвечает за ресивер сериал-порта.
    Если его как у вас программировать в еденицу, т.е. на выход, разве это не нарушит его работу?
    Ресиверу принимать следует однако...

    • @staskyrychenko8319
      @staskyrychenko8319 11 месяцев назад

      можно залочить микросхему?

  • @dron9257
    @dron9257 4 года назад

    Ну ок, тут все понятно. Такой вопрос есть семисигментный индикатор с 2 сдвиговыми регистрами один включает индикаторы другой высвечивает число, создали массив один с цифрами 0-9 цифры, другой массив с битами на включение элементов 1,2,3,4. А теперь как из этого всего мне выводить числа которые выдает один из входов типа float, как разбить число на элементы 246,6 или 1,342 и вывести на дисплей. А?

  • @user-ol1nk9ox7n
    @user-ol1nk9ox7n 5 лет назад

    Присоединяюсь к Василию Пупкину. Я тоже в ступор попал в этом месте. До этого все было понятно. И вообще уроки превосходные.

    • @HemulMozyr
      @HemulMozyr 5 лет назад

      смотрите ответ чуть выше.

    • @user-ol1nk9ox7n
      @user-ol1nk9ox7n 5 лет назад

      Значит пауза после 9 относится уже ко второму циклу. Если так, то я стал что-то понимать. Было бы нагляднее, если во втором цикле сделать другую задержку, скажем 2 секунды. Попробовал бы, но неделю не могу студию установить, пишет чего-то в винде не так. Еще раз спасибо!

    • @HemulMozyr
      @HemulMozyr 5 лет назад

      @@user-ol1nk9ox7n Да, когда на индикаторе 9 от первого цикла, ее отрабатывает задержка из второго цикла при первом прохождении. А когда на индикаторе 1 после работы второго цикла, ее держит пауза из первого цикла при первом прохождении.
      з.ы. Если проблема установки Amtel Studio из-за Visual Studio 2015 (isolated) , то попробуйте установить визуалстудию 2015 отсюда, а после устанавливать Amtel. visualstudio.microsoft.com/ru/vs/older-downloads/isolated-shell/?rr=https%3A%2F%2Fduckduckgo.com%2F
      Сам уже третий день пытаюсь разобраться почему на win7 такая беда. Обновляю винду и принудительно устанавливаю визуал студию, завтра узнаю результат. :)

    • @HemulMozyr
      @HemulMozyr 5 лет назад +1

      @@user-ol1nk9ox7n логичнее ставить паузу в конце цикла. так меньше непоняток

    • @user-ol1nk9ox7n
      @user-ol1nk9ox7n 5 лет назад

      Спасибо, будем пробовать

  • @РусланЛукиных-с3ч
    @РусланЛукиных-с3ч 5 лет назад

    У меня в proteus эта программа работает а на реальном микроконтролере нет. При нажатие на кнопки не считает. Подскажите в чем может быть причина.

  • @catfish_games
    @catfish_games 5 лет назад +1

    Как по мне самый идеальный способ устранения дребезга это написать автомат для его устранения.

  • @KONARTIK1
    @KONARTIK1 5 лет назад

    Здравствуйте. Может ли сама программа AtmelStudio подвисать .Когда программа доходит до операторов for и if она дальше перестает как бы работать ?

  • @ВладГригорьев-ю8щ
    @ВладГригорьев-ю8щ 4 года назад

    Спасибо!очень понятно. А где протеус можно скачать!)

  • @Dmitrii82
    @Dmitrii82 6 лет назад

    есть лсд семисегментный индикатор (стекляшка), они строятся зачастую на HT1621. снимите пожалуйста для него , как пользоваться даташитом и написать программу.

  • @earthuser7372
    @earthuser7372 3 года назад

    Вы можете помочь сделать таймер обратного отсчёта дней?

  • @dammie2h
    @dammie2h 3 года назад

    люди помогите, как мне поставить _delay_ms() значение на входе ADC. Программа не компилируется, работает только если сам ввожу нужные значения длительности.

  • @serg_tolstiy87
    @serg_tolstiy87 5 лет назад

    Вялiкi дзякуй!

  • @alextar8489
    @alextar8489 3 года назад

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

    • @ЕвгенийБуранчиков
      @ЕвгенийБуранчиков 3 года назад

      z должен меняться не после нажатия кнопки, а после (нажали + отпустили) кнопку

  • @dsh7264
    @dsh7264 4 года назад +6

    Рабочий код , плюс третья управляющая кнопка .
    #define F_CPU 1000000L
    #include
    #include
    int z=0;// переменная объявленная до int main () будет видна в любой области программы .
    int el[]=
    {
    //распиновка 1-a,2-b,3-c,4-d,5-e,6-f,7-g,8-.,9- "-"
    0b00111111,//0
    0b00000110,//1
    0b01011011,//2
    0b01001111,//3
    0b01100110,//4
    0b01101101,//5
    0b01111101,//6
    0b00000111,//7
    0b01111111,//8
    0b01101111//9
    };
    int main(void)
    {
    /* Replace with your application code */

    DDRD=0b11111111;
    DDRB=0b00000000;
    PORTB=0b00000111;
    while(1)
    {
    if (PINB==0b00000110 && z0 )
    {
    z--;
    PORTD=el[z];
    _delay_ms(300);
    }
    // добавляем 3 ю кнопку в протеус для наглядности по анологии с первыми двумя
    if (PINB==0b00000011 ) // если две кнопки не зажаты ,то при зажиме 3й увидим работу цикла for
    {

    for(z;z0&&PINB==0b00000011;) // первый параметр пропущен так как переменная глобальная .К ней можно обратиться из любого места программы в том числе и из цикла FOR
    {
    z--;
    PORTD=el[z];
    _delay_ms(1000);
    }
    PORTB=0b00000111; //возврат исходного значения потенциала на входных выводах
    }
    }
    }

  • @yuridk2842
    @yuridk2842 4 года назад +1

    Хочется добавить, что цифра 9 появляется из второго цикла FOR так как в первом условии Z

  • @13Dimon666
    @13Dimon666 6 лет назад

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

    • @GrafKarlsonskiy
      @GrafKarlsonskiy 5 лет назад

      Дмитрий Коренев я не разбираюсь, но по идеи напряжение какое-то время задержки не подается на индикатор или в самом этом индикаторе должен быть режим отключения дисплея. Просто наверное в цикле ddrD=0b00000000 на задержку а потом включить, но это не точно

  • @artemdavinci
    @artemdavinci Год назад

    Замість умови (PINB == 0b00000010) краще застосовувати (PINB & 0b00000010). Не знаю як Дмитро, а я стискався на практиці з таким явищем як наведення ("наводки") на сусідні "вільні" піни. Тобто, якщо на порту є піни з високоімпендансним режимом, то на них може бути логічна одиниця, яка без проблем зчитається PINx. І в такому випадку, якщо і натиснута кнопка, але через наведення буде логічна одиниця хоча б на одному з пінів даного порту, то умова (PINB == 0b00000010) просто не виконається. Більше того, умова (PINB & 0b00000010) є універсальною, що підходить під інші умови. Коли, наприклад, інші піни даного порту зайняти іншими задачами.

  • @alexeyvert-miller3374
    @alexeyvert-miller3374 5 лет назад +1

    В коде пресутствует ошибка. Т.к. кнопка срабатывает при низком потенциале то код должен выглядеть PINB == 0b11111101для первой кнопки и PINB==0b11111110 для второй. Удивляет как у вас это работало) Или я где-то не доглядел?

    • @evgenikutuzov132
      @evgenikutuzov132 5 лет назад

      Если подтягивать входные ножки к +5В, то всё, как Вы говорите. Но здесь входные ножки подтянуты следующим образом: DDRB = 0b00000011; .

    • @ЮрийШмелёв-л2ч
      @ЮрийШмелёв-л2ч 4 года назад +1

      Доброго времени суток.Споткнулся на том же самом :)... И еще вопрос - у меня работает только при PORTB = 0b11111111, а при PORTB = 0b00000011,кнопки не реагируют. Может кто объяснит? (разница в "прошивальщике", у меня Sina Prog). Спасибо.

    • @ЮрийШмелёв-л2ч
      @ЮрийШмелёв-л2ч 4 года назад +1

      @@evgenikutuzov132 ...так и в примере, и в видео подтянуты к плюсу, или я что-то путаю?

    • @BoooMMMs
      @BoooMMMs Год назад

      @@ЮрийШмелёв-л2ч Разобрался? Тоже голову ломаю. В протеусе все работает. На реальной атмеге, только если PORTB = 0b11111111.

  • @GrafKarlsonskiy
    @GrafKarlsonskiy 5 лет назад +1

    Микроконтроллеры с нуля! 15:25, где два цикла и в начале while пока остаётся portD равно массив, было это перескакивание с двух сразу до нуля. Странно. Ведь пока выполняется цикл, программа не должна перескакивать и должна находиться внутри цикла. Вообще не понятно

    • @HemulMozyr
      @HemulMozyr 5 лет назад +1

      Единица была, просто ее на индикаторе без задержки сменила на 0 команда "PORTD=go2[z]", так как второй цикл завершился и задержка в 1 секунду не произошла. Если "_delay_ms 1000" перенести в обоих циклах на строчку ниже (в конец цикла), то команда "PORTD=go2[z]" ни на что не повлияла бы, вы просто не заметили бы ее результат.

  • @АндрейИванов-е6о4т

    В описании на сайте для оператора for переменная из двух символов
    for (z=0; z

    • @Ванек-р4о
      @Ванек-р4о 6 лет назад

      Это опечатка, но смысл не меняется ,так как здесь переменная z просто заменена другой переменной zz.

    • @АндрейИванов-е6о4т
      @АндрейИванов-е6о4т 6 лет назад

      @@Ванек-р4о Ясно, спасибо.

  • @incxxxx
    @incxxxx 5 лет назад

    super!!!

  • @дигадвигуля
    @дигадвигуля 6 лет назад

    ждем 16 урок!!

  • @magadan4626
    @magadan4626 6 лет назад

    ээээм, а как же кнопки с циклом for?

    • @ДенисМотрёшкин
      @ДенисМотрёшкин 6 лет назад

      Magadan при завершении цикла for, микроконтроллер ни куда не денется и прочитает значение с кнопки.

  • @prurieure775
    @prurieure775 5 лет назад

    Ардуино язык проще!!! НО!!! этот вот C++ очень интересен, несколько светодиодов можно зажечь одной командой))) язык сложнее но куда интереснее)) спасибо что я тебя нашел) только вот атмел студио у меня при выборе МК не открывает новый проект(поле кодинга) хз чё делать

  • @АлександрАксенов-п9з

    Не будет массива, компилятор все оптимизирует и запишет все в команду...

  • @hekto_pyc9998
    @hekto_pyc9998 6 лет назад

    )