<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[forum.rcl-radio.ru &mdash; TIMER Прерывания по сравнению]]></title>
		<link>http://forum.rcl-radio.ru/viewtopic.php?id=425</link>
		<atom:link href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=425&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «TIMER Прерывания по сравнению».]]></description>
		<lastBuildDate>Thu, 14 Oct 2021 09:05:04 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: TIMER Прерывания по сравнению]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=4780#p4780</link>
			<description><![CDATA[<div class="codebox"><pre><code>void setup() {
  pinMode(PA1, OUTPUT);
  
  timer_attach_interrupt(TIMER2, TIMER_UPDATE_INTERRUPT, led1); // прерывание по переполнению
  timer_attach_interrupt(TIMER2, TIMER_CC1_INTERRUPT, led);     // прерывание по сравнению 1

  RCC_BASE-&gt;APB1ENR|= (1&lt;&lt;0);  // TIM2EN &gt; включить тактирование tim_2 
  TIMER2_BASE-&gt;CR1=0;          // TIMx_CR1 &gt; стоп таймер
  TIMER2_BASE-&gt;PSC = 72-1;   // TIMx_PSC &gt; значение пред делителя -1 === F = 72 000 000 / 72 = 1 000 000 Hz
  TIMER2_BASE-&gt;ARR = 100-1;  // TIMx_ARR &gt; считать до установленого числа и обнулить === F = 1 000 000 / 100 = 10 000 Hz 
  TIMER2_BASE-&gt;CCR1 = 50-1;  // TIMx_CCR1 &gt; регистр сравнения 1  
  TIMER2_BASE-&gt;DIER |= (1&lt;&lt;0); // TIMx_DIER &gt; разрешить прерывание по переполнению
  TIMER2_BASE-&gt;DIER |= (1&lt;&lt;1); // TIMx_DIER &gt; разрешить прерывание по сравнению 1
  TIMER2_BASE-&gt;CR1|=(1&lt;&lt;0);    // TIMx_CR1 &gt; старт таймер
}

void loop() {}

void led1(){ //обработчик прерывания 
  digitalWrite(PA1, HIGH); 
  TIMER2_BASE-&gt;SR &amp;=~(1&lt;&lt;0); // TIMx_SR &gt; сбрасываем флаг прерывания
}
void led(){  //обработчик прерывания 
  digitalWrite(PA1, LOW); 
  TIMER2_BASE-&gt;SR &amp;=~(1&lt;&lt;0); // TIMx_SR &gt; сбрасываем флаг прерывания
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Thu, 14 Oct 2021 09:05:04 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=4780#p4780</guid>
		</item>
		<item>
			<title><![CDATA[Re: TIMER Прерывания по сравнению]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=4778#p4778</link>
			<description><![CDATA[<p>Тоже самое</p><div class="codebox"><pre><code>void setup() {
  pinMode(PA1, OUTPUT);
  
  timer_attach_interrupt(TIMER2, TIMER_UPDATE_INTERRUPT, led1); // прерывание по переполнению
  timer_attach_interrupt(TIMER2, TIMER_CC1_INTERRUPT, led);     // прерывание по сравнению 1

  RCC_BASE-&gt;APB1ENR |= RCC_APB1ENR_TIM2EN;     // TIM2EN &gt; включить тактирование tim_2 
  TIMER2_BASE-&gt;CR1 &amp;= ~TIMER_CR1_CEN;          // TIMx_CR1_CEN &gt; стоп таймер
  TIMER2_BASE-&gt;PSC = 7200-1;                   // TIMx_PSC &gt; значение пред делителя -1 === F = 72 000 000 / 7200 = 10000 Hz
  TIMER2_BASE-&gt;ARR = 10000-1;                  // TIMx_ARR &gt; считать до установленого числа и обнулить === F = 10000 / 10000 = 1 Hz | T = 1 s
  TIMER2_BASE-&gt;CCR1 = 5000-1;                  // TIMx_CCR1 &gt; регистр сравнения 1 === F = 10000 / 5000 = 2 Hz | T = 0.5 s
  TIMER2_BASE-&gt;DIER |= TIMER_DIER_UIE;         // TIMx_DIER_UIE &gt; разрешить прерывание по переполнению
  TIMER2_BASE-&gt;DIER |= TIMER_DIER_CC1IE;       // TIMx_DIER_CC1IE &gt; разрешить прерывание по сравнению 1
  TIMER2_BASE-&gt;CR1 |= TIMER_CR1_CEN;           // TIMx_CR1_CEN &gt; старт таймер
}

void loop() {}

void led1(){
  digitalWrite(PA1, HIGH); 
  TIMER2_BASE-&gt;SR &amp;=~ TIMER_SR_UIF;            // TIMx_SR_UIF &gt; сбрасываем флаг прерывания
}
void led(){  //обработчик прерывания 
  digitalWrite(PA1, LOW); 
  TIMER2_BASE-&gt;SR &amp;=~ TIMER_SR_UIF;            // TIMx_SR_UIF &gt; сбрасываем флаг прерывания
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Tue, 12 Oct 2021 16:31:45 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=4778#p4778</guid>
		</item>
		<item>
			<title><![CDATA[TIMER Прерывания по сравнению]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=4777#p4777</link>
			<description><![CDATA[<div class="codebox"><pre><code>void setup() {
  pinMode(PA1, OUTPUT);
  
  timer_attach_interrupt(TIMER2, TIMER_UPDATE_INTERRUPT, led1); // прерывание по переполнению
  timer_attach_interrupt(TIMER2, TIMER_CC1_INTERRUPT, led);     // прерывание по сравнению 1

  RCC_BASE-&gt;APB1ENR|= (1&lt;&lt;0);  // TIM2EN &gt; включить тактирование tim_2 
  TIMER2_BASE-&gt;CR1=0;          // TIMx_CR1 &gt; стоп таймер
  TIMER2_BASE-&gt;PSC = 7200-1;   // TIMx_PSC &gt; значение пред делителя -1 === F = 72 000 000 / 7200 = 10000 Hz
  TIMER2_BASE-&gt;ARR = 10000-1;  // TIMx_ARR &gt; считать до установленого числа и обнулить === F = 10000 / 10000 = 1 Hz | T = 1 s
  TIMER2_BASE-&gt;CCR1 = 5000-1;  // TIMx_CCR1 &gt; регистр сравнения 1 === F = 10000 / 5000 = 2 Hz | T = 0.5 s
  TIMER2_BASE-&gt;DIER |= (1&lt;&lt;0); // TIMx_DIER &gt; разрешить прерывание по переполнению
  TIMER2_BASE-&gt;DIER |= (1&lt;&lt;1); // TIMx_DIER &gt; разрешить прерывание по сравнению 1
  TIMER2_BASE-&gt;CR1|=(1&lt;&lt;0);    // TIMx_CR1 &gt; старт таймер
}

void loop() {}

void led1(){
  digitalWrite(PA1, HIGH); 
  TIMER2_BASE-&gt;SR &amp;=~(1&lt;&lt;0); // TIMx_SR &gt; сбрасываем флаг прерывания
}
void led(){  //обработчик прерывания 
  digitalWrite(PA1, LOW); 
  TIMER2_BASE-&gt;SR &amp;=~(1&lt;&lt;0); // TIMx_SR &gt; сбрасываем флаг прерывания
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Tue, 12 Oct 2021 07:35:03 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=4777#p4777</guid>
		</item>
	</channel>
</rss>
