Таймер-счетчик 0 ATmega8 | Микроконтроллеры с нуля #12

preview_player
Показать описание
Таймер-счетчик 0 микроконтроллера ATmega8 является 8-ми битным, то есть в нем может содержаться 256 тактов микроконтроллера, что соответствует строгому определенному промежутку времени. Все у микроконтроллера ATmega8 три таймер-счетчика: 0, 1 и 2. 1-й т-с наиболее функциональный и является 16-ти битным, поэтому он отдельно рассмотрен в следующем видео. 0-й и 2-й – 8-ми битные. Как говорит само за себя название, таймер-счетчик может осуществлять как прямой, так и обратный счет времени, обязательно привязанный к тактовой частоте работы микроконтроллера. Хранение или запись данных осуществляется, соответствующих определенному интервалу времени, выполняется в регистр счета TCNT0, а настройка режимов работы производится установкой и сбросом соответствующих битов в регистре TCCR0.

Ссылки на покупку полезных элементов, необходимых для успешного изучения программирования микроконтроллеров AVR.

#ТаймерCчетчик #AVR #ATmega8
Рекомендации по теме
Комментарии
Автор

Внимание. Не допускайте таких ошибок. Они ОЧЕНЬ трудно вылавливаются.Автор ролика рассматривая предделитель таймера НЕСКОЛЬКО РАЗ говорил, что это равносильно уменьшению ЧАСТОТЫ МИКРОКОНТРОЛЛЕРА. Это не так. Замедляется только счетчик таймера. Частота выполнения команд остается прежней. В основном одна команда за один такт (тик). Здесь зарыта главная пакость, с которой можно столкнуться: С учетом делителя на 1024 счетчик увеличивает свое значение через каждые 1024 такта генератора микроконтроллера. За это время микроконтроллер успевает сделать около 1000 команд. И если цикл "while (1) " выполняется быстрее, чем за 1024 такта, то проверка " if TCNT0==255" на каждое изменение счетчика исполнится хотя бы 1 раз или более. Если цикл "while (1)" исполняется более чем за время инкремента таймера (увеличения на 1), счетчик за круг программы изменится на несколько единиц, и число 255 и/или 128 счетчика проскочит раньше, чем по циклу подойдет команда "if TCNT0==255". Выполнение условия будет хаотичным и найти причину этого очень сложно. Пока по сложности уроки не дошли до прерываний, нужно использовать условия "Если меньше 128, то горит, иначе - выключили". Хотя и здесь при длинном цикле можно пролететь.

ustoKZ
Автор

Очень круто, что Вы обучаете ещё и "ДатаШитом" пользоваться.

slavslav
Автор

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

Thethug
Автор

Самый лучший канал по мк! Благодарю! Ничего понятней не встречал

stanki-cnc
Автор

Очень все понятно
Огромная благодарность за Ваш труд
Успехов Вам

valeravorontsov
Автор

Благодарю!за столь важный стиль изложения, а именно- понятный!!!

lfindst
Автор

Спасибо большое, за такие подробные уроки !

vv
Автор

Спасибо за урок)
Хочу сказать, что такой вариант работы с таймером имеет место быть только при большом значении предделителя, либо при отсутствии других задач. В данном примере на опрос и сравнение регистра TCNT дается 1024 такта, а другие задачи отсутствуют. Но если предделитель был бы 8, то на опрос давалось бы только 8 тактов. И был бы очень большой шанс, что мы не успеем проверить TCNT, в результате чего пропустим событие. Лучше тогда сделать не "== 125", а "> 125". Тогда мы бы все равно переключили светодиод, даже если уже 126.

frhylsu
Автор

спасибо за материал, с довольствием его пересмотрел, ты очень хорошо, подробно обясняешь

vitalyivanov
Автор

Видео мне очень помогло разобраться с Атини13, Спасибо !

goiiia
Автор

Изключителен професионализъм, великолепно изложение! Успехи!

yzmykpi
Автор

Спасибо большое, так доступно о таймере +100 балов

zero_zet
Автор

Поправочки:
1. 16-битный таймер только №1
2. 16 бит имеет 65536 значений, включая 0
3. Счет вы показали, как битовый сдвиг, а не как инкрементирование. У вас вышел почти логарифмический счетчик :))) хотя может и правильно имели ввиду, но не сумели обьяснить на пальцах.

mrDream
Автор

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

iqzwown
Автор

Отличное объяснение. Даже мне понятно! +5

explay
Автор

Тысяча очков Гриффиндору за простое, внятное и цельное объяснение

kykhpdg
Автор

Молодец парень, очень доступно объясняешь.На ехидство в коментах не обращай внимания, так всегда, все гении (в кавычках) пока за кулисами, а вышел на свет Спасибо за твой труд!!

umzmcmv
Автор

16битные таймеры могут хранить 65536 значений, а не 1024!

positivuz
Автор

на 0:58: "256 значений может храниться в 8-битном счетчике (прим. согласен, поскольку 2 в степени 8 равно 256), а в 1-ом и 2-ом 16-битных счетчиках могут хранится 1024 значения". Разве 2 в степени 16 равно 1024?! Для тех, кто не в курсе: 65536!
На 6:58: будет 32 микросекунды.

zjilylx
Автор

Период прохода таймера через нулевое значение не 255 а 256 микросекунд.

reodos
join shbcf.ru