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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-12-18T02:35:48+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=13592&amp;mode</id>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2015-12-18T02:35:48+01:00</updated>
<published>2015-12-18T02:35:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148366#p148366</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148366#p148366"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148366#p148366"><![CDATA[
Można jeszcze przerobić poprawkę by mieć &quot;wash and go&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Zamiast zmieniać na:<br />[syntax=c]_WD_CONTROL_REG = (1 &lt;&lt; _WD_CHANGE_BIT) | (1 &lt;&lt; WDE);<br />_WD_CONTROL_REG = (1 &lt;&lt; WDP2) | (1 &lt;&lt; WDP1) | (1 &lt;&lt; WDP0) |  (1 &lt;&lt; WDE);[/syntax]<br />można zmienić na :<br />[syntax=c]_WD_CONTROL_REG = (1 &lt;&lt; _WD_CHANGE_BIT) | (1 &lt;&lt; WDE);<br />_WD_CONTROL_REG = (1 &lt;&lt; WDP2) | (1 &lt;&lt; WDP1) | (1 &lt;&lt; WDP0);[/syntax]<br />co wyłączy watchdoga, gdy nie ma go włączonego na stałe poprzez fuse bit WDTON. A dla włączonego na stałe, zmieni timer watchdoga na 2 sekundy.<br />Oczywiście muszą zostać dodane podawane wcześniej 2 rozkazy wdt_reset().<br />W sumie zmiany zwiększają rozmiar bootloadera o 2 rozkazy (4 bajty).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 18 gru 2015, o 02:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2015-12-18T01:33:58+01:00</updated>
<published>2015-12-18T01:33:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148365#p148365</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148365#p148365"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148365#p148365"><![CDATA[
Obszedłeś problem przez zwiększenie timera. Ale porządniej oraz uniwersalnie, bo nie każdy procesor ma czasy dłuższe niż 2 sekundy (np. ATmega128 nie ma), jest poprawienie tego błędu <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />A można to zrobić poprzez dodanie jeszcze w jednym miejscu resetowanie timera watchdoga (wdt_reset()).<br />Jak na szybko przeglądałem kod by zaproponować poprawki, to nie zauważyłem jeszcze jednej długiej pętli, a że u siebie robię inaczej, to nie pomyślałem o tym.<br />W Mirkowym bootloaderze przed wgrywaniem nowego wsadu kasowana jest na początku cała pamięć (ja u siebie robię kasowanie tylko tej strony którą w danym momencie wgrywam). A to zajmuje kilka sekund. Dlatego trzeba jeszcze zmienić:<br />[syntax=c]/* kasowanie całej pamięci programu */<br />                    for ( uint32_t Page_Address = 0; Page_Address &lt; BLS_START; <br />                        Page_Address += SPM_PAGESIZE )<br />                    {<br />wdt_reset();<br />                        /* skasowanie strony pamięci */<br />                        boot_page_erase( Page_Address );<br />                        boot_spm_busy_wait();<br />                    }[/syntax]<br /><br />Możesz sprawdzić czy teraz bootloader będzie już dział poprawnie?<br /><br />Ja u siebie używam timera dla wachdoga o wartości 1 sekunda (ustawiam tylko bity WDP2 i WDP1) i jest on na ATmega128 wystarczający. <br /><br />-- <br />Pozdrawiam,<br />Robert<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 23 minutach ]</span></strong><br /><br />Reset przy kasowaniu całej pamięci spowodowany był minimalnym nie zmieszczeniem się w 2 sekundach  <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> <br />Według datasheeta czasy wyglądają następująco:<br /><img src="https://obrazkiforum.atnel.pl/3427/dd6b983ac7550a1129af867c2b3d4d53.png" alt="Obrazek" /><br /><br />Co przy BL od 0x1FC00 powoduje konieczność skasowania 508 stron, czyli wymaga czasu w przedziale od 1.8796 do 2.2860 sekund.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 18 gru 2015, o 01:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[new_old_man]]></name></author>
<updated>2015-12-18T00:03:38+01:00</updated>
<published>2015-12-18T00:03:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148364#p148364</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148364#p148364"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148364#p148364"><![CDATA[
<div class="quotetitle">rskup napisał(a):</div><div class="quotecontent"><br />Testowałeś czy po wprowadzeniu zaproponowanych zmian w bootloaderze działa już on z WDTON=0?<br /></div><br />Niestety po wprowadzeniu tych zmian nawet z WDTON=1 bootloader nie działa. W prawdzie zgłasza się prawidłowo, ale nie wczytuje wsadu - po kilku sekundach pojawia się komunikat:<br /><strong>Błąd podczas programowania ! err: [OK]  timeout=301</strong><br />Usunąłem &quot;wdt_reset();&quot; i nadal to samo - nawet nie próbuje wgrywać. Będę kombinował dalej.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 7 minutach ]</span></strong><br /><br />Ok, już mam. Twoja propozycja ustawiała w mega1284p licznik na 2 s, zmieniłem na 8 sekund i ruszyło <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 12 minutach ]</span></strong><br /><br />I działa z WDTON=0 <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10976">new_old_man</a> — 18 gru 2015, o 00:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2015-12-17T23:41:06+01:00</updated>
<published>2015-12-17T23:41:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148362#p148362</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148362#p148362"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148362#p148362"><![CDATA[
Tam są poprawne, tylko niepełne informacje, bo nie przewidują Twojego przypadku z włączeniem watchdoga fuse bitem WDTON w tryb &quot;always on&quot;. Dlatego należy uderzyć do Mirka by dodał w swoim bootloaderze także obsługę takiej opcji działania watchdoga.<br /><br />Testowałeś czy po wprowadzeniu zaproponowanych zmian w bootloaderze działa już on z WDTON=0?<br /><br />-- <br />Pozdrawiam,<br />Robert<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 4 minutach ]</span></strong><br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Mała poprawka: wdt_reset(); - przynajmniej to się u mnie kompiluje i tak jest w wdt.h<br /></div><br />Tak. Zgadza się. __watchdog_reset(); pochodził z datasheeta i pewnie zaczerpnięty został z IARa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 17 gru 2015, o 23:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[new_old_man]]></name></author>
<updated>2015-12-17T23:02:43+01:00</updated>
<published>2015-12-17T23:02:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148356#p148356</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148356#p148356"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148356#p148356"><![CDATA[
Niestety masz rację. Usunąłem z kodu wszystkie makra resetujące watchdog i z włączonym bitem WDTON procek się restartuje co 15 ms.<br /><br />Ale całe to zamieszanie wynika z mojej totalnej niewiedzy. Byłem przekonany, że WDTON jest potrzebny, by móc po resecie odczytywać bajt MCUSR - w przeciwnym razie zostaje on zerowany, a informacja tracona <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" />  Teraz dopiero doczytałem, że włączenie bitu WDTON wymusza pracę watchdoga w trybie System Reset, co oznacza tyle, że uC jest resetowany z każdym przepełnieniem licznika, a przerwanie jest wyłączone. Dodatkowo nota podaje, że do poprawnej pracy uC w takim trybie konieczne jest okresowe resetowanie watchdoga i zmiana parametrów licznika (wydłużenie czasu), co podsumowane jest przykładem kodu realizującego te zadania.<br /><br />Wniosek jest też taki, że informacja na stronie <a href="http://atnel.pl/mkbootloader.html"  class="postlink">Atnela</a> trochę myli.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 28 minutach ]</span></strong><br /><br /><div class="quotetitle">rskup napisał(a):</div><div class="quotecontent"><br />2. dodanie resetowania timera watchdoga __watchdog_reset();<br /></div><br /><br />Mała poprawka: <strong>wdt_reset();</strong> - przynajmniej to się u mnie kompiluje i tak jest w wdt.h<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10976">new_old_man</a> — 17 gru 2015, o 23:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2015-12-17T23:46:12+01:00</updated>
<published>2015-12-17T15:33:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148314#p148314</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148314#p148314"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148314#p148314"><![CDATA[
Sprawdziłem u siebie na ATmega128 i nie da się programowo wyłączyć watchdoga jak jest on włączony poprzez fuse bit WDTON.<br />Czyli jest tak jak kiedyś myślałem i zrobiłem u siebie w bootloaderze. W datasheet od Atmega128 watchdog jest czytelniej opisany i czytając go nie ma się wrażenia sugerowania możliwości wyłączenia programowego przy włączeniu go poprzez fuse bit WDTON. W datasheet od Atmega1284 już jest bardziej pomieszane, bo być może autor chciał za dużo przekazać w krótkich słowach a sam watchdog w tym procesorze jest bardziej skomplikowany, bo obsługuje dodatkowo tryb z przerwaniem timera watchdoga.<br />Tak więc według mnie jak jest ustawiony watchdog do trybu always on poprzez fuse bit WDTON, to nie można go wyłączyć programowo i bootloader musi zostać zmieniony. Wystarczy zrobić drobną zmianę i pozbywamy się problemu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />W Mirkowym bootloaderze dla procesorów z watchdogiem w trybie always on należy zamienić kod w dwóch miejscach:<br />1. zmienić w static void __init3( void ) próbę wyłączenia watchdoga na zmianę timera wachdoga na długi czas np. (choć w niektórych procesorach można jeszcze wydłużyć poprzez dodanie bitu WDP3):<br />[syntax=c]_WD_CONTROL_REG = (1 &lt;&lt; _WD_CHANGE_BIT) | (1 &lt;&lt; WDE);<br />    _WD_CONTROL_REG = (1 &lt;&lt; WDP2) | (1 &lt;&lt; WDP1) | (1 &lt;&lt; WDP0) |  (1 &lt;&lt; WDE);[/syntax]<br /><br />2. dodanie resetowania timera watchdoga __watchdog_reset(); w funkcji czekającej na obiór z RS232 np. na początku pętli do w funkcji static uint16_t _UART_RX_Wait( uint16_t Timeout ):<br />[syntax=c]do<br />    {<br />        wdt_reset();<br />        if ( UCSRA &amp; 1 &lt;&lt; RXC )[/syntax]<br /><br />Przy ustawionym długim czasie timera watchdoga chyba wszystkie inne procedury zdążą się wykonać i nie trzeba dodawać nigdzie więcej rozkazu zerowania timera watchdoga. Ale to dobrze byłoby jeszcze przeanalizować.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 17 gru 2015, o 15:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[new_old_man]]></name></author>
<updated>2015-12-17T12:54:56+01:00</updated>
<published>2015-12-17T12:54:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148301#p148301</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148301#p148301"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148301#p148301"><![CDATA[
<div class="quotetitle">rskup napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent">Brak bootloadera; WDTON=0 - reset programowy działa prawidłowo.<br /></div><br />A czy w programie nie masz cyklicznego zerowania watchdoga i dzięki temu działa?</div><br />Hmmmmm... Zasiałeś ziarno niepewności. Wyłączam na początku watchdoga, żeby spokojnie odczytać MCUSR, potem wykonuję cykl operacji zajmujących kilka sekund, a watchdoga resetuję w pętli while. Ale teraz nie jestem pewny czy przypadkiem nie przełączam licznika na 8 sekund...<br />Sprawdzę.<br />Notabene bardzo trzeźwo myślisz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10976">new_old_man</a> — 17 gru 2015, o 12:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2015-12-16T21:56:43+01:00</updated>
<published>2015-12-16T21:56:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148255#p148255</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148255#p148255"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148255#p148255"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Brak bootloadera; WDTON=0 - reset programowy działa prawidłowo.<br /></div><br />A czy w programie nie masz cyklicznego zerowania watchdoga i dzięki temu działa?<br />Zaraz wygrzebię płytkę z atmegą128 i posprawdzam u siebie.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 16 gru 2015, o 21:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[new_old_man]]></name></author>
<updated>2015-12-16T19:26:44+01:00</updated>
<published>2015-12-16T19:26:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148244#p148244</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148244#p148244"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148244#p148244"><![CDATA[
Ale spójrz proszę jeszcze raz na moje testy:<br /><br /><div class="quotetitle">new_old_man napisał(a):</div><div class="quotecontent"><br />1. Brak bootloadera; WDTON=1 - reset programowy* działa prawidłowo.<br />2. Brak bootloadera; WDTON=0 - reset programowy działa prawidłowo.<br /></div><br />Na początku programu robię to:<br /><br />[syntax=c]void watchdog_get_mcusr(void)<br />{<br />mcusr_mirror = MCUSR;<br />MCUSR = 0;<br />wdt_disable();<br />}[/syntax]<br />Więc jednak programowo da się wyłączyć watchdog mimo ustawionego bitu WDTON.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10976">new_old_man</a> — 16 gru 2015, o 19:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2015-12-16T14:48:14+01:00</updated>
<published>2015-12-16T14:48:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148218#p148218</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148218#p148218"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148218#p148218"><![CDATA[
Powiem tak. Jak pisałem 10 lat temu swój bootloader na atmega128, to byłem przekonany, że opcja z fuse bit WDTON włącza na stałe watchdoga i nie ma możliwości wyłączenia go softwarowo. Dlatego mam w nim zawarte cykliczne resetowanie timera watchdoga (aby nie mieć problemów z resetem procesora to na początku ustawiam dużą wartość timera watchdoga).<br />Jakiś czas temu jak doszedłem do etapu aby spróbować przeportować swój kod bootloadera z asemblera na C (co z braku czasu do tej pory nie udało mi się), to pod wpływem różnych informacji nabrałem przekonania, że jednak odpowiednia sekwencja ma możliwość wyłączenia watchdoga.<br />Ale teraz po Twoich problemach przejrzałem datasheeta i znowu wracam do swojego starego przekonania, że jak ustawisz watchdog always on (fuse bit WDTON) to nie możesz go w żaden sposób wyłączyć. Aż dzisiaj wieczorem to sprawdzę.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 16 gru 2015, o 14:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[new_old_man]]></name></author>
<updated>2015-12-16T13:50:10+01:00</updated>
<published>2015-12-16T13:50:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148215#p148215</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148215#p148215"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148215#p148215"><![CDATA[
Nie wytrzymałem i pogrzebałem;) Wygrzebałem z mojego lss takie coś:<br /><br />[syntax=asm]0001fc38 &lt;__init3&gt;:<br />    static void __init3(void)<br />    {<br />        /* wyłączenie watchdoga (w tych mikrokontrolerach, w których watchdog <br />         * ma możliwość generowania przerwania pozostaje on też aktywny po <br />         * resecie) */<br />        MCUSR = 0;<br />   1fc38:14 be       out0x34, r1; 52<br />        _WD_CONTROL_REG = 1 &lt;&lt; _WD_CHANGE_BIT | 1 &lt;&lt; WDE;<br />   1fc3a:e0 e6       ldir30, 0x60; 96<br />   1fc3c:f0 e0       ldir31, 0x00; 0<br />   1fc3e:88 e1       ldir24, 0x18; 24<br />   1fc40:80 83       stZ, r24<br />        _WD_CONTROL_REG = 0;<br />   1fc42:10 82       stZ, r1[/syntax]<br />Nie jest to w prawdzie dokładnie ten sam kod, z którego korzystam w domu, ale fragment dot. watchdoga testowany przeze mnie z marnym skutkiem.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />I teraz zauważyłem jedną, ciekawą rzecz - brakuje klamry zamykającej funkcję. A w kodzie C jest... Czyżby coś było zamieszane z klamerkami w całym kodzie?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10976">new_old_man</a> — 16 gru 2015, o 13:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[new_old_man]]></name></author>
<updated>2015-12-16T10:49:33+01:00</updated>
<published>2015-12-16T10:49:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148204#p148204</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148204#p148204"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148204#p148204"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Według mnie to lss powinien zostać u Ciebie utworzony. Makefile od mkBootloader ma zapisy by go tworzyć:<br /></div><br />No widzisz. A mój nie ma - ver. 2.0.0 build 10, a na drugim komp. nowszy.<br /><br />Będę w domu, to skompiluję jeszcze raz z .lss.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10976">new_old_man</a> — 16 gru 2015, o 10:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2015-12-15T23:43:20+01:00</updated>
<published>2015-12-15T23:43:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148186#p148186</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148186#p148186"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148186#p148186"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />A jak zmusić BLS Generator w mkBootloader żeby tworzył *.lss?<br /></div><br />Jak masz plik .elf to aby dostać .lss należy użyć komendę:<br />avr-objdump -h -S Bootloader.elf  &gt;&quot;Bootloader.lss&quot;<br /><br />Możesz to zrobić samodzielnie z linii poleceń lub dodać do Makefile<br /><br />-- <br />Pozdrawiam,<br />Robert<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 26 minutach ]</span></strong><br /><br />Czy testujesz na podanym na początku procesorze ATmega1284?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 31 minutach ]</span></strong><br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />A jak zmusić BLS Generator w mkBootloader żeby tworzył *.lss?<br /></div><br />Według mnie to lss powinien zostać u Ciebie utworzony. Makefile od mkBootloader ma zapisy by go tworzyć:<br />[syntax=c]# Default target.<br />all: begin sizebefore build sizeafter end<br /><br /># Change the build target to build a HEX file or a library.<br />build: elf hex lss sym<br />#build: lib<br /><br />burn: fuse program lock<br /><br />elf: $(TARGET).elf<br />hex: $(TARGET).hex<br />lss: $(TARGET).lss<br /><br />...<br /><br /># Create extended listing file from ELF output file.<br />%.lss: %.elf<br />@echo<br />@echo Creating Extended Listing: $@<br />$(OBJDUMP) -h -S -z $&lt; &gt; $@[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 15 gru 2015, o 23:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[new_old_man]]></name></author>
<updated>2015-12-15T22:46:49+01:00</updated>
<published>2015-12-15T22:46:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148181#p148181</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148181#p148181"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148181#p148181"><![CDATA[
A jak zmusić BLS Generator w mkBootloader żeby tworzył *.lss?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 8 minutach ]</span></strong><br /><br />Nie znam się na assemblerze (żałuję, że za czasów Atari 800XE szerokim łukiem omijałem tą dyskietkę...), ale wyłuskałem coś takiego:<br /><br />[syntax=asm]145               /* epilogue start */<br /> 231:main.c        **** #define WDIF<br /> 146               .loc 1 231 0<br /> 147               /* #NOAPP */<br /> 148               .cfi_endproc<br /> 149               .LFE8:<br /> 151               .section.init3,&quot;ax&quot;,@progbits<br /> 153               __init3:<br /> 154               .LFB9:<br /> 240:main.c        ****         /* wy31czenie watchdoga (w tych mikrokontrolerach, w których watchdog <br /> 155               .loc 1 240 0<br /> 156               .cfi_startproc<br /> 157               /* prologue: naked */<br /> 158               /* frame size = 0 */<br /> 159               /* stack size = 0 */<br /> 160               .L__stack_usage = 0<br /> 244:main.c        ****         _WD_CONTROL_REG = 1 &lt;&lt; _WD_CHANGE_BIT | 1 &lt;&lt; WDE;<br /> 161               .loc 1 244 0<br /> 162 0000 14BE      out 0x34,__zero_reg__<br /> 245:main.c        ****         _WD_CONTROL_REG = 0;<br /> 163               .loc 1 245 0<br /> 164 0002 E0E6      ldi r30,lo8(96)<br /> 165 0004 F0E0      ldi r31,0<br /> 166 0006 88E1      ldi r24,lo8(24)<br /> 167 0008 8083      st Z,r24<br /> 246:main.c        ****     }<br /> 168               .loc 1 246 0<br /> 169 000a 1082      st Z,__zero_reg__<br /> 170               /* epilogue start */<br /> 247:main.c        **** #endif[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10976">new_old_man</a> — 15 gru 2015, o 22:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2015-12-15T22:34:48+01:00</updated>
<published>2015-12-15T22:34:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148177#p148177</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148177#p148177"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148177#p148177"><![CDATA[
A pokaż sekwencję wyłączającą watchdoga w bootloaderze. Najlepiej wersję w asemblerze z pliku .lss.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 15 gru 2015, o 22:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[new_old_man]]></name></author>
<updated>2015-12-15T22:27:09+01:00</updated>
<published>2015-12-15T22:27:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148174#p148174</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148174#p148174"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148174#p148174"><![CDATA[
<div class="quotetitle">rskup napisał(a):</div><div class="quotecontent"><br />Jak masz ustawiony fuse bit WDTON?<br />Ustaw go fabrycznie (wyłącz &quot;Watchdog Timer always on&quot;) i zobacz czy masz dalej cykliczne resety.<br /></div><br />Zrobiłem więc następujące testy:<br />1. Brak bootloadera; WDTON=1 - reset programowy* działa prawidłowo.<br />2. Brak bootloadera; WDTON=0 - reset programowy działa prawidłowo.<br />3. Bootloader; WDTON=1 - bootloader działa prawidłowo, odpowiada na komendę &quot;ui&quot;.<br />4. Bootloader; WDTON=0 - cały czas znaki &quot;?&quot;, czasem, ale z wielkim trudem udaje się wymusić odpowiedź na &quot;ui&quot; - generalnie ciągły reset procka.<br /><br />Ja z tego wnioskuję, że wyłączanie watchdoga w sekcji bootloadera nie działa. Tylko zastanawiam się teraz dlaczego. Korzystam z prawie standardowego kodu udostępnionego w mkBootloader z tą różnicą, że zmodyfikowałem go pod UART1.<br /><br />* dla ścisłości reset programowy:<br />[syntax=c]{<br />wdt_enable(WDTO_15MS);  // set  watchdog<br />cli();              // disable interrupts<br />while(1);           // wait for RESET<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10976">new_old_man</a> — 15 gru 2015, o 22:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2015-12-15T18:18:10+01:00</updated>
<published>2015-12-15T18:18:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148120#p148120</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148120#p148120"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148120#p148120"><![CDATA[
Oczywiście reset przez watchdog ustawia domyślną wartość.<br />Ale mnie chodziło o zmianę przy procedurze wyłączania WD w bootloaderze. Jak twierdzisz, że Ci się WD nie wyłącza, to będzie można sprawdzić czy to prawda.<br /><br />-- <br />Pozdrawiam,<br />Robert<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />Jak masz ustawiony fuse bit WDTON?<br />Ustaw go fabrycznie (wyłącz &quot;Watchdog Timer always on&quot;) i zobacz czy masz dalej cykliczne resety.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 15 gru 2015, o 18:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[new_old_man]]></name></author>
<updated>2015-12-15T17:34:53+01:00</updated>
<published>2015-12-15T17:34:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148115#p148115</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148115#p148115"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148115#p148115"><![CDATA[
<div class="quotetitle">rskup napisał(a):</div><div class="quotecontent"><br />A przestaw watchdoga na maksymalny czas i zobacz czy zmniejszyła się częstotliwość resetów. Jak tak to na pewno działającego wina watchdoga, a jak nie, to masz jakiś inny błąd.<br /><br />-- <br />Pozdrawiam,<br />Robert<br /></div><br />Wrócę do domu, to jak najbardziej sprawdzę. Ale czy to nie jest tak, że mimo ustawień watchdog po resecie i tak ustawia minimalny czas? Muszę zerknąć do dokumentacji.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10976">new_old_man</a> — 15 gru 2015, o 17:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2015-12-15T11:40:53+01:00</updated>
<published>2015-12-15T11:40:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148086#p148086</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148086#p148086"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148086#p148086"><![CDATA[
A przestaw watchdoga na maksymalny czas i zobacz czy zmniejszyła się częstotliwość resetów. Jak tak to na pewno działającego wina watchdoga, a jak nie, to masz jakiś inny błąd.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 15 gru 2015, o 11:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[new_old_man]]></name></author>
<updated>2015-12-14T23:04:13+01:00</updated>
<published>2015-12-14T23:04:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148041#p148041</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148041#p148041"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=148041#p148041"><![CDATA[
<div class="quotetitle">Grzegorz... napisał(a):</div><div class="quotecontent"><br />Wątków nie należy zamykać jeśli ktoś w podobnym temacie może zadać pytanie.<br />Poza tym jak sobie poradziłeś to warto podać w jaki sposób - tak dla potomności.<br /></div><br />No właśnie nie poradziłem sobie, jak się okazuje:/<br /><br />Mam teraz taki problem, że po resecie procka poleceniem po &quot;AT+RST&quot;, czyli gdy watchdog ustawia się na najkrótszy czas, w konsoli otrzymuję od bootloadera pytajniki bez możliwości zrobienia czegokolwiek. Wygląda to tak, jakby procesor ciągle się resetował. Tylko tyle, że w kodzie bootloadera mam taki zapis:<br /><br />[syntax=c]#define WDIF /* dla pewnosci */<br /><br />#ifdef WDIF<br />    static void __init3(void) __attribute__ ((section(&quot;.init3&quot;), naked, used));<br />    static void __init3(void)<br />    {<br />        /* wy³¹czenie watchdoga (w tych mikrokontrolerach, w których watchdog <br />         * ma mo¿liwoæ generowania przerwania pozostaje on te¿ aktywny po <br />         * resecie) */<br />          MCUSR = 0;<br />        _WD_CONTROL_REG = 1 &lt;&lt; _WD_CHANGE_BIT | 1 &lt;&lt; WDE;<br />        _WD_CONTROL_REG = 0;<br />    }<br />#endif[/syntax]<br />który teoretycznie powinien mi wyłączać watchdoga jeszcze przed programem. Nie wiem, co jest grane.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10976">new_old_man</a> — 14 gru 2015, o 23:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Grzegorz...]]></name></author>
<updated>2015-11-16T22:26:38+01:00</updated>
<published>2015-11-16T22:26:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=145677#p145677</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=145677#p145677"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=145677#p145677"><![CDATA[
Wątków nie należy zamykać jeśli ktoś w podobnym temacie może zadać pytanie.<br />Poza tym jak sobie poradziłeś to warto podać w jaki sposób - tak dla potomności.<br /><br />-- <br />Grzegorz...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1748">Grzegorz...</a> — 16 lis 2015, o 22:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[new_old_man]]></name></author>
<updated>2015-11-15T15:52:30+01:00</updated>
<published>2015-11-15T15:52:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=145502#p145502</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=145502#p145502"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=145502#p145502"><![CDATA[
Generalnie wiem, jakie mam oczekiwania - chcę właśnie sprawdzać przyczynę resetu, stąd ten post. Ale już sobie z tym poradziłem - działa i bootloader i odczyt MCUSR:D<br /><br />Ale za to:<br /><div class="quotetitle">rskup napisał(a):</div><div class="quotecontent"><br />Ale wyzwolenie bootladera bo nieoczekiwanym resecie watchdoga, to tak trochę nie za ładnie.<br />Ja w swoim bootloaderze sprawdzam przyczynę resetu i nie w każdej pozwalam mu się uruchomić.<br /></div><br />masz ode mnie &quot;Pomógł&quot; - bardzo cenna uwaga!<br /><br />Wątek do zamknięcia.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />Ach, tutaj chyba nie da się samemu zakończyć wątku;)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10976">new_old_man</a> — 15 lis 2015, o 15:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2015-11-15T13:09:12+01:00</updated>
<published>2015-11-15T13:09:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=145483#p145483</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=145483#p145483"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=145483#p145483"><![CDATA[
WDIF jest to nazwa bitu w rejestrze WDTCSR – Watchdog Timer Control Register<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br /><strong>Bit 7 - WDIF: Watchdog Interrupt Flag</strong><br />This bit is set when a time-out occurs in the Watchdog Timer and the Watchdog Timer is configured for interrupt. WDIF is cleared by hardware when executing the corresponding interrupt handling vector. Alternatively, WDIF is cleared by writing a logic one to the flag. When the I-bit in SREG and WDIE are set, the Watchdog Time-out Interrupt is executed.<br /></div><br />Wyzerowanie MCUSR jest &quot;zapomnieniem&quot; o przyczynie resetu mikroprocesora. Jak nie interesują Cię przyczyna, to możesz tego rejestru wcale nie dotykać. Ale wyzwolenie bootladera bo nieoczekiwanym resecie watchdoga, to tak trochę nie za ładnie.<br />Ja w swoim bootloaderze sprawdzam przyczynę resetu i nie w każdej pozwalam mu się uruchomić.<br /><br />Pamiętaj tylko:<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />To make use of the Reset Flags to identify a reset condition, the user should read and then Reset the MCUSR as early as possible in the program. If the register is cleared before another reset occurs, the source of the reset can be found by examining the Reset Flags.<br /></div><br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 15 lis 2015, o 13:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[new_old_man]]></name></author>
<updated>2015-11-15T07:54:27+01:00</updated>
<published>2015-11-15T07:54:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=145460#p145460</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=145460#p145460"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=145460#p145460"><![CDATA[
No to kolejna seria pytań:<br />- czy można wyłączyć zerowanie MCUSR bez konsekwencji, tzn czy działanie bootloadera zależy od tego?<br />- gdzie następuje to zerowania - czy w tym miejscu, o którym pisałem, a jeśli tak, to gdzie zdefiniowany jest WDIF?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10976">new_old_man</a> — 15 lis 2015, o 07:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-11-15T00:33:30+01:00</updated>
<published>2015-11-15T00:33:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=145457#p145457</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=145457#p145457"/>
<title type="html"><![CDATA[Re: Odczyt MCUSR, a bootloader - coś się gryzie:/]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13592&amp;p=145457#p145457"><![CDATA[
<div class="quotetitle">new_old_man napisał(a):</div><div class="quotecontent"><br />Potrzebuje wiedzieć czy Mirkowy bootloader zeruje MCUSR<br /></div><br />Oczywiście, że zeruje<br /><br /><div class="quotetitle">new_old_man napisał(a):</div><div class="quotecontent"><br />to czy można to wyłączyć i jak.<br /></div><br />Kod źródłowy jest otwarty można sobie wprowadzać dowolne zmiany<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 15 lis 2015, o 00:33</p><hr />
]]></content>
</entry>
</feed>