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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-08-30T09:59:39+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=28&amp;t=21201&amp;mode</id>
<entry>
<author><name><![CDATA[Dziaba]]></name></author>
<updated>2018-08-30T09:59:39+01:00</updated>
<published>2018-08-30T09:59:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211166#p211166</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211166#p211166"/>
<title type="html"><![CDATA[Re: Problem przy multipleksowaniu z kwarcem 16 MHz]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211166#p211166"><![CDATA[
Wgrałem. Za każdym razem, kiedy chcę migać diodą co 1s lub kiedy ustawiam ją na stałe w pętli nieskończonej lub poza, dioda wciąż miga jak pokręcona.<br /><br />Tutaj są ustawienia:<br />mkAvrCaclucator<br /><a href="https://obrazkiforum.atnel.pl/17781/a7f3d83828f233119f8d09fcb9c4a90a.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/17781/a7f3d83828f233119f8d09fcb9c4a90a.png" alt="Obrazek" /></a><br /><br />Eclipse Mars<br /><a href="https://obrazkiforum.atnel.pl/17781/3acc4bfd833098205e9fa73bf24f994c.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/17781/3acc4bfd833098205e9fa73bf24f994c.png" alt="Obrazek" /></a><br /><br />Zauważyłem też, że mimo, że jest to ATMEGA8A to mkAvrCalculator i eclipse wykrywają ją jako ATMEGA8, powinno tak być?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 5 minutach ]</span></strong><br /><br /><div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">Dziaba napisał(a):</div><div class="quotecontent">Skąd ten reset w takim razie?<br /></div><br />Jeśli to &quot;zupełnie nowy program&quot;, w którym nie ma nic poza zapaleniem diody, wyeliminowałeś źródła zakłóceń i ewentualne problemy z zasilaniem, to obstawiłbym omyłkowe włączenie watchdoga (zaprogramowany fusebit WDTON). Podczas zmiany taktowania na zewnętrzne musiałeś zmieniać fusebity, więc mogłeś się pomylić.</div><br /><br />Zbawco! Rzeczywiście, w jakiś sposób musiałem zaznaczyć ten fuse bit <img src="https://forum.atnel.pl/images/smilies/icon_e_surprised.gif" alt=":o" title="Zdziwiony" /> Chociaż nie przypominam sobie, żebym to robił rzeczywiście był zaznaczony. Spróbuję na nowo zmontować NIXIE i powiadomię o wynikach.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 11 minutach ]</span></strong><br /><br />Działa. Wszystkie 6 NIXIE pięknie się wyświetla, chociaż poświata jest inna niż przy wewnętrznych 8MHz, ale to już spróbuję dopasować częstotliwością multipleksowania. Bardzo dziękuję wszystkim za pomoc!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17781">Dziaba</a> — 30 sie 2018, o 09:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-08-30T09:51:36+01:00</updated>
<published>2018-08-30T09:51:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211165#p211165</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211165#p211165"/>
<title type="html"><![CDATA[Re: Problem przy multipleksowaniu z kwarcem 16 MHz]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211165#p211165"><![CDATA[
<div class="quotetitle">Dziaba napisał(a):</div><div class="quotecontent"><br />Skąd ten reset w takim razie?<br /></div><br />Jeśli to &quot;zupełnie nowy program&quot;, w którym nie ma nic poza zapaleniem diody, wyeliminowałeś źródła zakłóceń i ewentualne problemy z zasilaniem, to obstawiłbym omyłkowe włączenie watchdoga (zaprogramowany fusebit WDTON). Podczas zmiany taktowania na zewnętrzne musiałeś zmieniać fusebity, więc mogłeś się pomylić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 30 sie 2018, o 09:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2018-08-30T09:41:48+01:00</updated>
<published>2018-08-30T09:41:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211164#p211164</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211164#p211164"/>
<title type="html"><![CDATA[Re: Problem przy multipleksowaniu z kwarcem 16 MHz]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211164#p211164"><![CDATA[
<div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br />Kod, który znajduje się na początku funkcji main() znajdujący się przed główną pętlą programu while(1) wykonywany jest tylko raz przy starcie. Wstaw tam zapalenie jakiejś diody (bez delay, po prostu zapal).<br />Dioda powinna się zapalić i świecić (pełnym światłem) przez cały czas działania programu. Jeśli będzie migać lub przygasać, będzie to oznaczać, że mikrokontroler się resetuje. Później pozostanie znalezienie przyczyny. Przetwornica może być jednym z głównych podejrzanych...<br /></div><br /><br />Tak trzeba zrobić ale myślę, że na wewnętrznym oscylatorze efekt przy złym zasilaniu byłby ten sam.<br />Ja bym wgrał do procka coś takiego<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br /><br /><br /><br /><br /><br /> int main(void){<br /><br /> DDRB |=(1&lt;&lt;PB1);<br /><br /><br /> while(1){<br /> PORTB ^=(1&lt;&lt;PB1);<br /> _delay_ms(1000);<br /> }<br /> }[/syntax]<br />sprawdził ponownie ustawienie taktowania w programie i fusy.<br />Przecież to musi działać i podłączona dioda miga co sekundę.<br /><br />Wrzuć jakieś zdjęcia lub schemat<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 30 sie 2018, o 09:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Dziaba]]></name></author>
<updated>2018-08-30T09:40:15+01:00</updated>
<published>2018-08-30T09:40:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211163#p211163</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211163#p211163"/>
<title type="html"><![CDATA[Re: Problem przy multipleksowaniu z kwarcem 16 MHz]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211163#p211163"><![CDATA[
Odłączyłem przetwornicę, odłączyłem NIXIE. Kiedy wrzuciłem diodę na jeden pin (zupełnie nowy program) przed nieskończoną pętlę, żeby ustawić ją na stałę, rzeczywiście dalej działa jak stroboskop. Skąd ten reset w takim razie? Atmega jest zasilana z programatora, jest filtracja zasilania, jest reset przez rezystor do VCC. Przyczyną może być ten oscylator?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17781">Dziaba</a> — 30 sie 2018, o 09:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kazekat]]></name></author>
<updated>2018-08-30T09:26:22+01:00</updated>
<published>2018-08-30T09:26:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211161#p211161</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211161#p211161"/>
<title type="html"><![CDATA[Re: Problem przy multipleksowaniu z kwarcem 16 MHz]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211161#p211161"><![CDATA[
Bardzo fajne urządzonko, nie raz rozwiązał moje wątpliwości.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17021">kazekat</a> — 30 sie 2018, o 09:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2018-08-30T08:55:19+01:00</updated>
<published>2018-08-30T08:55:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211160#p211160</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211160#p211160"/>
<title type="html"><![CDATA[Re: Problem przy multipleksowaniu z kwarcem 16 MHz]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211160#p211160"><![CDATA[
A ja polecam zakup nawet najprostszego analizatora logicznego - wcale nie są drogie a jak poogladasz filmiki Mirka co dzięki nim można zrobić to od razu wpadniesz na pomysł, jak je wykorzystać do poszukiwania źródła problemu w swoim układzie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 30 sie 2018, o 08:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-08-30T08:43:10+01:00</updated>
<published>2018-08-30T08:43:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211159#p211159</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211159#p211159"/>
<title type="html"><![CDATA[Re: Problem przy multipleksowaniu z kwarcem 16 MHz]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211159#p211159"><![CDATA[
Kod, który znajduje się na początku funkcji main() znajdujący się przed główną pętlą programu while(1) wykonywany jest tylko raz przy starcie. Wstaw tam zapalenie jakiejś diody (bez delay, po prostu zapal).<br />Dioda powinna się zapalić i świecić (pełnym światłem) przez cały czas działania programu. Jeśli będzie migać lub przygasać, będzie to oznaczać, że mikrokontroler się resetuje. Później pozostanie znalezienie przyczyny. Przetwornica może być jednym z głównych podejrzanych...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 30 sie 2018, o 08:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Dziaba]]></name></author>
<updated>2018-08-30T08:12:34+01:00</updated>
<published>2018-08-30T08:12:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211158#p211158</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211158#p211158"/>
<title type="html"><![CDATA[Re: Problem przy multipleksowaniu z kwarcem 16 MHz]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211158#p211158"><![CDATA[
Tak zrobiłem. Przy 1 sekundzie opóźnienia dioda zmienia swój stan jak stroboskop <img src="https://forum.atnel.pl/images/smilies/icon_e_surprised.gif" alt=":o" title="Zdziwiony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17781">Dziaba</a> — 30 sie 2018, o 08:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2018-08-30T07:26:32+01:00</updated>
<published>2018-08-30T07:26:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211155#p211155</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211155#p211155"/>
<title type="html"><![CDATA[Re: Problem przy multipleksowaniu z kwarcem 16 MHz]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211155#p211155"><![CDATA[
Kurczę ustawienia timera masz ok.<br />Zrób prosty test i pomigaj diodą na którymś pinie co 1sek. będziesz wiedział czy zewnętrzny kwarc prawidłowo pracuje.<br />Mam na myśli wgranie prostego programu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 30 sie 2018, o 07:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Dziaba]]></name></author>
<updated>2018-08-29T20:35:33+01:00</updated>
<published>2018-08-29T20:35:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211134#p211134</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211134#p211134"/>
<title type="html"><![CDATA[Re: Problem przy multipleksowaniu z kwarcem 16 MHz]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211134#p211134"><![CDATA[
Miałem na myśli, że wcześniej był niezaprogramowany. Po twojej sugestii go zaprogramowałem, ale to nic nie zmieniło.<br />Reset mam podłączony przez rezystor 10k do VCC. Może przez obecność przetwornicy wariuje?<br /><br />Zauważyłem teraz w ciemności, że ostatnia cyfra żarzy się raz po raz nieznacznie. Mam zaprogramowany ten zegar wstępnie by zliczał, ale widzę, że to, co powinno być sekundą, trwa jakiś jej ułamek, bo bardzo szybko przełącza katody.<br /><br />Katody mam na PORTB, oscylator też jest na PORTB, może jakoś tam ingeruje? Wydaje mi się, że dobrze maskuję PORTB.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17781">Dziaba</a> — 29 sie 2018, o 20:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-08-29T20:15:32+01:00</updated>
<published>2018-08-29T20:15:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211130#p211130</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211130#p211130"/>
<title type="html"><![CDATA[Re: Problem przy multipleksowaniu z kwarcem 16 MHz]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211130#p211130"><![CDATA[
Jeśli CKOPT był na 0, to tak powinien być (zaprogramowany oznacza 0).<br />Niemniej, jeśli na wewnętrznym oscylatorze 8MHz działa poprawnie, to warto sprawdzić ten sam program na zewnętrznym taktowaniu o tej samej częstotliwości. Wtedy byłaby względna pewność, że nie jest to wina programu.<br />Moim zdaniem objawy, które opisujesz, mogą wskazywać, że jest to wina zakłóceń (resetowanie mikrokontrolera).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 29 sie 2018, o 20:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Dziaba]]></name></author>
<updated>2018-08-29T20:00:32+01:00</updated>
<published>2018-08-29T20:00:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211128#p211128</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211128#p211128"/>
<title type="html"><![CDATA[Re: Problem przy multipleksowaniu z kwarcem 16 MHz]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211128#p211128"><![CDATA[
Niestety z zewnętrznych kwarców posiadam tylko 16 MHz.<br />CKOPT był ustawiony na 0, zmieniłem na 1, ale bez efektów. Wciąż strasznie szybko migają tylko 4 lampy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17781">Dziaba</a> — 29 sie 2018, o 20:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-08-29T19:36:49+01:00</updated>
<published>2018-08-29T19:36:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211126#p211126</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211126#p211126"/>
<title type="html"><![CDATA[Re: Problem przy multipleksowaniu z kwarcem 16 MHz]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211126#p211126"><![CDATA[
Próbowałeś, jak pracuje z <strong>zewnętrznym</strong> kwarcem 8MHz?<br /><br />Jak masz ustawiony fusebit CKOPT?<br />Powinien być zaprogramowany, wtedy oscylator pracuje z większą amplitudą i jest mniej podatny na zakłócenia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 29 sie 2018, o 19:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Dziaba]]></name></author>
<updated>2018-08-29T18:14:00+01:00</updated>
<published>2018-08-29T18:14:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211115#p211115</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211115#p211115"/>
<title type="html"><![CDATA[Re: Problem przy multipleksowaniu z kwarcem 16 MHz]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211115#p211115"><![CDATA[
Wrzuciłem. To ten drugi listing - nixie_tubes.c<br />Użyłem opcji clean, jeszcze raz build, wgrałem do Atmegi i niestety nic się nie zmieniło. Musiałem zrobić to wcześniej.<br /><br />Dodam, że zauważyłem, że kiedy drastycznie zmniejszę wartość OCR2 to ruszaja 6 lamp, ale wciąż strasznie szybko migają.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17781">Dziaba</a> — 29 sie 2018, o 18:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2018-08-29T18:03:38+01:00</updated>
<published>2018-08-29T18:03:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211113#p211113</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211113#p211113"/>
<title type="html"><![CDATA[Re: Problem przy multipleksowaniu z kwarcem 16 MHz]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211113#p211113"><![CDATA[
cześć<br />Pokaż ten kawałek kodu odpowiedzialny za ustawienia timera od multipleksowania.<br />Czy po zmianie częstotliwości w projekcie zrobiłeś &quot;clean&quot;?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 29 sie 2018, o 18:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Dziaba]]></name></author>
<updated>2018-08-29T17:46:17+01:00</updated>
<published>2018-08-29T17:46:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211111#p211111</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211111#p211111"/>
<title type="html"><![CDATA[Problem przy multipleksowaniu z kwarcem 16 MHz]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21201&amp;p=211111#p211111"><![CDATA[
Dzień dobry,<br /><br />Pracuję właśnie nad zegarkiem NIXIE na ATMEGA8A i 6 lampach IN-4 i napotkałem następujący problem:<br /><br />Zacząłem do multipleksowania lamp za pomocą programu z bluebooka o multipleksowaniu wyświetlaczy 7-SEG. <br /><br />Przerobiłem go do współpracy z 6 NIXIE i tranzystorami NPN zamiast PNP. Przy częstotliwości taktowania 8 MHz z wewnętrznego oscylatora hula jak powinno - lampy nie migają, świecą ciągłym światłem.<br />Problem pojawił się kiedy podłączyłem do ATMEGA8A kwarc zewnętrzny 16 MHz wraz z dwoma kondensatorami 22pF. Ustawiłem fuse bity za pomocą mkAvrcalculator na kwarc zewnętrzny &gt;8MHz. W Eclipse również zmieniłem kwarc na 16 MHz. Preskaler zmieniłem, jak powinno żeby ponownie uzyskać częstotliwość 300 Hz i... klops. 2 lampy świecą mrugając szybko jak nie wiem, a pozostałe śpią. <br /><br />Kiedy odłączam kwarc, zmieniam wszystko na 8 MHz działa jak powinno. Proszę o pomoc. Co sprawdzić? Gdzie szukać?<br />Poniżej załączam kody pliku nagłówkowego i pliku .c<br />[syntax=c]/*<br /> * nixie_tubes.h<br /> *<br /> *  Created on: 22 sie 2018<br /> *      Author: Dziaba<br /> */<br />#ifndef NIXIE_TUBES_H_<br />#define NIXIE_TUBES_H_<br /><br />#define KATODY_PORT PORTD//Port z podłączonymi katodami<br />#define KATODY_DIR DDRD//Katody - wyjścia<br />#define ANODY_PORT PORTB//Port z podłączonymi anodami<br />#define ANODY_DIR DDRB//Anody - wyjścia<br /><br />#define A1 (1&lt;&lt;PB0)//Anoda 1. lampy od lewej<br />#define A2 (1&lt;&lt;PB1)//Anoda 2. lampy od lewej<br />#define A3 (1&lt;&lt;PB2)//Anoda 3. lampy od lewej<br />#define A4 (1&lt;&lt;PB3)//Anoda 4. lampy od lewej<br />#define A5 (1&lt;&lt;PB4)//Anoda 5. lampy od lewej<br />#define A6 (1&lt;&lt;PB5)//Anoda 6. lampy od lewej<br /><br />#define MASKA_ANODY ( A1 | A2 | A3 | A4 | A5 | A6 )<br /><br />#define A (1&lt;&lt;PD2)//pin A dekodera<br />#define B (1&lt;&lt;PD3)//pin B dekodera<br />#define C (1&lt;&lt;PD4)//pin C dekodera<br />#define D (1&lt;&lt;PD5)//pin D dekodera<br /><br />#define MASKA_KATODY ( A | B | C | D )<br /><br />extern volatile uint8_t N1;//1. cyfra<br />extern volatile uint8_t N2;//2. cyfra<br />extern volatile uint8_t N3;//3. cyfra<br />extern volatile uint8_t N4;//4. cyfra<br />extern volatile uint8_t N5;//5. cyfra<br />extern volatile uint8_t N6;//6. cyfra<br /><br />// obszar deklaracji funkcji udostępnionych dla innych modułów<br />void nixie_tubes_init( void );<br /><br />#endif /* NIXIE_TUBES_H_ */[/syntax]<br /><br />[syntax=c]/*<br /> * nixie_tubes.c<br /> *<br /> *  Created on: 22 sie 2018<br /> *      Author: Dziaba<br /> */<br />#include &lt;avr/io.h&gt;// dołączenie głównego systemowego pliku nagłówkowego<br />#include &lt;avr/interrupt.h&gt;// dołączenie pliku nagłówkowego do obługi przerwań<br />#include &lt;avr/pgmspace.h&gt;// dołączenie pliku nagłówkowego pamięci FLASH<br /><br />#include &quot;nixie_tubes.h&quot;<br /><br />volatile uint8_t N1;<br />volatile uint8_t N2;<br />volatile uint8_t N3;<br />volatile uint8_t N4;<br />volatile uint8_t N5;<br />volatile uint8_t N6;<br /><br />//Tablica cyfr<br />const uint8_t cyfry&#91;10&#93; PROGMEM =<br />{//  DCBA<br />~( A | B | C | D ), //0 = 0000<br />( A ),//1 = 0001<br />( B ),//2 = 0010<br />( A | B ),//3 = 0011<br />( C ),//4 = 0100<br />( C | A ),//5= 0101<br />( C | B ),//6 = 0110<br />( C | B | A ),//7 = 0111<br />( D ),//8 = 1000<br />( D | A ),//9 = 1001<br />};<br /><br />//------------DEFINICJA FUNKCJI INICJALIZUJĄCEJ PRACĘ Z MULTIPLEKSOWANYMI NIXIE<br />void nixie_tubes_init( void )<br />{<br />//--------INICJALIZACJA ANOD I KATOD<br />KATODY_DIR |= A | B | C | D;// 4 piny portu D jako WYJŚCIA (katody)<br />KATODY_PORT &amp;= ~(A | B | C | D);// wygaszenie wszystkich katod - stan niski<br /><br />ANODY_DIR |= A1 | A2 | A3 | A4 | A5 | A6;// 6 pinów portu B jako WYJŚCIA (anody)<br />ANODY_PORT &amp;= ~(A1 | A2 | A3 | A4 | A5 | A6);// wygaszenie wszystkich wyświetlaczy (anody)<br /><br />//---------USTAWIENIE TIMERA2<br />TCCR2 |= (1&lt;&lt;WGM21);// tryb CTC<br />TCCR2 |= (1&lt;&lt;CS22) | (1&lt;&lt;CS21);// preskaler = 256<br />OCR2 = 207;// dodatkowy podział przez 207 (rejestr przepełnienia)<br />TIMSK |=  (1&lt;&lt;OCIE2);// zezwolenie na przerwanie COMPARE MATCH<br />}<br /><br />//------------PROCEDURA OBSŁUGI PRZERWANIA - COMPARE MATCH<br />ISR (TIMER2_COMP_vect)<br />{<br />static uint8_t licznik=1; // zmienna do przełączania kolejno anod nixie<br />// cykliczne przełączanie w każdym przerwaniu<br />// anod każdego wyświetlacza (wartośc jest negowana,<br />// aby krażyło zero)<br />ANODY_PORT = (ANODY_PORT &amp; ~MASKA_ANODY);// wygaszenie wszystkich wyświetlaczy<br /><br />if (licznik == 1) KATODY_PORT = (KATODY_PORT &amp; ~MASKA_KATODY) | (pgm_read_byte( &amp;cyfry&#91;N1&#93; ) &amp; MASKA_KATODY); //gdy zapalona nixie 1, podaj stan zmiennej N1<br />else if (licznik == 2) KATODY_PORT = (KATODY_PORT &amp; ~MASKA_KATODY) | (pgm_read_byte( &amp;cyfry&#91;N2&#93; ) &amp; MASKA_KATODY);//gdy zapalona nixie 2, podaj stan zmiennej N2<br />else if (licznik == 4) KATODY_PORT = (KATODY_PORT &amp; ~MASKA_KATODY) | (pgm_read_byte( &amp;cyfry&#91;N3&#93; ) &amp; MASKA_KATODY);//gdy zapalona nixie 3, podaj stan zmiennej N3<br />else if (licznik == 8) KATODY_PORT = (KATODY_PORT &amp; ~MASKA_KATODY) | (pgm_read_byte( &amp;cyfry&#91;N4&#93; ) &amp; MASKA_KATODY);//gdy zapalona nixie 4, podaj stan zmiennej N4<br />else if (licznik == 16) KATODY_PORT = (KATODY_PORT &amp; ~MASKA_KATODY) | (pgm_read_byte( &amp;cyfry&#91;N5&#93; ) &amp; MASKA_KATODY);//gdy zapalona nixie 5, podaj stan zmiennej N5<br />else if (licznik == 32) KATODY_PORT = (KATODY_PORT &amp; ~MASKA_KATODY) | (pgm_read_byte( &amp;cyfry&#91;N6&#93; ) &amp; MASKA_KATODY);//gdy zapalona nixie 6, podaj stan zmiennej N6<br /><br />ANODY_PORT = (ANODY_PORT &amp; ~MASKA_ANODY) | (licznik &amp; MASKA_ANODY);// cykliczne przełączanie kolejnej anody w każdym przerwaniu<br /><br />//operacje cyklicznego przesuwania bitu zapalającego anody w zmiennej licznik<br />licznik &lt;&lt;= 1;// przesunięcie zawartości bitów licznika o 1 w lewo<br />if (licznik &gt; 32) licznik = 1;//jeśli większy niż 32, to ustaw 1<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17781">Dziaba</a> — 29 sie 2018, o 17:46</p><hr />
]]></content>
</entry>
</feed>