Avr микроконтроллеры для начинающих в программе Atmel Studio . Teма урока: бегущий светодиод на Atmega 16 без использования delay . Разберемся ка делать свои паузы с помощью таймера.
Тема очень интересная!!!! Могу еще подкинуть интересные темы: - Измерение тока и напряжения (как на вашем приборе) - Использование нескольких датчиков DS18b20 на одной линии - Создание меню при помощи символьного ЖКИ - Работа с плавающей точкой - Что такое потоки (только человеческим языком) - Как сделать бипер (пищалку) на AVR
Супер, я раньше только и пользовался deley, было очень не удобно, появлялось много проблем... А таким образом решается куча проблем, даже захотелось переделать свои устройства - вернее прошивку в них, сделать как надо )
Сам некогда не использовал коды из даташитов. Пишу сам, а если не знаю чего либо то разлажу код чтобы узнать, как это работает. Проверю установки с описанием в даташите и так далее. Вобщем, процесс трудоемкий и врятли чем-то помогу, тут уже сами.
Не совсем понятен период сработки прерывания. У вас получился 20мс. Не знаю конечно, какая частота процессора у вас выставлена. Допустим 1МГц, делим на 64, ещё на 200 - получаем 12,8мс?
Да, для наглядности написания кода лучше когда секунду получаем 20*50. Но для точности периода срабатывания наверное лучше было бы паузу проверять If (Pausa > 49). Хотя не уверен, т.к. в комментариях никто не обратил на это внимание.
Спасибо, за урок!!! Александр Николаевич, скажите а подобная хитрость применима только для мигания светодиодом или ещё где? Скажем для работы с символьным ЖКИ где задержки 2-50us можно ли её использовать? И, как я понимаю если таймер так настроен, то под другие задачи его использовать нельзя?
Если получается сформировать задержку в малый период времени то почему и нет. Я с символьным ЖКИ так и работаю. Попутно в этом же таймере поизвожу опрос нужных мне портов. И другие действия в зависимости от задач.
здравствуйте, я новичок ) мне очень понравились ваши видео, скажите для программирования подходят только такие микр...как avr.pic. или можно использовать абсолютно любые ?? как например процессор от телевизора или какие вообще?
Доброго времени суток Александр Николаевич. По несколько раз пересмотрел ваши видео. Вот решил усложнить для себя задачу реализовать на одном таймере-счетчике паузу по переполнению и шим по совпадению. Подскажите возможно ли это или я поставил для себя невыполнимую задачу?
Здравствуйте Александр Николаевич подскажите пожалуйста а такая задержка имеет право на жизнь? Я взял не много кода из вашей программы и ещё добавил своего. //Автор Александр Мордышов #include #include unsigned char Pausa; void time() { if (Pausa
А как быть если задержки нужны в нескольких процессах сразу (мигание диодом, измерение температуры, Включение периферии? Нужно использовать несколько таймеров или тоже есть хитрость?
Александр скажите пожалуйста как вычислить точное время задержки, в видео вы говорите прерыавание настроено на 20 мс, откуда это ? В эмуляторе ваш код даёт задержку в 656 милисекунд, хотелось бы знать как точно задавать время и как правильно его измерить, спасибо !
Доброго времени суток Александр Николаевич. Ломал я голову над ниже описаной задачей, вроди бы получилось!? Но в ходе реализации этой задачки, борясь с дребезгом контактов пришлось мне установить предделитель таймера х8. И тут же возник вопрос, Atmega 16 с внешним кварцем 8МГц предделителем таймера х8 получается частота тактирования таймера 1МГц, а контроллер остается работать на 8МГц или ...? И из этого вылез второй вопрос возможно ли изменить для остальных таймеров частоту тактирования предделителем, следовательно чтобы каждый работал своей частотой?
Здравствуйте Александр! спасибо вам большое! у меня просьба, расскажите как пользоваться даташитами. у меня проблема в следующем: у меня есть атмега 8а, есть даташит, я хочу вспомощью usart помигать светодиодом, отправить что-нибудь, принять что-нибудь с терминала. В даташите есть пример кода инициализации, и кода отправки. я вставляю код в атмел студию, она компилирует, но ничего не происходит. я в тупике, что делать не знаю, примеров интернете куча, но они в большинстве даже не компилируются..
После вашего урока хотел сделать бегущие огни с временем переключения 1с. Но заметил, что в реале бегает быстрее, т.к. в PROTEUS атмега работает на 8 МГц, а таймер на 1 МГц. В одном из ваших видео вы тоже показывали, что у вас на 1 МГц работает. Можно ли как-то изменить именно в AtmelStudio эту частоту на ту, что установлена в реальном МК ?
Спасибо, у меня еще вопрос появился. При отладке я никак не могу наблюдать как программа уходит (т.е. курсором) в прерывание, хотя прерывание выполняет, т.к. я вижу изменение переменной. При отладке я пробовал Step into и Step over и ничего не помогает. Хотя если поставить стоп флаг на прерывании, то курсор туда попадает, а без него нет. Не подскажите в чем может быть причина ?
я пытался сделать таймером несколько программ на делае выходит а на таймере не получается изменение программ кнопкой бегущий огонь. мерцание.бегущая тень. Подскажите как профисионал .в протеусе
в симуляторе АВР Студио работает все нормально, а на железе все светодиоды светятся. Что может быть? Пробовал варьировать с паузой, но не получилось... Прошу совета
Error 4 undefined reference to `Mig_Mig' Mig_Mig не задекларирован и на видео этого декларирования тоже не видно. Автор, куды его декларировать то, чтоб работало?
да я светодиод зажег и сбросил в 0 используя таймер в прерываниии по перевыполнению и прежим CTC разницу я не увидел правда использовал mega8 T2 8-битный
HEX файл на два кбайта меньше чем с delay в таймере у меня вышло с одним светодиодом а с програмной задержкой я менял 14 программ кнопкой в прерываниии
Привет всем Может быть я что-то не понимаю так как я начинающий всё-таки мне интересно. Как это программа работает. Может быть кто-то напишет правильный код на основе этой программы. Этот код нерабочий программа mig-mig вообще не работает.