Тёмный
No video :(

Программирование микроконтроллеров avr для начинающих "урок 8" 

Microcontrollers
Подписаться 46 тыс.
Просмотров 42 тыс.
50% 1

Avr микроконтроллеры для начинающих в программе Atmel Studio . Teма урока: бегущий светодиод на Atmega 16 без использования delay . Разберемся ка делать свои паузы с помощью таймера.

Опубликовано:

 

29 авг 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 78   
@SagosN
@SagosN 11 лет назад
Спасибо большое, недавно осваивал метод без использования библиотеки delay_(ms), а это видео как раз для закрепления.
@user-iw8rv6ul2x
@user-iw8rv6ul2x 11 лет назад
Несколько регистров! Гениально!!! Александр Николаевич, сделайте пожалуйста урок по ЖКИ и даласовским датчикам!
@user-iw8rv6ul2x
@user-iw8rv6ul2x 11 лет назад
Тема очень интересная!!!! Могу еще подкинуть интересные темы: - Измерение тока и напряжения (как на вашем приборе) - Использование нескольких датчиков DS18b20 на одной линии - Создание меню при помощи символьного ЖКИ - Работа с плавающей точкой - Что такое потоки (только человеческим языком) - Как сделать бипер (пищалку) на AVR
@TheHishko
@TheHishko 10 лет назад
Супер, я раньше только и пользовался deley, было очень не удобно, появлялось много проблем... А таким образом решается куча проблем, даже захотелось переделать свои устройства - вернее прошивку в них, сделать как надо )
@Vinipoh1
@Vinipoh1 9 лет назад
Добрый день! Спасибо за видео. Моя первая программа для МК. Приятно смотреть в протеусе на бегущие огни.
@user-mj8ux1bn2c
@user-mj8ux1bn2c 9 лет назад
Алексей Федотов Еще приятнее наблюдать в реальном устройстве )
@alexvisard
@alexvisard 11 лет назад
Тема очень для меня насущна, подписан, слежу за каждым появлением выпуска, автору риспект.
@user-mj8ux1bn2c
@user-mj8ux1bn2c 11 лет назад
Сам некогда не использовал коды из даташитов. Пишу сам, а если не знаю чего либо то разлажу код чтобы узнать, как это работает. Проверю установки с описанием в даташите и так далее. Вобщем, процесс трудоемкий и врятли чем-то помогу, тут уже сами.
@nagirich
@nagirich 11 лет назад
Капец, Чётко! Я даже как-то не задумавался об этом, Спасибо!=)
@yurapavlenko6153
@yurapavlenko6153 10 лет назад
Не совсем понятен период сработки прерывания. У вас получился 20мс. Не знаю конечно, какая частота процессора у вас выставлена. Допустим 1МГц, делим на 64, ещё на 200 - получаем 12,8мс?
@user-yz2my6kp5i
@user-yz2my6kp5i 6 лет назад
Чудесно! Благодаря!
@user-no5oi3eh8v
@user-no5oi3eh8v 8 лет назад
Спасибо за видео
@chemvan
@chemvan 7 лет назад
Да, для наглядности написания кода лучше когда секунду получаем 20*50. Но для точности периода срабатывания наверное лучше было бы паузу проверять If (Pausa > 49). Хотя не уверен, т.к. в комментариях никто не обратил на это внимание.
@user-iw8rv6ul2x
@user-iw8rv6ul2x 11 лет назад
Спасибо, за урок!!! Александр Николаевич, скажите а подобная хитрость применима только для мигания светодиодом или ещё где? Скажем для работы с символьным ЖКИ где задержки 2-50us можно ли её использовать? И, как я понимаю если таймер так настроен, то под другие задачи его использовать нельзя?
@user-mj8ux1bn2c
@user-mj8ux1bn2c 11 лет назад
Таймер один, добавляются регистры pauza1,pauza2 и так далее. Каждый регистр и относится к своим процесам
@user-mj8ux1bn2c
@user-mj8ux1bn2c 11 лет назад
Если получается сформировать задержку в малый период времени то почему и нет. Я с символьным ЖКИ так и работаю. Попутно в этом же таймере поизвожу опрос нужных мне портов. И другие действия в зависимости от задач.
@user-ur8wo6rq6w
@user-ur8wo6rq6w 8 лет назад
здравствуйте, я новичок ) мне очень понравились ваши видео, скажите для программирования подходят только такие микр...как avr.pic. или можно использовать абсолютно любые ?? как например процессор от телевизора или какие вообще?
@user-mj8ux1bn2c
@user-mj8ux1bn2c 8 лет назад
+смаш войс Любые не пойдут, только те которые поддерживает программная среда.
@user-ji2zf8yl5c
@user-ji2zf8yl5c 10 лет назад
Доброго времени суток Александр Николаевич. По несколько раз пересмотрел ваши видео. Вот решил усложнить для себя задачу реализовать на одном таймере-счетчике паузу по переполнению и шим по совпадению. Подскажите возможно ли это или я поставил для себя невыполнимую задачу?
@user-mj8ux1bn2c
@user-mj8ux1bn2c 10 лет назад
Вполне. Правильно, мозги должны работать
@user-md1jl3nv8z
@user-md1jl3nv8z 6 лет назад
Здравствуйте Александр Николаевич подскажите пожалуйста а такая задержка имеет право на жизнь? Я взял не много кода из вашей программы и ещё добавил своего. //Автор Александр Мордышов #include #include unsigned char Pausa; void time() { if (Pausa
@user-iw8rv6ul2x
@user-iw8rv6ul2x 11 лет назад
А как быть если задержки нужны в нескольких процессах сразу (мигание диодом, измерение температуры, Включение периферии? Нужно использовать несколько таймеров или тоже есть хитрость?
@vladimirlaiu7893
@vladimirlaiu7893 5 лет назад
Александр скажите пожалуйста как вычислить точное время задержки, в видео вы говорите прерыавание настроено на 20 мс, откуда это ? В эмуляторе ваш код даёт задержку в 656 милисекунд, хотелось бы знать как точно задавать время и как правильно его измерить, спасибо !
@user-mj8ux1bn2c
@user-mj8ux1bn2c 5 лет назад
Так в симуляторе все и настраивается, указываете частоту кварца и все
@user-cu6tl7hg7u
@user-cu6tl7hg7u 9 лет назад
Error 1 'Mig_Mig' was not declared in this scope что эта за ошибка?
@user-ji2zf8yl5c
@user-ji2zf8yl5c 10 лет назад
Доброго времени суток Александр Николаевич. Ломал я голову над ниже описаной задачей, вроди бы получилось!? Но в ходе реализации этой задачки, борясь с дребезгом контактов пришлось мне установить предделитель таймера х8. И тут же возник вопрос, Atmega 16 с внешним кварцем 8МГц предделителем таймера х8 получается частота тактирования таймера 1МГц, а контроллер остается работать на 8МГц или ...? И из этого вылез второй вопрос возможно ли изменить для остальных таймеров частоту тактирования предделителем, следовательно чтобы каждый работал своей частотой?
@user-mj8ux1bn2c
@user-mj8ux1bn2c 10 лет назад
Здраствуйте. Вы все правельно поняли. Микроконтроллер тактируется 8Мгц. А таймера можно настроить каждый черес свои пределители.
@user-td9wh9gl4b
@user-td9wh9gl4b 9 лет назад
Здравствуйте! Можете сделать видео урок по программированию частотомера?
@vitaly182
@vitaly182 11 лет назад
Здравствуйте Александр! спасибо вам большое! у меня просьба, расскажите как пользоваться даташитами. у меня проблема в следующем: у меня есть атмега 8а, есть даташит, я хочу вспомощью usart помигать светодиодом, отправить что-нибудь, принять что-нибудь с терминала. В даташите есть пример кода инициализации, и кода отправки. я вставляю код в атмел студию, она компилирует, но ничего не происходит. я в тупике, что делать не знаю, примеров интернете куча, но они в большинстве даже не компилируются..
@user-ge2vh8vb4c
@user-ge2vh8vb4c 2 года назад
Доброго времени Александр код написал в атмел студии но выходят ошибки . Все проверил совпадает по тексту
@user-ge2vh8vb4c
@user-ge2vh8vb4c 2 года назад
При компиляции ошибки
@viksench6447
@viksench6447 7 лет назад
ансигнед шар?) мужик) ну ты че?) какой шар?) не бубь шароебом - не шар, а чар если уж на то пошло)
@alexey-art-studio
@alexey-art-studio 10 лет назад
Почему то думаю, что лучше будет проверять значение паузы прямо в векторе
@user-mj8ux1bn2c
@user-mj8ux1bn2c 10 лет назад
Каждый решает как ему удобно.
@user-vy1tz8ou8t
@user-vy1tz8ou8t 8 лет назад
Здравствуйте, подскажите пожалуйста откуда Вы качали Atmel studio (офф сайт смотрел, там только 7 версия и при установке она даже папку не создает).
@user-mj8ux1bn2c
@user-mj8ux1bn2c 8 лет назад
Здравствуйте, с оф сайта и качал. Но как вы подметили там уже нет, могу попробовать залить на файл обменник.
@user-vy1tz8ou8t
@user-vy1tz8ou8t 8 лет назад
спасибо большое, уже нашел
@matrossv1556
@matrossv1556 7 лет назад
После вашего урока хотел сделать бегущие огни с временем переключения 1с. Но заметил, что в реале бегает быстрее, т.к. в PROTEUS атмега работает на 8 МГц, а таймер на 1 МГц. В одном из ваших видео вы тоже показывали, что у вас на 1 МГц работает. Можно ли как-то изменить именно в AtmelStudio эту частоту на ту, что установлена в реальном МК ?
@user-mj8ux1bn2c
@user-mj8ux1bn2c 7 лет назад
Вы имеете виду в симуляторе, то да можно.
@matrossv1556
@matrossv1556 7 лет назад
не подскажите как ?
@user-mj8ux1bn2c
@user-mj8ux1bn2c 7 лет назад
ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-_KT_5vHz14c.html на 13:23
@matrossv1556
@matrossv1556 7 лет назад
Спасибо, у меня еще вопрос появился. При отладке я никак не могу наблюдать как программа уходит (т.е. курсором) в прерывание, хотя прерывание выполняет, т.к. я вижу изменение переменной. При отладке я пробовал Step into и Step over и ничего не помогает. Хотя если поставить стоп флаг на прерывании, то курсор туда попадает, а без него нет. Не подскажите в чем может быть причина ?
@user-mj8ux1bn2c
@user-mj8ux1bn2c 7 лет назад
Самое первое в опримизации
@user-mj8ux1bn2c
@user-mj8ux1bn2c 11 лет назад
С GPS не приходилось сталкиваться . А по GSM планировал.
@user-nn3io7fy4x
@user-nn3io7fy4x 8 лет назад
я пытался сделать таймером несколько программ на делае выходит а на таймере не получается изменение программ кнопкой бегущий огонь. мерцание.бегущая тень. Подскажите как профисионал .в протеусе
@user-mj8ux1bn2c
@user-mj8ux1bn2c 8 лет назад
+иван русев Я в протеусе не работаю. Насчет таймера я же все в видео показал, там нет нечего сложного.
@user-lm7iu6ni2y
@user-lm7iu6ni2y 6 лет назад
в симуляторе АВР Студио работает все нормально, а на железе все светодиоды светятся. Что может быть? Пробовал варьировать с паузой, но не получилось... Прошу совета
@user-mj8ux1bn2c
@user-mj8ux1bn2c 6 лет назад
Вот с паузой и может быть проблема, но это смотря как реализован код
@user-lm7iu6ni2y
@user-lm7iu6ni2y 6 лет назад
Александр благодарю за быстрый ответ. нашел свою ошибку (поставил ; после if (Pauza > 50)) все заработало. Благодарю за поучительные уроки
@user-hw2eb8bl8e
@user-hw2eb8bl8e 6 лет назад
Error 4 undefined reference to `Mig_Mig' Mig_Mig не задекларирован и на видео этого декларирования тоже не видно. Автор, куды его декларировать то, чтоб работало?
@user-mj8ux1bn2c
@user-mj8ux1bn2c 6 лет назад
Это имя функции не где не декларируется. Попробуйте тело функции разместить выше основной функции mein
@user-hw2eb8bl8e
@user-hw2eb8bl8e 6 лет назад
Разобрался, нашёл у себя ошибку в одной из строк. Сам был невнимательным
@user-nn3io7fy4x
@user-nn3io7fy4x 8 лет назад
да я светодиод зажег и сбросил в 0 используя таймер в прерываниии по перевыполнению и прежим CTC разницу я не увидел правда использовал mega8 T2 8-битный
@vitaly182
@vitaly182 11 лет назад
Александр, вы хоть скажите что-нибудь, а то я даже не знаю вдруг не видели вопроса моего...
@user-nn3io7fy4x
@user-nn3io7fy4x 8 лет назад
HEX файл на два кбайта меньше чем с delay в таймере у меня вышло с одним светодиодом а с програмной задержкой я менял 14 программ кнопкой в прерываниии
@user-xg1xj8lf5h
@user-xg1xj8lf5h 3 года назад
Привет всем Может быть я что-то не понимаю так как я начинающий всё-таки мне интересно. Как это программа работает. Может быть кто-то напишет правильный код на основе этой программы. Этот код нерабочий программа mig-mig вообще не работает.
@user-mj8ux1bn2c
@user-mj8ux1bn2c 3 года назад
Программа рабочая. В какой Atmel Studio вы работаете ?
@user-nn3io7fy4x
@user-nn3io7fy4x 8 лет назад
извените какую микросхему вы используете?
@user-mj8ux1bn2c
@user-mj8ux1bn2c 8 лет назад
+иван русев ATMEGA16
@denial3874
@denial3874 6 лет назад
а если частота 16 МГц ?
@user-mj8ux1bn2c
@user-mj8ux1bn2c 11 лет назад
Честно сказать думал будет не интересная тема, в преть буду выла живать и другие уловки.
@user-nn3io7fy4x
@user-nn3io7fy4x 8 лет назад
получилось кнопкой запустить вашу программу в цикле
@user-nn3io7fy4x
@user-nn3io7fy4x 8 лет назад
тогда какой симулятор вы используете
@user-mj8ux1bn2c
@user-mj8ux1bn2c 8 лет назад
+иван русев Все отлаживаю в реальных условиях при помощи отладчика
@BigEddyson
@BigEddyson 8 лет назад
Протеус. Протеус это не только симулятор...
@chusovles
@chusovles 11 лет назад
unsigned = ансайнд; char = чар;
@user-nn3io7fy4x
@user-nn3io7fy4x 8 лет назад
как называется ваш отладчик если не секрет
@user-mj8ux1bn2c
@user-mj8ux1bn2c 8 лет назад
+иван русев я даже видео снял ) Dragon Купить программатор отладчик alipromo.com/redirect/cpa/o/o16ybowvzmrgbxg6bg9bwyflymysh48t/
@yerlannagmetov7272
@yerlannagmetov7272 8 лет назад
'Mig_Mig' was not declared in this scope
@shizlgizI
@shizlgizI 8 лет назад
Не понятно, откуда берутся 20 миллисекунд.
@vedgray9773
@vedgray9773 7 лет назад
код не рабочий
@user-nn3io7fy4x
@user-nn3io7fy4x 8 лет назад
и в протеусе работает
@user-nn3io7fy4x
@user-nn3io7fy4x 8 лет назад
я нашол програмную задержку не настраивая таймер
@XAngelsLifeX
@XAngelsLifeX 8 лет назад
Спасибо за видео
Далее
Голливудский конвейер звёзд
29:20