Михаил Копычев
Михаил Копычев
  • Видео 66
  • Просмотров 75 025
Взаимодействуем с Visual Studio Code и GitHub
Разбираемся с преимуществами среды разработки (которая таковой не является) Visual Studio Code и системы контроля версий git в лице GitHub. VSCode - это незаменимый инструмент, если вы хотите программировать AVR микроконтроллеры, но у вас нет компьютера с Windows, а также если вы просто хотите использовать среду разработки, которая помогает вам лучше узнать про AVR-GCC и AVRDude, а также подталкивает вас писать код более грамотно (с разбивкой на файлы и вот это всё). Git - незаменимый инструмент, если вам необходимо писать код не в одиночку или вы просто хотите удобно пользоваться несколькими компьютерами для своего программирования.
Тайм-коды:
00:00 Введение
00:05 Что есть Visual Studio Cod...
Просмотров: 1 021

Видео

Указатели, структуры и разбивка кода на файлы
Просмотров 1,2 тыс.7 месяцев назад
Разбираемся с такими сущностями в языке СИ, как указатели, структуры, а также разбиваем код на отдельные файлы, что позволит нам вывести наше программирование на новый уровень удобства и красоты. Тайм-коды: 00:00 Введение 00:09 Указатели в СИ 04:04 Пример применения указателей 10:25 Структуры в СИ, объявление структур 16:53 Указатели на структуры 19:42 Стрелочный оператор в указателях на структ...
ШИМ на таймере
Просмотров 6557 месяцев назад
Рассмотрим такой модуль внутри МК как таймер-счётчик. У него есть много особенностей, но нас будет интересовать в основном его способность к ШИМ-модуляции сигнала. ШИМ-модуляция - это способ кодирования аналогового сигнала с помощью дискретных импульсов постоянного периода, но переменного коэффициента заполнения. Тайм-коды: 00:00 Введение 00:27 Что такое таймер-счётчик? 02:40 Счётный регистр TC...
Внешние прерывания в МК
Просмотров 5287 месяцев назад
Разбираемся с системой прерываний в AVR на примере внешних прерываний. Источником сигнала внешнего прерывания в данном случае выступит кнопка. Рассмотрим регистры настройки внешних прерываний, функции-обработчики прерываний и примеры. Тайм-коды: 00:00 Введение 00:24 Определение прерываний 02:40 Источники сигнала прерываний 03:56 Базовые вектора (источники) прерываний 05:33 Определение кнопки 06...
Плёночная механическая клавиатура
Просмотров 2717 месяцев назад
В этом видео разбираемся как работает механическая клавиатура, боремся с эффектом дребезга контактов, пишем алгоритм опроса клавиатуры и вывода цифр (и значков) на символьный жидкокристаллический дисплей. Делаем скромные попытки написать свой собственный калькулятор с одним математическим действием. Тайм-коды: 00:00 Введение 00:14 Что ты такое - кнопка? 03:16 Схема соединений кнопок клавиатуры ...
Жидкокристаллический символьный дисплей
Просмотров 5687 месяцев назад
Разбираемся, что можно сделать с LCD экраном на плате со своим собственным микроконтроллером, подключённым к Atmega по параллельному порту. Посмотрим и разберём схему подключения, напишем функции для инициализации контроллера дисплея, посылки команды и ASCII кодов символов на дисплей. Немного бросим взгляд на работу с указателями, когда будем работать со строками. Тайм-коды: 00:00 Введение 00:0...
Звуковой динамик и RGB светодиод
Просмотров 2707 месяцев назад
Разберёмся, как работает и как подключается к микроконтроллеру звуковой излучатель и RGB светодиод. Напишем программу для вывода слова с использованием азбуки Морзе и световой индикации. Тайм-коды: 00:00 Введение 00:08 Схема подключения динамика и RGB диода 02:28 Сигнал на динамик 04:13 Азбука Морзе 05:41 Трёхцветный светодиод 06:39 Вырабатываем с потенциометра ШИМ на диоде в Proteus 12:26 Прог...
Шаговый двигатель
Просмотров 4878 месяцев назад
Рассказывается про устройство, подключение и управление вращением ротора шагового мотора. Рассказывается про драйвер управления шаговым мотором и про режимы его работы. Тайм-коды: 00:00 Введение 00:05 Применение шаговых моторов 01:51 Схема подключения шаговика 04:55 Режимы работы шаговика 08:49 Алгоритм программы 11:13 Моделириуем мотор в Proteus 13:17 Программный код для полушагового режима 19...
Светодиодная матрица
Просмотров 5489 месяцев назад
В видео рассказывается про работу со светодиодными сборками типа матрицы. Рассказывается процедура программирования через параллельный порт микроконтроллер, а также - описывается процесс вывода информации на матрицу посредством протокола TWI, но для этого нужна не просто светодиодная матрица, а матрица с драйвером, обеспечивающим общение по TWI. Тайм-коды: 00:00 Введение 00:11 Применение светод...
Семисегментные индикаторы
Просмотров 730Год назад
В видео рассказывается про работу с семисегментными индикаторами как с устройствами вывода цифро-буквенной информации. Рассматриваются способы подключения индикаторов к микроконтроллеру и о способах программирования, включая процедуру передачи данных по протоколу SPI. Тайм-коды: 00:00 Введение 00:04 Применение семисегментников 00:52 Устройство семисегментника 03:12 Схема включения семисегментно...
Цифровая реализация систем автоматического управления
Просмотров 1,4 тыс.Год назад
Рассматривается реализация САУ на микроконтроллере. Раскрывается понятие САУ, зачем оно существует. Даются подробности о ПИД-регуляторе, об их настройке и особенностях. Приводится пример регулирования левитации магнитного подвеса с программным кодом. Тайм_коды: 00:00 Введение 00:19 Что такое "система управления"? 03:44 Примеры САУ (шар на столе) 07:06 ПИД-регулятор 09:36 Пропорциональный коэффи...
Протокол обмена данными 1-Wire (Microlan)
Просмотров 1,8 тыс.Год назад
В лекции рассматривается протокол обмена данным 1-Wire или Microlan и его программная реализация. Зрителю даётся представление о структуре и характеристиках этого протокола, рассматриваются его отличия и особенности по сравнению с протоколами, рассмотренными ранее. Приводятся примеры применения этого протокола, а также приводится конкретный программный пример общения с датчиком температуры/влаж...
Протокол обмена данными UART
Просмотров 5 тыс.Год назад
В лекции рассматривается протокол обмена данным Universal Asynchronous Receiver/Transmitter - UART и его аппаратная реализация. Рассматриваются правила обмена данными, регистры AVR микроконтроллера, ответственные за работу протокола, а также примеры применения данного протокола. В конце лекции даётся общее представление о более общем проколе обмена - USART. Тайм-коды: 00:00 Введение 00:11 Описа...
Протокол обмена данными SPI
Просмотров 1,4 тыс.Год назад
В лекции рассматривается протокол обмена данным Serial Peripheral Interface - SPI, в частности - его программная и аппаратная реализации. Рассматриваются правила обмена данными, регистры AVR микроконтроллера, ответственные за работу протокола, а также примеры применения данного протокола. Тайм-коды: 00:00 Введение 00:10 Аппаратный уровень SPI 03:00 4 режима работы SPI 05:53 Датчик температуры T...
Введение в протоколы обмена данными, I2C / TWI протокол
Просмотров 2,2 тыс.2 года назад
Лекция вводит понятие "протокола обмена данными" между микроконтроллером (микроконтроллерами) и периферийными устройствами. Протокол - это способ кодирования сообщений между ведущим и ведомым устройством, которые могут передаваться по ограниченному количество проводов. Работа с каждым устройством, работающим на том или ином протоколе обмена должна рассматриваться отдельно, так как упомянутые вы...
Работа с датчиками расстояния
Просмотров 8662 года назад
Работа с датчиками расстояния
Работа с сервомашинками
Просмотров 1,1 тыс.2 года назад
Работа с сервомашинками
Аналоговый компаратор AVR микроконтроллера
Просмотров 1,3 тыс.2 года назад
Аналоговый компаратор AVR микроконтроллера
Таймеры/счётчики AVR микроконтроллера
Просмотров 4,1 тыс.2 года назад
Таймеры/счётчики AVR микроконтроллера
Встроенный АЦП AVR микроконтроллера
Просмотров 2,1 тыс.2 года назад
Встроенный АЦП AVR микроконтроллера
Система прерываний AVR микроконтроллера (инкрементальный энкодер)
Просмотров 2,3 тыс.2 года назад
Система прерываний AVR микроконтроллера (инкрементальный энкодер)
Цифровые регистры ввода/вывода AVR микроконтроллера
Просмотров 4,1 тыс.2 года назад
Цифровые регистры ввода/вывода AVR микроконтроллера
Вспоминаем язык СИ
Просмотров 3,1 тыс.2 года назад
Вспоминаем язык СИ
Введение в AVR микроконтроллеры
Просмотров 8 тыс.2 года назад
Введение в AVR микроконтроллеры
Введение в курс программирования микроконтроллеров
Просмотров 3 тыс.2 года назад
Введение в курс программирования микроконтроллеров
Lab #5. Genetic search algorithms
Просмотров 1833 года назад
Lab #5. Genetic search algorithms
ЛР №5 Генетические алгоритмы поиска
Просмотров 3693 года назад
ЛР №5 Генетические алгоритмы поиска
Л.16. Таймеры AVR + ШИМ для ДПТ
Просмотров 1 тыс.3 года назад
Л.16. Таймеры AVR ШИМ для ДПТ
Л.15. Прерывания AVR + символьный дисплей
Просмотров 7183 года назад
Л.15. Прерывания AVR символьный дисплей
Lab #4. Adaptive+modal control for double-mass resilient electromechanical plant
Просмотров 2053 года назад
Lab #4. Adaptive modal control for double-mass resilient electromechanical plant

