<?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=8&amp;t=4488&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-10-15T23:06:13+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=4488&amp;mode</id>
<entry>
<author><name><![CDATA[telemaniak]]></name></author>
<updated>2013-10-15T23:06:13+01:00</updated>
<published>2013-10-15T23:06:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4488&amp;p=53085#p53085</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4488&amp;p=53085#p53085"/>
<title type="html"><![CDATA[Re: Atmega32U4 restartuje program po załączeniu przerwań...]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4488&amp;p=53085#p53085"><![CDATA[
Sprawdziłem rejestry i wgląda na to że bootloader faktycznie coś tam poprzestawiał. Wg datasheet defaultowo USB ma być wyłączone a w rejestrach jest dokładnie na odwrót czyli załączone. Więc już wszytko jasne. Dzięki za pomoc <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=1164">telemaniak</a> — 15 paź 2013, o 23:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[telemaniak]]></name></author>
<updated>2013-10-15T16:30:37+01:00</updated>
<published>2013-10-15T16:30:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4488&amp;p=53040#p53040</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4488&amp;p=53040#p53040"/>
<title type="html"><![CDATA[Re: Atmega32U4 restartuje program po załączeniu przerwań...]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4488&amp;p=53040#p53040"><![CDATA[
Układ mam podłączony do LCD więc mam taki jakby podgląd - powstawiałem sobie delay'e i ładnie widać że dokładnie w momencie sei() program zaczyna lecieć od nowa (inicjalizuje się lcd, wyświetla znowu napis powitalny itd).<br /><br />Coś może być na rzeczy z tymi przerwaniami (od USB?) bo wstawiłem sobie do kodu takie oto linijki:<br /><br />[syntax]USBCON |= (1 &lt;&lt; FRZCLK);             // Freeze the USB Clock              <br />PLLCSR &amp;= ~(1 &lt;&lt; PLLE);              // Disable the USB Clock (PPL) <br />USBCON &amp;=  ~(1 &lt;&lt; USBE  );           // Disable the USB[/syntax]<br /><br />...mają za zadanie wyłączyć USB i faktycznie po tym zabiegu restarty ustają. Z tym że na razie robię to po omacku bo jeszcze zupełnie nie ogarniam tego USB. Np co konkretnie jest za te restarty odpowiedzialne? No ale w każdym razie miałoby to znaczyć że w Atmega32U4 należy pamiętać żeby coś pokonfigurować w rejestrach od USB przed włączeniem przerwań bo inaczej narażamy się na kłopoty? Byłoby to chyba trochę dziwne.<br /><br />Jeżeli chodzi o operacje na rejestrach to w moim kodzie nie mam raczej nic specjalnego - jedynie lekko zmodyfikowana (na potrzeby Atmega32U4) obsługa timera<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">TCCR0A = (1&lt;&lt;WGM01);               // tryb CTC<br />TCCR0B |= (1&lt;&lt;CS01)|(1&lt;&lt;CS00);         // prescaler 64<br />OCR0A = (uint8_t)(F_CPU / 64 / 1000 );           // 1ms  --&gt; poprawka do VIDEO<br />TIMSK0 |= (1&lt;&lt;OCIE0A);</div><br /><br /> no i teraz dodałem tylko ten fragment wyłączający USB.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1164">telemaniak</a> — 15 paź 2013, o 16:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[telemaniak]]></name></author>
<updated>2013-10-15T12:24:55+01:00</updated>
<published>2013-10-15T12:24:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4488&amp;p=53012#p53012</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4488&amp;p=53012#p53012"/>
<title type="html"><![CDATA[Atmega32U4 restartuje program po załączeniu przerwań...]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4488&amp;p=53012#p53012"><![CDATA[
Witam, a więc po kolei... Mam płytkę Arduino Leonardo ale wykorzystuję ją wyłącznie jako platformę sprzętową dla Atmega32U4 z USB i programuję tradycyjnie tzn. avrgcc i najnowszy toolchain C. Arduinowego bootloadera zostawiłem i flash'uję ją przez kabelek USB.<br /><br />Chciałem uruchomić na tej platformie przykład z blogu Pana Mirka - ENKODER AVR - callbacków ciąg dalszy cz.2. Musiałem zrobić małe zmiany przy podłączeniach pinów oraz obsłudze TIMERA (wszakże inny procek). No i niby działa... tzn sam enkoder i procedury jego obsługi działają perfekcyjnie ale tylko kiedy odłączę port USB od laptopa!<br />Jeżeli płytka jest podłączona do USB to dokładnie w momencie uruchomienia obsługi przerwań &quot;sei();&quot; program restartuje się (na LCD ponownie wyświetla się &quot;start...&quot;). Na to zachowanie nie ma wpływu sposób inicjalizacji timera - jeżeli wywalę uruchamianie funkcji &quot;encoder_init()&quot; to problem dalej występuje (restart następuje dokładnie w chwili wykonania polecenia sei();) <br /><br />Macie jakieś pomysły, wskazówki co to może być? Bawię się tym prockiem od kilku dni dopiero i ta sytuacja jest dla mnie dość zaskakująca.  Może coś w fusebitach? Nie zmieniałem ich - są takie jak defaultowo programują w Arduino...<br /><br />P.S.<br />- restartuje się tylko program - nie załącza się bootloader (jakby to miało miejsce po naciśnięciu fizycznego reset)<br />- jeżeli zaraz po sei() wstawię cli() to nie ma restartu.<br />- przed chwilą sprawdziłem taki scenariusz: włączam układ bez podłączonego USB, uruchamia się, pięknie chodzi enkoder z przyciskiem. Po chwili podłączam wtyk USB - procek zaczyna resetować program. Wyłączam kabel - nic się nie zmienia - dalej resetuje.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1164">telemaniak</a> — 15 paź 2013, o 12:24</p><hr />
]]></content>
</entry>
</feed>