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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-01-25T14:53:49+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=12&amp;t=2046&amp;mode</id>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-01-25T14:53:49+01:00</updated>
<published>2013-01-25T14:53:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=25806#p25806</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=25806#p25806"/>
<title type="html"><![CDATA[Re: Przerwanie zewnętrzne INT0 w Attiny45]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=25806#p25806"><![CDATA[
<div class="quotetitle">Zbigniew Raabe, BASCOM Collage Ćwiczenie 3 napisał(a):</div><div class="quotecontent"><br />Niekontrolowane przerwania mogą narobić większego bigosu, niż używanie instrukcji <strong>GOTO (zgiń, przepadnij, siło nieczysta!)</strong>.<br /></div> Radzę wziąć pod uwagę słowa nieśmiertelnego popularyzatora Bascoma w Polsce. Zamiast <strong>goto</strong> używaj <strong>gosub</strong>, a każdą procedurę na końcu koniecznie zakończ <strong>return</strong> i wtedy program będzie przewidywalny.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 25 sty 2013, o 14:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Pier]]></name></author>
<updated>2013-01-25T11:32:09+01:00</updated>
<published>2013-01-25T11:32:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=25785#p25785</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=25785#p25785"/>
<title type="html"><![CDATA[Re: Przerwanie zewnętrzne INT0 w Attiny45]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=25785#p25785"><![CDATA[
Koledzy pomóżcie bo już nie wyrabiam. <br />Znów nie mogę opanować przerwania int0.<br />Program wygląda aktualnie tak:<br />[syntax=basic4gl]<br />$regfile = &quot;attiny45.dat&quot;<br />$crystal = 8000000<br /><br /><br /><br />Config Pinb.2 = Input                                       'przycisk<br />Portb.2 = 1<br />Switch Alias Pinb.2<br /><br /><br />En Alias Portb.1                                            'wyjście pwm<br />Config En = Output<br /><br /><br />Config Portb.4 = Output                                     'zasilanie dzielnika<br />Portb.4 = 0<br /><br />'*****************ZMIENNE****************************<br />Dim Licznik As Byte<br />Dim W As Word<br /><br />'*****************KONFIGURACJA TIMERA****************<br />Config Timer0 = Pwm , Compare A Pwm = Clear Up , Prescale = 1<br /><br />'*****************PRZETWORNIK ADC********************<br />Config Adc = Single , Prescaler = Auto<br />Admux.4 = 0<br />Admux.7 = 1                                                 'wlaczenie wewnetrznego napiecia odniesienia 1.1V<br />Admux.6 = 0<br /><br />'*****************KONFIGURACJA PRZERWANIA************<br />Gimsk.6 = 1                                                 'enable int0<br />Sreg.7 = 1                                                  'enable interrupts<br /><br /><br />'Enable Interrupts<br />'Enable Int0<br />'Config Int0 = Low Level<br /><br />On Int0 Sprawdz<br /><br /><br />Powerdown<br /><br />Licznik = 0<br />Do<br /><br /><br />Portb.4 = 1<br />W = Getadc(3)<br /><br />If W &lt; 583 Then                                             'jesli napiecie aku nizsze niz 3V zmniejsz tryb o jeden<br />If Licznik &gt; 0 Then<br />Licznik = Licznik - 1<br />End If<br />End If<br /><br />If W &lt; 538 Then                                             'jesli napiecie aku nizsze niz 2,8V wylacz latarke<br />Goto Wyl<br />End If<br /><br /><br /><br />Debounce Switch , 0 , Procedura , Sub<br /><br /><br />Select Case Licznik:<br />Case 0:<br />Pwm0a = 10<br />Case 1:<br />Pwm0a = 50<br />Case 2:<br />Pwm0a = 255<br />End Select<br /><br /><br />Loop<br />End<br /><br /><br />Procedura:<br />Waitms 400<br />If Switch = 1 Then<br />Incr Licznik<br />Else<br />Goto Wylaczenie<br />End If<br />If Licznik &gt; 2 Then Licznik = 0<br />Return<br /><br /><br />Wylaczenie:<br />Waitms 500<br />If Switch = 0 Then<br />Wyl:<br />Pwm0a = 0<br />Waitms 100<br />Pwm0a = 255<br />Waitms 300<br />Pwm0a = 0<br />Enable Int0<br />Portb.4 = 0<br />Stop Adc<br />Waitms 500<br />Powerdown<br />Else<br />Return<br />End If<br /><br /><br /><br />Sprawdz:<br />Disable Int0<br />Licznik = 0<br />Start Adc<br />W = Getadc(3)<br />Return<br />[/syntax]<br /><br />Problem przerwania INT0 jest taki że po pierwszym włączeniu zasilania bądź resecie procesor wybudza się z powerdown po przerwaniu INT0. Ale gdy już go wprowadzimy w powerdown poprzez przytrzymanie przycisku to wybudzić można go z tego jeszcze przez około 5s a po tym czasie procesor jest jakby martwy aż do kolejnego resetu.<br /><br />To tak jakby przerwanie INT0 działało tylko 5s a później już nie.<br /><br />Co może być przyczyną takiego działania?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=795">Pier</a> — 25 sty 2013, o 11:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Pier]]></name></author>
<updated>2013-01-04T10:30:30+01:00</updated>
<published>2013-01-04T10:30:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=23298#p23298</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=23298#p23298"/>
<title type="html"><![CDATA[Re: Przerwanie zewnętrzne INT0 w Attiny45]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=23298#p23298"><![CDATA[
No po konfiguracji którą Podałeś procesor budzi się z przerwania  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br />Mirek ja wiem za co odpowiada prescaler, chodziło mi które bity są za niego odpowiedzialne.<br />Noty katalogowe czytam namiętnie ostatnio ale co innego czytać a co innego zrozumieć. Jakoś nie bardzo mogę to załapać.<br />Wielkie dzięki za odpowiedzi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=795">Pier</a> — 4 sty 2013, o 10:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-01-04T09:24:39+01:00</updated>
<published>2013-01-04T09:24:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=23295#p23295</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=23295#p23295"/>
<title type="html"><![CDATA[Re: Przerwanie zewnętrzne INT0 w Attiny45]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=23295#p23295"><![CDATA[
To nie są tajne dane <!-- m --><a class="postlink" href="http://www.atmel.com/Images/doc2586.pdf" >http://www.atmel.com/Images/doc2586.pdf</a><!-- m --> od strony 86 od 97.<br />Poniżej wszystkie bity rejestru TCCR1, który ty ustawiasz teraz na 01110001<br />CTC1 PWM1A COM1A1 COM1A0 CS13 CS12 CS11 CS10<br />W tym momencie masz COM1A1 COM1A0 = 11, a jak chcesz mieć odwrócony sygnał to wpisujesz wartości 10 na te pozycje.<br />Do ustawiania preskalera służą 4 ostatnie bity CS13 CS12 CS11 CS10.<br />Radzę nie stosować instrukcji Bascoma typu Config tylko samemu ustawiać rejestry, bo na rejestrach można zrobić wszystko. Dodatkowo nie polecam ustawiać bitów wprost na rejestrze tylko za pośrednictwem nazw bitów wtedy łatwiej się później analizuje taki program. Przykład podałem wcześniej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 4 sty 2013, o 09:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-01-03T23:48:13+01:00</updated>
<published>2013-01-03T23:48:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=23266#p23266</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=23266#p23266"/>
<title type="html"><![CDATA[Re: Przerwanie zewnętrzne INT0 w Attiny45]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=23266#p23266"><![CDATA[
<div class="quotetitle">Pier napisał(a):</div><div class="quotecontent"><br />A i jeśli Możesz to wskaż mi co to odpowiada za prescaler w tym Pwm-ie.<br /></div><br /><br />Preskaler wszędzie i w każdym trybie będzie odpowiadał za częstotliwość wykonywania się czegoś. Preskaler to dzielnik częstotliwości. Więc przy PWM'ach preskaler również bierze udział w ostatecznej częstotliwości twojego PWM'a<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 3 sty 2013, o 23:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Pier]]></name></author>
<updated>2013-01-03T23:00:27+01:00</updated>
<published>2013-01-03T23:00:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=23263#p23263</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=23263#p23263"/>
<title type="html"><![CDATA[Re: Przerwanie zewnętrzne INT0 w Attiny45]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=23263#p23263"><![CDATA[
Źle się wyraziłem co do tego drugiego kontrolera. Chodziło mi o to że przerwanie w attiny44 dobrze działało program był trochu inny.<br />Jutro wypróbuję czy taka konfiguracja pomoże.<br />A wiesz jak skonfigurować pwm w moim programie aby działał odwrotnie?<br />Bo teraz mam tak że gdy OCR1A =0 to urządzenie sterowane działa na full a chciałbym żeby tak było przy OCR1A=255. Nie wiem jak to się fachowo nazywa i który bit w którym rejestrze za to odpowiada. <br />A i jeśli Możesz to wskaż mi co to odpowiada za prescaler w tym Pwm-ie.<br />Pozdrawiam piotr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=795">Pier</a> — 3 sty 2013, o 23:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-01-03T19:25:38+01:00</updated>
<published>2013-01-03T19:25:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=23228#p23228</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=23228#p23228"/>
<title type="html"><![CDATA[Re: Przerwanie zewnętrzne INT0 w Attiny45]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=23228#p23228"><![CDATA[
<div class="quotetitle">Pier napisał(a):</div><div class="quotecontent"><br />Ten sam program wgrany do attiny44 działa bez zarzutu. <br />Może trzeba skonfigurować to przerwanie bezpośrednio na rejestrach ale jak?<br /></div><br />To dziwne, bo attiny44 ma dwa rejestry TCCR1A i TCCR1B, a attiny45 tylko jeden TCCR1.<br />Czy na pewno wiesz co robi ta linia?<br />[syntax=basic4gl]Tccr1 = &amp;B01110001[/syntax]<br />Podobnie możesz ustawić INT0. domyslnie po resecie procesora jest ustawione to przerwanie na Low Level więc wystarczy tylko:<br />[syntax=basic4gl]GIMSK.INT0 = 1   'enable int0<br />SREG.I = 1 'enable interrupts[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 3 sty 2013, o 19:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Pier]]></name></author>
<updated>2013-01-03T17:18:08+01:00</updated>
<published>2013-01-03T17:18:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=23195#p23195</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=23195#p23195"/>
<title type="html"><![CDATA[Przerwanie zewnętrzne INT0 w Attiny45]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2046&amp;p=23195#p23195"><![CDATA[
Witam.<br /><br /><br />Proszę o pomoc w sprawie niedziałającego przerwania w Attiny45.<br /><br />Poniżej kod:<br />[syntax=basic4gl]<br />$regfile = &quot;attiny45.dat&quot;<br /><br />En Alias Portb.1<br />Switch Alias Pinb.2<br /><br />Config En = Output<br />Config Switch = Input<br /><br /><br />Switch = 1<br /><br />Tccr1 = &amp;B01110001<br />Gtccr = &amp;B00000000<br /><br />Dim Licznik As Byte<br /><br /><br />Licznik = 0<br /><br /><br />'*****************WLACZENIE PRZERWAN***************<br />Enable Interrupts<br />Enable Int0<br />Config Int0 = Low Level<br />On Int0 Sprawdz<br /><br /><br /><br /><br /><br /><br />Do<br /><br /><br />Debounce Switch , 0 , Procedura , Sub<br /><br /><br />Select Case Licznik:<br />Case 0:<br />Ocr1a = 200<br />Case 1:<br />Ocr1a = 0<br />Case 2:<br />Ocr1a = 230<br />End Select<br /><br />Loop<br />End<br /><br /><br />Procedura:<br />Waitms 400<br />If Switch = 1 Then<br />Incr Licznik<br />Else<br />Goto Wylaczenie<br />End If<br />If Licznik &gt; 2 Then Licznik = 0<br />Return<br /><br /><br />Wylaczenie:<br />Wait 1<br />If Switch = 0 Then<br />Ocr1a = 255<br />Enable Int0<br />Waitms 300<br />Powerdown<br />Else<br />Return<br />End If<br /><br /><br /><br />Sprawdz:<br />Disable Int0<br />Licznik = 0<br />Return<br /><br /><br />[/syntax]<br /><br />Program działa tak jak chcę. Procesor po przytrzymaniu przycisku wchodzi w tryb &quot;powerdown&quot; ale już po tym nie mogę go normalnie obudzić przyciskiem.<br />Wydaje mi się że problem leży po stronie nieumiejętnego dogadywania się bascoma z attiny45.<br />Ten sam program wgrany do attiny44 działa bez zarzutu. <br />Może trzeba skonfigurować to przerwanie bezpośrednio na rejestrach ale jak?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=795">Pier</a> — 3 sty 2013, o 17:18</p><hr />
]]></content>
</entry>
</feed>