<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=21166&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-08-23T15:45:17+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=21166&amp;mode</id>
<entry>
<author><name><![CDATA[Kolka47]]></name></author>
<updated>2018-08-23T15:45:17+01:00</updated>
<published>2018-08-23T15:45:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21166&amp;p=210946#p210946</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21166&amp;p=210946#p210946"/>
<title type="html"><![CDATA[Re: Błąd w przerwaniu od watchdog]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21166&amp;p=210946#p210946"><![CDATA[
Dziękuję już wszystko działa jak należy.<br /><div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br />Trzeba też wiedzieć, że wywołanie procedury obsługi przerwania zeruje bit WDIE, więc trzeba go za każdym razem ponownie ustawiać, jeśli chcemy, by następnym razem przerwanie też wystąpiło.<br /></div><br />Wiedziałem o tym dlatego w przerwaniu za każdym razem ustawiam ten bit. Co do ustawiania pozostałych bitów to próbowałem różnych konfiguracji (ustawianie wszystkich bitów na raz w jednej linii itp. ) jednak zawsze zerowałem bit WDE za pomocą ( &amp;= ~(1&lt;&lt;WDE)), bo tak było napisane w nocie, żeby ten bit zerować. Zmiana na ( |= (1&lt;&lt;WDE)) załatwiła sprawę. Tylko dlaczego ten bit należy ustawić skoro w nocie jest napisane, żeby zerować? <br /><div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />Dokładnie, a omawiam to tak przy okazji i pokazuję w kodzie dla ATtiny10 - ta sama zasada w poradniku:<br /></div><br />Zapewne odpowiedź znajdę w poradniku, więc muszę przysiąść wieczorem i nadrobić zaległości  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14902">Kolka47</a> — 23 sie 2018, o 15:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-08-22T17:14:17+01:00</updated>
<published>2018-08-22T17:14:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21166&amp;p=210910#p210910</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21166&amp;p=210910#p210910"/>
<title type="html"><![CDATA[Re: Błąd w przerwaniu od watchdog]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21166&amp;p=210910#p210910"><![CDATA[
<div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br />Trzeba też wiedzieć, że wywołanie procedury obsługi przerwania zeruje bit WDIE, więc trzeba go za każdym razem ponownie ustawiać, jeśli chcemy, by następnym razem przerwanie też wystąpiło.<br /></div><br />Dokładnie, a omawiam to tak przy okazji i pokazuję w kodzie dla ATtiny10 - ta sama zasada w poradniku:<br /><br /><!-- m --><a class="postlink" href="https://mirekk36.blogspot.com/2018/08/oszczedzanie-energii-drugie-zycie.html" >https://mirekk36.blogspot.com/2018/08/o ... zycie.html</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 22 sie 2018, o 17:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-08-22T17:12:43+01:00</updated>
<published>2018-08-22T17:12:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21166&amp;p=210909#p210909</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21166&amp;p=210909#p210909"/>
<title type="html"><![CDATA[Re: Błąd w przerwaniu od watchdog]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21166&amp;p=210909#p210909"><![CDATA[
<div class="quotetitle">Kolka47 napisał(a):</div><div class="quotecontent"><br />[syntax=c]        // wyczyszczenie bitu WDE<br />        MCUSR &amp;= ~(WDRF);<br />        WDTCSR |= (1&lt;&lt;WDCE);<br />        WDTCSR &amp;= ~(1&lt;&lt;WDE);<br /> <br />        //ustawienie watchdog w tryb INT i ustawienie preskalera 0,5s<br />        WDTCSR |= (1&lt;&lt;WDCE);<br />        WDTCSR |= (1&lt;&lt;WDIE)|(1&lt;&lt;WDP2)|(1&lt;&lt;WDP0);[/syntax]<br /></div><br />Aby zmienić ustawienia preskalera WDT należy zachować pewne reguły i zależności czasowe. Spróbuj może tak:[syntax=c]    MCUSR &amp;= ~(WDRF);<br />    WDTCSR |= (1&lt;&lt;WDCE) | (1&lt;&lt;WDE);      // obydwa bity muszą być wpisane<br />                                         // jednocześnie (WDE bez negacji)<br />    // tu nie może być dodatkowych instrukcji<br />    WDTCSR = (1&lt;&lt;WDIE)|(1&lt;&lt;WDP2)|(1&lt;&lt;WDP0);  // od razu trzeba wpisać odpowiednie wartości<br />                                             // tym razem bez ustawiania WDCE[/syntax]<br /><br />Trzeba też wiedzieć, że wywołanie procedury obsługi przerwania zeruje bit WDIE, więc trzeba go za każdym razem ponownie ustawiać, jeśli chcemy, by następnym razem przerwanie też wystąpiło.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 22 sie 2018, o 17:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Kolka47]]></name></author>
<updated>2018-08-22T13:45:14+01:00</updated>
<published>2018-08-22T13:45:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21166&amp;p=210890#p210890</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21166&amp;p=210890#p210890"/>
<title type="html"><![CDATA[Błąd w przerwaniu od watchdog]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21166&amp;p=210890#p210890"><![CDATA[
Witam!<br /><br />Chcę sobie użyć watchdoga do generowania przerwań, ale wyłączyć generowania przez niego resetu. Wg noty powinienem to zrobić zerując bit WDE w rejestrze WDTCSR oraz ustawiając bit WDIE, a następnie odpowiednimi bitami ustawiać preskaler. Robię wszystko tak jak opisano to w nocie i watchdog niby generuje przerwania, ale nie zależnie od ustawionych wartości preskalera zawsze występuje ono co 18ms. Próbowałem to wgrywać na dwa procki M328PB i M1284P i na obu działa tak samo. Czy ktoś mógłby zerknąć na kod i podpowiedzieć co tu mam źle? Wg ustawionego przeze mnie preskalera przerwanie powinno być co 0,5s. <br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br /><br />int main(void)<br />{<br />//config portu wyjsciowego<br />DDRD |= (1&lt;&lt;PD7);<br />PORTD &amp;= ~(1&lt;&lt;PD7);<br /><br />// wyczyszczenie bitu WDE<br />MCUSR &amp;= ~(WDRF);<br />WDTCSR |= (1&lt;&lt;WDCE);<br />WDTCSR &amp;= ~(1&lt;&lt;WDE);<br /><br />//ustawienie watchdog w tryb INT i ustawienie preskalera 0,5s<br />WDTCSR |= (1&lt;&lt;WDCE);<br />WDTCSR |= (1&lt;&lt;WDIE)|(1&lt;&lt;WDP2)|(1&lt;&lt;WDP0);<br /><br />sei();<br /><br />while(1)<br />{<br /><br />}<br />}<br /><br />ISR(WDT_vect)<br />{<br /><br />PORTD |= (1&lt;&lt;PD7);<br />PORTD &amp;= ~(1&lt;&lt;PD7);<br /><br />WDTCSR |= (1&lt;&lt;WDIE);<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14902">Kolka47</a> — 22 sie 2018, o 13:45</p><hr />
]]></content>
</entry>
</feed>