<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Использование 16-bit Timer/Counter1 для измерения и подсчета импульсов</title>
		<description>Обсуждение Использование 16-bit Timer/Counter1 для измерения и подсчета импульсов</description>
		<link>https://microsin.net/programming/avr/atmega-ct1-pulse-counting.html</link>
		<lastBuildDate>Tue, 15 Sep 2026 15:35:08 +0300</lastBuildDate>
		<generator>JComments</generator>
		<atom:link href="https://microsin.net/component/option,com_jcomments/format,raw/limit,10/object_group,com_content/object_id,1548/task,rss/" rel="self" type="application/rss+xml" />
		<item>
			<title>Ансаган написал:</title>
			<link>https://microsin.net/programming/avr/atmega-ct1-pulse-counting.html#comment-81155</link>
			<description><![CDATA[Мне нужно получить управляющие импульсы на выводы OC1A,OC1B для транзисторных ключей, с интервалом 50 секунд, частота кварца 3686400 Гц. Как можно организовать такое большое время? microsin: аппаратно интервалы управления ключами порядка 50 секунд нет смысла реализовывать на основе блока PWM, потому что в этом случае нужно как-то обеспечить тактирование его счетчика очень низкой частотой. При частоте тактирования 3.6864 МГц это довольно затруднительно, даже если активировать прескалер с максимальным коэффициентом деления 1024. Необходимо либо уменьшать частоту тактов, либо тактировать таймер от внешних импульсов с низкой частотой. Для их генерации можно использовать другой таймер, но это довольно неудобно. Большие интервалы времени можно организовать, если сделать инкремент переменной в обработчике прерывания любого счетчика. В обработчике прерывания переменная должна инкрементироват ься и проверяться. Если её значение достигло нужного значения (соответствующе го 50 секундам), то нужно выполнить соответствующие действия над ножками микроконтроллер а — установить или сбросить. Если правильно запрограммирова ть управление выводами, то получится тот же самый PWM, только программный.]]></description>
			<dc:creator>Ансаган</dc:creator>
			<pubDate>Thu, 25 Nov 2021 10:36:55 +0300</pubDate>
			<guid>https://microsin.net/programming/avr/atmega-ct1-pulse-counting.html#comment-81155</guid>
		</item>
		<item>
			<title>Дмитрий написал:</title>
			<link>https://microsin.net/programming/avr/atmega-ct1-pulse-counting.html#comment-4613</link>
			<description><![CDATA[Я хочу собрать счётчик моточасов на Аттини2313. Пришёл к такому же алгоритму, что описан у Вас в статье. Таймер0 для подсчёта импульсов с тахометра (диапазон от 25 до 200 Гц). Таймер1 с предделителем 1024 с прерыванием по переполнением. В прерывании заносим данные счётного регистра Таймера0 в переменную и обнуляем это регистр. В теории всё Ок. Но в Протеусе это тупо не работает. Вы с таким сталкивались? microsin: Протеусом никогода не пользовался, не было такой необходимости. Непонятно, кстати, зачем понадобились 2 таймера, к чему такие усложнения? Для отсчета реального времени достаточно одного таймера. На основе этого реального времени Вы можете определить частоту оборотов тахометра. По количеству импульсов с тахометра считайте наработку двигателя.]]></description>
			<dc:creator>Дмитрий</dc:creator>
			<pubDate>Thu, 06 Jul 2017 09:14:05 +0300</pubDate>
			<guid>https://microsin.net/programming/avr/atmega-ct1-pulse-counting.html#comment-4613</guid>
		</item>
		<item>
			<title>yuler написал:</title>
			<link>https://microsin.net/programming/avr/atmega-ct1-pulse-counting.html#comment-3218</link>
			<description><![CDATA[У меня Макетная плата AVR-USB-MEGA16, переделанная под DIP-корпус микроконтроллер  а. На C# я могу ли подсчитать импульсы поступающих от внешних датчиков. Если да то как? microsin: все тупо и просто. 1. Прошейте в микроконтроллер  платы прошивку Сергея Кухтецкого. 2. Откройте любой пример его программы, там показано как на C# записывать и читать регистры микроконтроллер  а ATmega32A (или ATmega16).]]></description>
			<dc:creator>yuler</dc:creator>
			<pubDate>Sat, 13 Feb 2016 20:30:24 +0300</pubDate>
			<guid>https://microsin.net/programming/avr/atmega-ct1-pulse-counting.html#comment-3218</guid>
		</item>
		<item>
			<title>Кирилл написал:</title>
			<link>https://microsin.net/programming/avr/atmega-ct1-pulse-counting.html#comment-2727</link>
			<description><![CDATA[Братцы, помогите!! Всю голову сломал! Как мне после подобного счета импульсов (импульсы с энкодера дискретностью 1000 имп./об., возможно будет и 10000 имп./об.) подсчитанное количество импульсов передать по USB в Labview? Нигде не могу найти ничего похожего... microsin: в Вашей задаче нет ничего невозможного, просто разбейте её на части. Например: 1. Сделайте виртуальный COM-порт (устройство USB класса CDC). LabView легко может обмениваться данными через COM-порт. Для всех популярных микроконтроллер ов есть готовые примеры устройств USB CDC. Все тупо и просто - берете готовенькое и радуетесь. 2. Добавьте код, который будет считать импульсы энкодера, желательно на аппаратных таймерах/счетчиках. 3. Придумайте устраивающий Вас протокол, по которому будут поверх USB CDC передаваться нужные Вам данные о количестве импульсов или их частоте. Вот собственно и все. Что может быть проще, если все делать по шагам? Советую выбрать микроконтроллер  с аппаратным интерфейсом USB на борту, например AT90USB162 или ATmega32U4. Примеров готового кода для них навалом, это же платформа AVR. Если по каким-то причинам Вас не устраивает класс USB CDC, то присмотритесь к USB HID. Это самый популярный на сегодняшний день класс устройств USB, и наверняка LabVeiw имеет для подключения к этому классу готовые компоненты и библиотеки или примеры кода. Тупо прогуглите LabView USB HID.]]></description>
			<dc:creator>Кирилл</dc:creator>
			<pubDate>Tue, 14 Apr 2015 22:13:38 +0300</pubDate>
			<guid>https://microsin.net/programming/avr/atmega-ct1-pulse-counting.html#comment-2727</guid>
		</item>
		<item>
			<title>poi_83 написал:</title>
			<link>https://microsin.net/programming/avr/atmega-ct1-pulse-counting.html#comment-2200</link>
			<description><![CDATA[Есть две последовательно  сти импульсов 1 Гц, сдвинутых одна относительно другой на некоторую величину, например 2 мкс. Как можно измерять этот сдвиг между фронтами импульсов двух последовательно  стей? microsin: Вас наверное аппаратные варианты измерения интересуют? Можно воспользоваться входом ICP1 (Input Capture pin счетчика 16-bit Timer/Counter1) для защелкивания значения счетчика TCNT1 в регистр ICR1. Другой вариант, с использованием внешнего логического элемента 3И-НЕ - подавать тактовые сигналы на счетный вход T1, когда не равны друг другу уровни входных последовательно  стей.]]></description>
			<dc:creator>poi_83</dc:creator>
			<pubDate>Sun, 08 Jun 2014 09:45:51 +0300</pubDate>
			<guid>https://microsin.net/programming/avr/atmega-ct1-pulse-counting.html#comment-2200</guid>
		</item>
	</channel>
</rss>
