<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Nastavil jsem</p>
<div style="color: #4e5b61;background-color: #ffffff;font-family: Consolas, 'Courier New', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;"><div><span style="color: #4e5b61;"> TCCR1A = </span><span style="color: #005c5f;">0</span><span style="color: #4e5b61;">;</span><span style="color: #95a5a6;"> // Vynulování registru TCCR1A</span></div><div><span style="color: #4e5b61;"> TCCR1B = </span><span style="color: #005c5f;">0</span><span style="color: #4e5b61;">;</span><span style="color: #95a5a6;"> // Vynulování registru TCCR1B</span></div>
<div><span style="color: #95a5a6;"> // Nastavení režimu Fast PWM (TOP = ICR1)</span></div><div><span style="color: #4e5b61;"> TCCR1A |= </span><span style="color: #434f54;">(</span><span style="color: #005c5f;">1</span><span style="color: #4e5b61;"> << WGM11</span><span style="color: #434f54;">)</span><span style="color: #4e5b61;">;</span></div><div><span style="color: #4e5b61;"> TCCR1B |= </span><span style="color: #434f54;">(</span><span style="color: #005c5f;">1</span><span style="color: #4e5b61;"> << WGM13</span><span style="color: #434f54;">)</span><span style="color: #4e5b61;"> | </span><span style="color: #434f54;">(</span><span style="color: #005c5f;">1</span><span style="color: #4e5b61;"> << WGM12</span><span style="color: #434f54;">)</span><span style="color: #4e5b61;">;</span></div>
<div><span style="color: #95a5a6;"> // Nastavení hodinového děliče na 64 (frekvence časovače = frekvence CPU / 64)</span></div><div><span style="color: #4e5b61;"> TCCR1B |= </span><span style="color: #434f54;">(</span><span style="color: #005c5f;">1</span><span style="color: #4e5b61;"> << CS11</span><span style="color: #434f54;">)</span><span style="color: #4e5b61;"> | </span><span style="color: #434f54;">(</span><span style="color: #005c5f;">1</span><span style="color: #4e5b61;"> << CS10</span><span style="color: #434f54;">)</span><span style="color: #4e5b61;">;</span></div>
<div><span style="color: #95a5a6;"> // Nastavení intervalu pro generování přerušení (100 us) - pro frekvenci CPU 16 MHz</span></div><div><span style="color: #95a5a6;"> // ICR1 = (F_CPU / (časový interval * hodinový dělič)) - 1</span></div><div><span style="color: #4e5b61;"> ICR1 = </span><span style="color: #005c5f;">24</span><span style="color: #4e5b61;">;</span><span style="color: #95a5a6;"> // 100 us při frekvenci CPU 16 MHz a hodinovém děliči 64</span></div>
<div><span style="color: #95a5a6;"> // Povolení přerušení od časovače Timer/Counter1</span></div><div><span style="color: #4e5b61;"> TIMSK1 |= </span><span style="color: #434f54;">(</span><span style="color: #005c5f;">1</span><span style="color: #4e5b61;"> << TOIE1</span><span style="color: #434f54;">)</span><span style="color: #4e5b61;">;</span></div>
</div>
<div style="color: #4e5b61;background-color: #ffffff;font-family: Consolas, 'Courier New', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;">
</div>
<div style="color: #4e5b61;background-color: #ffffff;font-family: Consolas, 'Courier New', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;">a rutina přerušení je zatím zcela triviální</div>
<div style="color: #4e5b61;background-color: #ffffff;font-family: Consolas, 'Courier New', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;">
</div>
<div style="color: #4e5b61;background-color: #ffffff;font-family: Consolas, 'Courier New', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;">
</div>
<div style="color: #4e5b61;background-color: #ffffff;font-family: Consolas, 'Courier New', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;"><div style="color: #4e5b61;background-color: #ffffff;font-family: Consolas, 'Courier New', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;"><div><span style="color: #d35400;">ISR</span><span style="color: #434f54;">(</span><span style="color: #4e5b61;">TIMER1_OVF_vect</span><span style="color: #434f54;">)</span><span style="color: #4e5b61;"> </span><span style="color: #434f54;">{</span></div><div><span style="color: #4e5b61;"> </span><span style="color: #d35400;">cli</span><span style="color: #434f54;">()</span><span style="color: #4e5b61;">;</span><span style="color: #95a5a6;"> // Vypnutí globálních přerušení</span></div><span style="color: #4e5b61;"> PORTA=</span><span style="color: #005c5f;">0</span><span style="color: #4e5b61;">;</span><div><span style="color: #4e5b61;"> PORTA=</span><span style="color: #4e5b61;"></span><span style="color: #005c5f;">0xFF</span><span style="color: #4e5b61;">;</span></div><span style="color: #4e5b61;"> </span><span style="color: #d35400;">sei</span><span style="color: #434f54;">()</span><span style="color: #4e5b61;">;</span><span style="color: #95a5a6;"> // Zapnutí globálních přerušení</span><div><span style="color: #434f54;">}</span></div>
Na všech bitech portu A jsou krásné obdélnikové pulzy. Ale perioda vyvolání pulzů je sice cca 100uS ale chaoticky kolísá. Co dělám blbě?
</div></div>
<p></p>
<pre class="moz-signature" cols="72">--
Martin Záruba</pre>
</body>
</html>