Динамическая индикация | Часть 3 | Программирование микроконтроллеров AVR

  Рет қаралды 27,841

Dmitriy Zabarilo

Dmitriy Zabarilo

Күн бұрын

Рассмотрен улучшенный алгоритм программы для подключения 4 разрядной динамической индикации к микроконтроллерам AVR на примере МК ATmega8. В данном алгоритме паузы между переключениями разрядов индикатора формируются с помощью таймер-счетчиков.
Электроника для начинающих: • Урок 1. Что такое ЭЛЕК...
Статья на моем сайте: diodov.net/din...
Ссылки на покупку полезных элементов, необходимых для успешного изучения программирования микроконтроллеров AVR.
Сначала рекомендую получить ВЫСОКУЮ СКИДКУ НА ВСЕ ПОКУПКИ: ali.pub/3mulxb
Микроконтроллеры ATmega8: ali.pub/3muk7a
Программатор AVRASP: ali.pub/3mtqa2
Программатор AVRASP в хорошем корпусе: ali.pub/3mtqxz
Программатор STK500: ali.pub/3mtril
Программатор TOP3100, который программирует ВСЕ: ali.pub/3mtsgt
Макетная плата: ali.pub/3mtvcu
Удобная макетная плата: ali.pub/3mtvyt
Серьезная макетная плата: ali.pub/3mtx4m
Гибкие перемычки для макетной платы: ali.pub/3mtxj0
Перемычки в пенале 14 видов 140 штук: ali.pub/3mtxtw
Набор резисторов 600 штук, 30 номиналов по 20 штук: ali.pub/3muaey
Набор светодиодов разных цветов 300 штук: ali.pub/3mubp1
Набор транзисторов: ali.pub/3muc1h
Семисегментные индикаторы: ali.pub/3muisx
Тактовые кнопки: ali.pub/3muj92
#ДинамическаяИндикация #AVR #ATmega8