Комментарии

  • @amaxar7775
    @amaxar7775 6 дней назад

    Классные видосы, все подробно и понятно, но все же обычно стоит отделять какие-то объективно правильные вещи и собственные предпочтения с привычкми. Например, в заголовочнике прямо несколько раз было подчеркнуто "правило", что и как надо писать после #define и #ifndef, но на самом деле нет такого правила, и есть разные "стили" того, как это оформлять.

  • @user-rs9xb8nk5k
    @user-rs9xb8nk5k 10 дней назад

    Прошу прощения - САУ- это система автоматизированного( а не автоматического) управления.

  • @denispanarin
    @denispanarin 22 дня назад

    Я таки не понял Uart это протокол или интерфейс?

    • @michael_mmk
      @michael_mmk 11 дней назад

      Правила, по которым вы обмениваетесь данными (типа - количество бит, количество стопов, скорость, порядок бит в посылке) - это протокол UART, а вот то, «по чему» обмен осуществляется (например - CH340G, RS-…) - это интерфейс. Интерфейс, вроде как принято считать, материальным, а протокол - это неосязаемые правила.

  • @denvas9551
    @denvas9551 Месяц назад

    Смысл эту тягомотину разводить? Главное оснований принцип. Всё равно никто всё не запомнит А назначение битов регистров и свойства в даташите.

  • @ecstasy3701
    @ecstasy3701 Месяц назад

    Спасибо за труды!

  • @ecstasy3701
    @ecstasy3701 Месяц назад

    Почему так мало лайков?

  • @ecstasy3701
    @ecstasy3701 Месяц назад

    Просто браво!!! Спасибо за труды!!!

  • @mz9zn
    @mz9zn Месяц назад

    Я одного не пойму, как устройства отличают, передаёт мастер "1" или он передаёт запрос на чтение, если обе команды выглядят абсолютно одинаково?

    • @michael_mmk
      @michael_mmk Месяц назад

      Мастер управляет потом данных на линии. Если мастер хочет получить от подчиненного информацию, то предварительно мастер отсылает на него байт чтения. В рассмотренном примере, подчиненное устройство сразу начинает слать байты, оно просто больше ничего не умеет, как только произошел сигнал сброс-присутствие, DHT11 (или DHT22) "неуправляемо" начинают слать байты. На программном уровне же протокол 1-wire устроен несколько более сложно и в нём есть стандартные (а также индивидуальные для каждого устройства) команды - байты данных, с помощью посылки которых мастер переводит слейва в состояние приема или отправки информации. Вот тут об этом есть подробнее: avr.ru/beginer/understand/1wire?ysclid=lxq0dwxnai70797933.

  • @Shizaracing
    @Shizaracing Месяц назад

    Большое спасибо, давно искал подобный контент. Однозначно подписка!

  • @amankz9486
    @amankz9486 2 месяца назад

    Здравствуйте Сколько стоит полный курс?

    • @michael_mmk
      @michael_mmk 2 месяца назад

      Здравствуйте. Честно говоря, весь курс (даже два) выложены на канале и доступны бесплатно.

  • @user-xf5pz8fz4y
    @user-xf5pz8fz4y 4 месяца назад

    ⁸8⁸8⁸

  • @setevoi1
    @setevoi1 4 месяца назад

    Подскажите пожалуйста, есть проект с FreeRTOS в котором много задач в том числе с LWIP. для веб интерфейса. Не удается корректно заставить работать 1wire в этом проекте пробовал варианты с DMA+UART с UART + прерывание и т д пока либо 1wire живет нормально, либо веб интерфейс. Какой вариант реализации 1wire правильный в такой ситуации?

  • @myvin2887
    @myvin2887 4 месяца назад

    Насчёт подтягивания к питанию и помех не понял тему. Всегда думал что: - проще на старых архитектурах т.к. там pull мощнее push-a; - внутренняя подтяжка, если есть, то к питанию.

    • @michael_mmk
      @michael_mmk 3 месяца назад

      Есть такое мнение, что когда у вас помеха аддитивная (то есть на цифровой сигнал нуля «накладывается» сигнал единицы), в этом случае, подтяжка к питанию предпочтительнее, потому как бОльшую часть времени сигнал будет в высоком состоянии, а в непродолжительном активном состоянии - в низком.

  • @user-gw1pj7fh7q
    @user-gw1pj7fh7q 4 месяца назад

    А можете показать как подключить дисплей по I2C я имею в виду код на си? Спасибо за ваши обучающие видео 👍

  • @user-jl4pq5ib7f
    @user-jl4pq5ib7f 5 месяцев назад

    Вроде бы в c массив заканчивается NULL (после последнего элемента резервируется еще 1 байт), поэтому можно не передавать длину. Поправьте, если не прав

    • @michael_mmk
      @michael_mmk 5 месяцев назад

      Когда я передаю массив в функцию, я могу передать только адрес его первого элемента (указатель на массив) и в этом случае, у функции нет шансов узнать сколько байт занимает массив, поэтому мне нужно передать ещё и его длину, иначе есть шанс влезть в область памяти, не касающуюся интересующего нас массива. Массив типа строка заканчивается признаком конца строки ‘\0’, а массив вещественных чисел не имеет признака конца, насколько мне известно.

  • @user-jl4pq5ib7f
    @user-jl4pq5ib7f 5 месяцев назад

    Зачем нужен command byte? Он всегда 1 или это указание на инструкцию?

    • @michael_mmk
      @michael_mmk 5 месяцев назад

      Command byte в случае рассматриваемого датчика - это адрес его конфигурационного регистра, куда мы пишем настройки датчика температуры. В общем же случае - после старта и адреса слева, согласно методике TWI протокола, по линии мастером всегда передается адрес регистра слейва (этих регистров может быть больше одного, например у гироскопа-акселерометра mpu6050 их чёртова уйма), куда мастер будет писать биты (если выставлен признак записи после адреса слейва) или откуда будет читать биты (если выставлен признак чтения после адреса слейва). Короче в данном случае command byte - это либо конфигурационный регистр датчика температуры, либо предельные значения температуры, на которые должен срабатывать датчик. Вот, надеюсь, что стало немного понятнее.

    • @michael_mmk
      @michael_mmk 5 месяцев назад

      Command byte в случае рассматриваемого датчика - это адрес его конфигурационного регистра, куда мы пишем настройки датчика температуры. В общем же случае - после старта и адреса слева, согласно методике TWI протокола, по линии мастером всегда передается адрес регистра слейва (этих регистров может быть больше одного, например у гироскопа-акселерометра mpu6050 их чёртова уйма), куда мастер будет писать биты (если выставлен признак записи после адреса слейва) или откуда будет читать биты (если выставлен признак чтения после адреса слейва). Короче в данном случае command byte - это либо конфигурационный регистр датчика температуры, либо предельные значения температуры, на которые должен срабатывать датчик. Вот, надеюсь, что стало немного понятнее.

  • @theall-seeingeye3973
    @theall-seeingeye3973 5 месяцев назад

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

  • @alekskapitonov2738
    @alekskapitonov2738 6 месяцев назад

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

  • @DIY-dt8ui
    @DIY-dt8ui 6 месяцев назад

    Спасибо

  • @anatoliyv5607
    @anatoliyv5607 6 месяцев назад

    вообще четкие уроки и без воды, я за час стал программистом мк

  • @danceforlife7
    @danceforlife7 6 месяцев назад

    LPT - это параллельный порт, а не последовательный.

    • @michael_mmk
      @michael_mmk 6 месяцев назад

      Да, спасибо.

  • @user-gw1pj7fh7q
    @user-gw1pj7fh7q 6 месяцев назад

    Скажите пожалуйста все сделал как на видео все компелируется но в папках не могу найти хекс файл ?

    • @michael_mmk
      @michael_mmk 6 месяцев назад

      Перейдите в настройки VSCODE (иконка шестеренки слева внизу в интерфейсе), в строке поиска наберите avr helper, это приведёт вас к настройкам соответствующего расширения. В настройках найдите AVR > HEX > Dump: Enabled и поставьте в этом пункте отметку. Теперь при сборке проекта в папке Build будет создаться output.hex файл.

    • @user-gw1pj7fh7q
      @user-gw1pj7fh7q 6 месяцев назад

      @@michael_mmk да спасибо все получилось

    • @user-gw1pj7fh7q
      @user-gw1pj7fh7q 6 месяцев назад

      @@michael_mmk А не могли бы ли вы сделать видео как в проект добавлять сторонние библиотеки ?

  • @Timur_Kan
    @Timur_Kan 6 месяцев назад

    По генетическим алгоритмам у Дмитриевича диплом защищал в 2008 году на САПРе :)

  • @user-gw1pj7fh7q
    @user-gw1pj7fh7q 6 месяцев назад

    Да это не для среднего ума но за урок однозначно 👍

  • @alexanderpoint7434
    @alexanderpoint7434 6 месяцев назад

    Добавьте ссылку на скачивание AVRDUDE, пожалуйста

  • @user-fw7sq9sj5k
    @user-fw7sq9sj5k 6 месяцев назад

    Очень полезная инфа, для меня так точно, пользуюсь Visual Studio, так как пишу проги на С++, но для Arduino пишу на IDE. Писать всё в одной среде будет удобней. 👍😁

  • @Maximko23life
    @Maximko23life 6 месяцев назад

    Михаил здравствуйте. Спасибо😊

  • @DevilByte
    @DevilByte 7 месяцев назад

    А где должен крутиться цикл for для перебора канала?

    • @michael_mmk
      @michael_mmk 7 месяцев назад

      Наверное, можно этим циклом for(i = 0…7) обернуть функцию readAdc(i); Ещё - можно сделать прерывание от ацп и когда прочитан один канал, класть номер следующего канала в младшие биты регистра ADMUX.

    • @DevilByte
      @DevilByte 7 месяцев назад

      @@michael_mmk В общем вчера мучался, по итогам сделал функцию adcread(uint8_t channel) с переменной восьмибитной, в нее запихнул запуск преобразования, ожидание окончания и чтение результата. а уже в майне просто создал переменный соответствующие каналам adcresult1=adcread(1) и так со всеми каналами, и просто вывожу их на дисплей, незнаю насколько это правильно или быстродейственно. пока только начла изучать все. Осталось только прилететь домой и в железе проверять. Пилите еще ролики! у вас очень классный материал! если бы у вас был фулл курс я бы купил его!

  • @alekskapitonov2738
    @alekskapitonov2738 7 месяцев назад

    Спасибо!

  • @MSaidu-sj6vx
    @MSaidu-sj6vx 7 месяцев назад

    Теперь вопрос: списки, кортежи и деревья будут рассмотрены? А то все, как партизаны на допросе, молчат.

    • @michael_mmk
      @michael_mmk 7 месяцев назад

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

  • @MSaidu-sj6vx
    @MSaidu-sj6vx 7 месяцев назад

    Вот, единственный, кто НОРМАЛЬНО объяснил!!! Сам я до этого дошёл не сразу, разжевать никто не мог. А тут всё понятно и ежу. 👍👍👍👍👍

  • @user_lis
    @user_lis 7 месяцев назад

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

  • @Русь-Родина
    @Русь-Родина 7 месяцев назад

    Куда ты спешишь? На СВО? 100 плетей заслужил, как минимум, за свое бестолковое изложение материала. Работы непочатый край. А они ходят с растопыренными пальцами, типа вченные великие и ересь несут, даже не задумываясь над этим. Их так учили - они оправдываются. Но это не оправдание, а констатация факта, что своей головой эти типа самые грамотные, берущиеся учить других, думать не умеют.

  • @some_alias
    @some_alias 7 месяцев назад

    Первые 3/4 видео очень хорошо изложены, спасибо. А вот начиная с "Разбивки программы на файлы" слишком беглое (на мой взгляд) объяснение. Я лично не совсем понял что значит "защита от двойного подключения". Можно ли продемонстрировать это на примере куска кода?

    • @michael_mmk
      @michael_mmk 7 месяцев назад

      Давайте попробуем разобраться. Пусть есть файл типа common.h и в нём код: 1 #ifndef COMMON_H_ 2 #define COMMON_H_ 3 #include <avr/io.h> 4 #include <utils/delay.h> 5 uint16_t findMiddleValue(uint16_t a, uint16_t b, uint16_t c); 6 #endif Подключаем этот файл в main.c и, например, в ещё одном .c файле, где нам это требуется. Каждое подключение (директива #include "myHeader.h") занимает процессорное время. Когда мы подключаем common.h, мы же заинтересованы в том, чтобы иметь возможность обращаться к частям "хедеров" avr/io и utils/delay, а также иметь возможность находить среднее значение из трёх переменных с помощью функции findMiddleValue(). Возникает вопрос - если мы уже однажды подключили common.h - надо ли нам тратить процессорное время на повторное подключение этого файла, учитывая, что его содержимое не изменилось? Ответ - наверное, нет. Второй вопрос - должны ли мы сами следить за подключениями? Ответ - наверное, тоже нет. Мы должны писать программу и подключать всё, что нам требуется в каждом файле (программист - не компилятор). Компилятор должен нам помочь в экономии процессорного времени, но мы должны "сказать" ему о том, что нам нужна здесь помощь. А теперь - суть. В момент, когда мы впервые подключили common.h мы проверяем не задефайнено ли значение COMMON_H_ (мы сами придумали эту запись; обратите внимание, что мы не пишем #define COMMON_H_ 100, мы просто "декларируем дефайн"), и если оно не задефайнено, мы его дефайнем и делаем все строки, начиная с третьей и заканчивая пятой, после чего идёт endif. Если мы после этого опять пытаемся подключить common.h, то мы опять натыкаемся на условие #ifndef, только в этом случае оно будет ложно (COMMON_H_ уже задефайнен) и мы, экономя процессорное время, прыгаем на сроку, после шестой в коде выше.

    • @some_alias
      @some_alias 7 месяцев назад

      @@michael_mmk Теперь стало более понятно, спасибо за развернутый ответ.

  • @OpenFrimeTVcom
    @OpenFrimeTVcom 7 месяцев назад

    а если я хочу получить не данные которые храняться в переменной по указателю, а само значение адреса? допустим так: uint32_t* memADR = (uint32_t*)0x0807FFF4; if (*memADR == 0xFFFFFFFF) { .... и теперь мне нужно передать не то что храниться по этому адресу, а само значение 0x0807FFF4; и я делаю вот так writeDataToMemory ((uint32_t)memADR, 100); это нормальная практика?

    • @michael_mmk
      @michael_mmk 7 месяцев назад

      Метод выглядит рабочим, VSCODE ни на что не ругается. Если нужно передать не просто абстрактный адрес (вот на это IDE ругается, потому что не факт, что по прописанному адресу что-то есть и не факт, что я обращусь к области памяти, которая мне не предназначается), а адрес конкретной переменной, то пишем просто int* memAdr = &myVar; (myVar тоже int) В этом случае будет возможность передавать адрес myVar, сравнивать его с какими то значениями и класть по этому адресу что-то.

    • @OpenFrimeTVcom
      @OpenFrimeTVcom 7 месяцев назад

      @@michael_mmkну я сделал чуть по другому, я все адреса в дефайн запихнул, а где нужно просто присваиваю его указателю)

  • @Maximko23life
    @Maximko23life 7 месяцев назад

    Здравствуйте. Спасибо огромное за труд для нас.

  • @__NEMO__
    @__NEMO__ 7 месяцев назад

    Эээ...Лайк конечно... но брат.... - с кем ты сейчас разговаривал? ))

  • @OttoLilo
    @OttoLilo 7 месяцев назад

    То, что нужно было. Спасибо, помогло разобраться с таймерами для настройке ШИМ в ATmega128

  • @user-un4mx2bv1s
    @user-un4mx2bv1s 7 месяцев назад

    Лекция очень понравилась. Спасибо вам за представленную информацию!

  • @dmitrijcuprina1332
    @dmitrijcuprina1332 7 месяцев назад

    Михаил, прекрасно подаётся информация: без всяких "какбы" и прочих паразитных слов, но очень часто слышно словосочетание "чистота сигнала" но ни о каком фильтре речи не идёт, что вы имеете в виду, кода говорите "Чистота сигнала"?

    • @michael_mmk
      @michael_mmk 7 месяцев назад

      Спасибо. Скорее всего, я всё-таки имею ввиду "чАстоту сигнала", когда говорю о периодических сигналах. Вместо слова "чистота" я бы в своих записях использовал слово "помехозащищённость" или вариации слова "фильтрация".

  • @AntonContra
    @AntonContra 7 месяцев назад

    Михаил, Вы кандидат технический наук? Впши лекции просто высочайшего уровня. Досмотрю один курс и потом все сразу ваши лекции

    • @michael_mmk
      @michael_mmk 7 месяцев назад

      Спасибо, но я просто преподаватель, до кандидата наук мне далековато.

    • @AntonContra
      @AntonContra 7 месяцев назад

      @@michael_mmk главное поставить цель

  • @AntonContra
    @AntonContra 7 месяцев назад

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

  • @AntonContra
    @AntonContra 7 месяцев назад

    Отличные уроки и подача!! Спасибо!

  • @user-ts8on7nd2i
    @user-ts8on7nd2i 7 месяцев назад

    Офигенная подача для меня лично, даже немного не успеваю за материалом после рабочей смены, как говорят "не догоняю". Впервые на себе понял смысл "не догоняю".

  • @Maximko23life
    @Maximko23life 7 месяцев назад

    Спасибо!

  • @stepansml6713
    @stepansml6713 7 месяцев назад

    Красивое. Давая расшифровку имен регистров прям как с ассемблера на си переходите. Становится намного понятнее (не тц или типа r33 а таймер коунтер...)

  • @Maximko23life
    @Maximko23life 7 месяцев назад

    Вы большой молодец. Спасибо за уроки.

  • @ruslanups6191
    @ruslanups6191 7 месяцев назад

    Надо собрать такой стенд

    • @michael_mmk
      @michael_mmk 7 месяцев назад

      Можно ещё такой экран использовать - roboshop.spb.ru/display/simvolnye-displei/lcd-0802-green - он тоже символьный, но общается по TWI протоколу.

  • @ruslanups6191
    @ruslanups6191 7 месяцев назад

    Спасибо за урок.

  • @ruslanups6191
    @ruslanups6191 7 месяцев назад

    Хотелось бы послушать про написание простых библиотек, на примере формирования интервалов времени, с помощью таймера. О правилах написания библиотек, коротко.

    • @michael_mmk
      @michael_mmk 7 месяцев назад

      Будет и такое!