Пікірлер: 92
@Программированиемикроконтролле
@Программированиемикроконтролле 3 жыл бұрын
Программирование микроконтроллеров. Полный курс для начинающих: diodov.net/programmirovanie-mikrokontrollerov-avr/ Электроника для начинающих. Мощный курс. diodov.net/elektronika-dlya-nachinayushhih/
@ДмитрийСтепин-д7к
@ДмитрийСтепин-д7к 6 жыл бұрын
Большое спасибо! У вас все по полочкам! Вы - Лучший!
@MrAndreygt812
@MrAndreygt812 5 жыл бұрын
3:52, лучше использовать конструкцию if () - else if (). Тогда при совпадении одного условия остальные не будут проверятся, что сократит время обработки прерывания. Так же лучше типы данных использовать с библиотеки stdint.h. 8-битный беззнаковый будет uint8_t, а не unsigned char. Так как на разных архитектурах, типы int, long могут отличатся в размерах.
@_lika_dedicated_4105
@_lika_dedicated_4105 3 жыл бұрын
Весьма хорошо расказываеш но это не хайповая тема люди сейчас слишком тупы большинство думают что вся электроника работает когда заряжен акумулятор
@finskiymaster
@finskiymaster 4 жыл бұрын
яркий пример, как не нужно делать динамическую индикацию. хотя для сферического проекта в протеусе - сойдет.
@finskiymaster
@finskiymaster 4 жыл бұрын
6:05 - произносишь "настроим на выход", а настраиваешь на вход.
@фафкафафкин
@фафкафафкин 4 жыл бұрын
Использую свитч, переменную транзистора начинаю с 0 а при значении 4 в строке сбрасываю на ноль, все это ускоряет код. От дребезга использую функцию вайл.
@postscriptum1667
@postscriptum1667 6 жыл бұрын
нормально разжёвано, и не затянуто, всё отлично.
@TrasherFCR
@TrasherFCR 3 жыл бұрын
5:15 Полагаю тут надо не >4, а =4 ибо когда она равна 4м высвечиваем 4й разряд, но переменная пока еще НЕ >4 и, соответственно, не становится 1, а значит происходит 5й цикл, где никакой разряд НЕ высвечивается, а только переменной bc547 присваевается 1. Либо обнуление записать ПЕРЕД функциями if
@dima_dmitrenok
@dima_dmitrenok 2 жыл бұрын
В видео всё правильно
@kosmos8460
@kosmos8460 3 жыл бұрын
А в протэусе код работает ?
@MIKHAS
@MIKHAS Ай бұрын
Да, частоту только делить не нужно, оставить как есть и все работает вместе с кнопками.
@ИраГальчук-о9ж
@ИраГальчук-о9ж 6 жыл бұрын
Спасибо автору. Много полезной информации.!
@Siberia55rus
@Siberia55rus 5 жыл бұрын
Отлично, доходчиво, понятно. Будет ли видео по I2C
@artemdavinci
@artemdavinci Жыл бұрын
Прибрали з одного місця ділей і помістили його в інше ))
@ЛПХсНулЯ-и1л
@ЛПХсНулЯ-и1л 6 жыл бұрын
Спасибо за ваши труды. Жду с нетерпением следующего видео. Хочу собрать термо регулятор для инкубатора)))
@sirena-5
@sirena-5 Жыл бұрын
Дуже дякую Вам, Дмитре. Це дуже файний курс! Хай Вам щастить!
@avr_stm_pro2955
@avr_stm_pro2955 6 жыл бұрын
спасибо огромное за труд!! очень интересно
@Victor14525
@Victor14525 4 жыл бұрын
В протеусе не работает, потому что частота большая. Вместо строки TCCR0 |=(1
@splinterkab9007
@splinterkab9007 4 жыл бұрын
В протеусе работает даже если TCCR0=(0
@НикитаАлексеевич-э6ф
@НикитаАлексеевич-э6ф 6 жыл бұрын
какой ты молодец,очень познавательно,жду новых видео,от меня лайк и подписка
@abdurahmann1
@abdurahmann1 Жыл бұрын
ПРикольно ведет себя схема, когда переполняются все четыре разряда. В левом (тысячи) разряде после того как наступает 10я тысяча, появляется кракозябра в виде маленькой палочки , после следующей тысячи и далее кракозябры меняются. я выставил время задержки 2 миллисекуды, чтобы побыстрее счетчик считал, затем нажал кнопку и не отпускал, пока цифры не "побежали". так я добрался до "десятков тысяч". А обнаружил я этот эффукт, когда начал считать в обратную сторону , когда на дисплее было 4 нуля(0000) и был только что запрограммированный контроллер.
@sergeysizemin2163
@sergeysizemin2163 Жыл бұрын
6:00 настроим на вход, а не на выход. И самое интересное, что в протеусе после компиляции все работает одинаково, если строку для кнопок DDRC &= ~(1
@Kilam--Kara.
@Kilam--Kara. 5 ай бұрын
Чета у меня if( PINC & (1
@кожевникедвард
@кожевникедвард 3 жыл бұрын
А я чё то потерялся в коде предыдущей и этой лекции. Тяжеловато даётся наука в 49++.
@abdurahmann1
@abdurahmann1 Жыл бұрын
в 46 тоже тяжеловато, но я по некольку раз просматривая кадры, периодически останавливаю воспроизведение и в Атмел студио7 набираю код. Перепроверяю по многу раз, и всё равно ошибки типа скобок, точек с запятой и т.п. Тоже начал теряться в коде, причем гораздо раньше, чем Вы. Но решил с самого начала набрать коды для всех уроков и осуществить на практике. Собрал схему "в железе", всё работает как надо. В Протеусе тоже работает. Понял,что пока все досконально не визуализируешь в своей голове и наизусть не выучишь коды, то в уме не сформируются шаблоны для дальнейшего самостоятельного написания программ в своих личных вариациях и видоизменениях. Тяжелый длительный мозговой штурм. Но радость от осознания, что получается ни с чем не сравнима, это факт! Плюс тренировка памяти и внимания, чтобы с возрастом мозги не усыхали. Зато, возможно, к старости сохранишься в трезвом уме и твердой памяти.
@Palladln
@Palladln Жыл бұрын
Это не возраст.. бухаешь.. алкоголь сразу показывает как тупеет мозг.. мне 60 и пока все понятно.. Но даже после кружки пива уже жестко туплю..
@кожевникедвард
@кожевникедвард Жыл бұрын
@@Palladln Тоже правда.
@МарчелУнцеску
@МарчелУнцеску 5 жыл бұрын
Спасибо огромное за труд!
@ehomen9310
@ehomen9310 4 ай бұрын
у меня число по типу 204 не правильно делятся
@CAPTOPRES
@CAPTOPRES Жыл бұрын
Дуже корисний курс давно такий шукав, все доступно і зрозуміло роз'яснено . Дуже дякую Вам за діяльність таку. 👍
@aleksivanov9137
@aleksivanov9137 4 жыл бұрын
Спасибо.Как все классно обьясннили,легко и доступно.
@slavslav2854
@slavslav2854 6 жыл бұрын
Спасибо. У Вас талант преподавания.
@максимплесовских-у1ы
@максимплесовских-у1ы 6 жыл бұрын
Полезные видео. Все 3 на одном дыхании посмотрел
@istra3265
@istra3265 5 жыл бұрын
СПАСИБО! ОЧЕНЬ ХОТИМ ВИДЕО ПО I2C
@ivanrusev2270
@ivanrusev2270 Жыл бұрын
А как же вывести точку ?
@АлексейАнистратов-б6з
@АлексейАнистратов-б6з 5 жыл бұрын
Большое спасибо, канал - супер!
@positivuz
@positivuz 2 жыл бұрын
почему бы не записать инкрементирование в ISR(INT1_vect), а декрементирование в ISR(INT0_vect) без задержек времени?
@corytrevor8312
@corytrevor8312 2 жыл бұрын
А почему когда нажимаешь декременировать число и число равно нулю то число меняется на что-то типа 550?
@aleksivanov9137
@aleksivanov9137 4 жыл бұрын
Спасибо.Отличные уроки!!!Одно понять не могу почему в прерывание переменная bc547 объявляется без volatile?
@МейрамСапаров-я9и
@МейрамСапаров-я9и 5 жыл бұрын
Подскажите пожалуйста, какую маркировку транзисторов лучше использовать?
@SergeySuper_Silver
@SergeySuper_Silver 3 жыл бұрын
Может ли дребезг кнопки при её нажатии повлиять на работу данного кода?
@wasony.126
@wasony.126 3 жыл бұрын
👍👍👍
@СергейПлюйко-ь7о
@СергейПлюйко-ь7о 6 жыл бұрын
Молодец очень толково объясняешь жду следующих уроков
@ac-rk6fi
@ac-rk6fi 4 жыл бұрын
👍
@romanantonyk8452
@romanantonyk8452 5 жыл бұрын
А оператор switch case зачем?
@djumanjy
@djumanjy 4 жыл бұрын
Бомба!
@Artur-sparf
@Artur-sparf 4 жыл бұрын
Большое спасибо, но мой Attiny2313 в этом режиме пока не заработал, какая-то там разница в названии таймеров.
@splinterkab9007
@splinterkab9007 4 жыл бұрын
Даташит покури
@konstantingrechishkin7988
@konstantingrechishkin7988 4 жыл бұрын
Здравствуйте. Попробовал запустить этот код в протеусе. У меня не работает.
@splinterkab9007
@splinterkab9007 4 жыл бұрын
8.9 всё отлично.
@vitalyivanov7228
@vitalyivanov7228 3 жыл бұрын
класс!!
@АртёмСергеевич-у5ц
@АртёмСергеевич-у5ц 5 жыл бұрын
Вот ты мозг...
@sober_noise
@sober_noise 4 жыл бұрын
отлично!
@АлександрКорнеев-ф9э
@АлександрКорнеев-ф9э 4 жыл бұрын
если переменную декрементировать ниже нуля происходит какая-то хрень). Приделал в if еще одно условие - if (~PINB&(1
@splinterkab9007
@splinterkab9007 4 жыл бұрын
А зачем ниже нуля? Да и в данном примере нет декремента. Если выбрать тип переменной unsigned char 0...255 например. Он не должен опустится ниже нуля.
@TrasherFCR
@TrasherFCR 3 жыл бұрын
@@splinterkab9007 чем отличается unsigned char от просто char ?
@vitalikdm0685
@vitalikdm0685 5 жыл бұрын
Спасибо за видео, очень полезный урок из серии динамической индикации. Для меня остался не раскрытым вопрос, какую оптимальную скорость переключения выбрать между цифрами(разрядами), так, чтобы отображение было четкое и не проиходило лишних переключений.
@TrasherFCR
@TrasherFCR 3 жыл бұрын
Если не ошибаюсь, инерция зрения у человека 0.1 сек. Вот, думаю, исходя из этого подобрать, чтобы пока один разряд погасший за 0.1 сек успели остальные отобразиться, в данном случае 3 шт., то есть 0.033333 сек на разряд.
@Palladln
@Palladln Жыл бұрын
70-100 герц.
@dimvideok12
@dimvideok12 3 жыл бұрын
Скажите, как доработать код, в случае когда сегменты одного индикатора подключены к разным портам? Массив Chisla уже не будет работать корректно.
@TrasherFCR
@TrasherFCR 3 жыл бұрын
Не уверен, но думаю создать массивы для обоих портов соответствующие.
@Sxemodelkin
@Sxemodelkin 2 жыл бұрын
как решили эту проблему? У меня та же ситуация
@dimvideok12
@dimvideok12 2 жыл бұрын
@@Sxemodelkin Проблема решается побитовыми операциями с ножкой другого порта. Это в тиньке 26, когда делал амперметр столкнулся, там порт не полный. На другой порт завел точку и ее зажигал когда нужно. Конечно это добавляет код, но куда деваться.
@ПолянскийСерж
@ПолянскийСерж 6 жыл бұрын
Подскажи пожалуйста откуда беруться лишние вольты после конденсатора после моста???
@Программированиемикроконтролле
@Программированиемикроконтролле 6 жыл бұрын
Я об этом уже подробно рассказывал здесь: kzbin.info/www/bejne/jaKTe3mNZ7Cbi9E
@postscriptum1667
@postscriptum1667 6 жыл бұрын
потому что в разетке 220 это среднеквадратическое значение а не полное амплитудное. соответственно и после трансформации указаны напряжения на вторичных обмотках тоже среднеквадратические. если замеришь напряжение без кондёра мультиметром умеющим "тру рмс" то увидешь что оно будет примерно таким же как и замер обычным мультиком но со сглаживающим кондёром в цепи. а лишнего в природе ничего не бывает и не от куда не берётся)
@splinterkab9007
@splinterkab9007 4 жыл бұрын
Примерно можно рассчитать так. ~V*sqrt2 - падение на диодах.
@eisevier
@eisevier 5 жыл бұрын
Очень качественное изложение! Просто потрясающе! Спасибо!
@ДанькоГусаківский
@ДанькоГусаківский 6 жыл бұрын
Цікаве повчальне відео. Від мене лайк.
@hekto_pyc9998
@hekto_pyc9998 5 жыл бұрын
Мы хоть и поняли, ну мог бы по русски написать) Автор реально молодец)
@ДанькоГусаківский
@ДанькоГусаківский 5 жыл бұрын
Для@@hekto_pyc9998 : Звідки будите?
@hekto_pyc9998
@hekto_pyc9998 5 жыл бұрын
Россия, Кубань)
@ДанькоГусаківский
@ДанькоГусаківский 5 жыл бұрын
Для@@hekto_pyc9998: Ви з Росії, а я і автор з України.
@hekto_pyc9998
@hekto_pyc9998 5 жыл бұрын
@@ДанькоГусаківский и що? Тебе гнидому надо выпячивать свою через чур украиность?
Динамическая индикация | Часть 1 | Программирование микроконтроллеров AVR
17:26
Программирование микроконтроллеров для начинающих!
Рет қаралды 50 М.
EEPROM AVR | Часть 2 | Программирование микроконтроллеров AVR
20:29
Программирование микроконтроллеров для начинающих!
Рет қаралды 35 М.
Brawl Stars Edit😈📕
00:15
Kan Andrey
Рет қаралды 57 МЛН
How To Get Married:   #short
00:22
Jin and Hattie
Рет қаралды 22 МЛН
Динамическая индикация | Часть 2 | Программирование микроконтроллеров AVR
18:27
Программирование микроконтроллеров для начинающих!
Рет қаралды 34 М.
Аналогово-цифрофой преобразователь АЦП | Программирование микроконтроллеров AVR
32:04
Программирование микроконтроллеров для начинающих!
Рет қаралды 53 М.
Cдвиговые регистры 74HC595 и 74HC165
6:08
Максим Обухов
Рет қаралды 35 М.
Быстродействующая ШИМ AVR | Часть 2 | Программирование микроконтроллеров AVR
17:01
Программирование микроконтроллеров для начинающих!
Рет қаралды 27 М.
Умный ВОЛЬТМЕТР своими руками | Программирование микроконтроллеров AVR
11:26
Программирование микроконтроллеров для начинающих!
Рет қаралды 35 М.
Широтно-импульсная модуляция AVR | Часть 1 | Программирование микроконтроллеров AVR
15:37
Программирование микроконтроллеров для начинающих!
Рет қаралды 29 М.
Timer-counter 0 ATmega8 | Programming AVR microcontrollers on C #12
29:09
Программирование микроконтроллеров для начинающих!
Рет қаралды 72 М.
Семисегментные индикаторы
32:18
Михаил Копычев
Рет қаралды 882
Timer-counter interruptions ATmega8 | Microcontrollers from scratch #15
17:31
Программирование микроконтроллеров для начинающих!
Рет қаралды 39 М.
Brawl Stars Edit😈📕
00:15
Kan Andrey
Рет қаралды 57 МЛН