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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-11-08T16:55:54+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=16761&amp;mode</id>
<entry>
<author><name><![CDATA[Pater]]></name></author>
<updated>2016-11-08T16:55:54+01:00</updated>
<published>2016-11-08T16:55:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16761&amp;p=174131#p174131</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16761&amp;p=174131#p174131"/>
<title type="html"><![CDATA[Re: RegulacjaMocy230V modifikacja programu, Timer0 problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16761&amp;p=174131#p174131"><![CDATA[
Ok, dzięki już działa faktycznie atmega sie resetowała.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6008">Pater</a> — 8 lis 2016, o 16:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-11-08T16:54:36+01:00</updated>
<published>2016-11-08T16:54:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16761&amp;p=174130#p174130</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16761&amp;p=174130#p174130"/>
<title type="html"><![CDATA[Re: RegulacjaMocy230V modifikacja programu, Timer0 problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16761&amp;p=174130#p174130"><![CDATA[
Witam<br />A do tego TIMER'a 0 masz napisaną chociażby pustą obsługę przerwania ( ISR(TIMER0.....){}) ?<br />Nie wiem jaki uC więc nie wiem jaki ISR.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 8 lis 2016, o 16:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[HomoChemicus]]></name></author>
<updated>2016-11-08T16:39:45+01:00</updated>
<published>2016-11-08T16:39:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16761&amp;p=174127#p174127</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16761&amp;p=174127#p174127"/>
<title type="html"><![CDATA[Re: RegulacjaMocy230V modifikacja programu, Timer0 problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16761&amp;p=174127#p174127"><![CDATA[
Po pierwsze, popraw wstawienie kodu.<br />Po drugie, gdzie masz obsługę przerwania timera0?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 5 minutach ]</span></strong><br /><br />Atmega zdaje się, że reaguje resetem na przerwanie, które nie jest obsługiwane.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10470">HomoChemicus</a> — 8 lis 2016, o 16:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Pater]]></name></author>
<updated>2016-11-08T16:47:56+01:00</updated>
<published>2016-11-08T16:24:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16761&amp;p=174126#p174126</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16761&amp;p=174126#p174126"/>
<title type="html"><![CDATA[RegulacjaMocy230V modifikacja programu, Timer0 problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16761&amp;p=174126#p174126"><![CDATA[
Witam, chciałbym zmodyfikować program ,, RegulacjaMocy230V &quot; Chciałbym wykorzystać go do swojego projeku: używany będzie tylko jeden kanał,ale chciałbym dołożyć wyświetlacz 2x7segmentowy na którym będę wyświetlał poziom mocy na tym kanale w zakresie 0-99 wraz z dwoma przyciskami dzięki którym będę mógł zmniejszać i zwiększać tą wartość. <br /><br />Mój problem pojawia się gdy chcę ustawić drugi timer który będzie odpowiedzialny za wyświetlacze i ich przełączanie.<br />Kod który zamieszczam jest obciętą wersją tego z książki z uwagi że wykorzystuje jeden kanał. Działa on jak najbardziej poprawnie (zarówka sieci ciągle z zadana mocą) problem pojawia się wtedy gdy dopisuje ustawienia TIMERA0 :<br />[syntax=c]// ustawienie TIMER0<br />TCCR0 |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);// preskaler = 1024 |(1&lt;&lt;CS00)<br />TIMSK |= (1&lt;&lt;TOIE0);// zezwolenie na przerwanie CompareMatch<br />TCNT0 = 175 ;[/syntax]<br />(wówczas zarówka zaczyna migać z małą częstotliwością)<br /><br /><br /> [syntax=c]* main.c<br /> <br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />/*********************** D I M M E R  -   U S T A W I E N I A   ***************************/<br />#define LICZBA_KROKOW 200<br /><br />// czas trwania szpilki (Detekcja ZERA) wyrażony w milisekundach np: 1,2,... albo np: 0.5<br />#define SZPILKA_MS 1.8<br />/*********************** D I M M E R  -   U S T A W I E N I A   ***************************/<br /><br />#define __OCR_STEP ((F_CPU/8)*((1000-((SZPILKA_MS*100)/2))/LICZBA_KROKOW))/100000<br /><br />//#define procent(x) ((x*(LICZBA_KROKOW-1))/100)<br /><br />static uint8_t procent(uint8_t pr) {<br />return (pr * (LICZBA_KROKOW-1))/100;<br />}<br /><br /><br />#define T_ZAR1_ON PORTD |= (1&lt;&lt;PD0)<br />#define T_ZAR1_OFF PORTD &amp;= ~(1&lt;&lt;PD0)<br /><br /><br /><br />volatile uint8_t kroki;<br />volatile uint8_t kanal1;<br /><br /><br />volatile uint8_t ika1;<br /><br /><br /><br />int main(void) {<br /><br />DDRD |= (1&lt;&lt;PD0);<br />T_ZAR1_OFF;<br /><br /><br />// Przerwanie INT0<br />MCUCR |= (1&lt;&lt;ISC01)|(1&lt;&lt;ISC00);// zbocze narastające<br />GICR |= (1&lt;&lt;INT0);// odblokowanie INT0<br /><br /><br />// TIMER2<br />#define TIMER2_START TCCR2 |= (1&lt;&lt;CS21)// prescaler=8<br />#define TIMER2_STOP TCCR2 &amp;= ~(1&lt;&lt;CS21)// prescaler off<br />TCCR2 |= (1&lt;&lt;WGM21);// tryb CTC<br />TIMSK |= (1&lt;&lt;OCIE2);// odblokowanie przerwania COMPARE MATCH<br />OCR2 = __OCR_STEP;<br /><br />// ustawienie TIMER0<br />TCCR0 |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);// preskaler = 1024 |(1&lt;&lt;CS00)<br />TIMSK |= (1&lt;&lt;TOIE0);// zezwolenie na przerwanie CompareMatch<br />TCNT0 = 175 ;<br /><br /><br />sei();<br /><br /><br /><br />//_delay_ms(3000);<br /><br /><br /><br />while(1)<br />{<br />kanal1 = procent(40);<br />}<br />}<br /><br /><br />ISR(INT0_vect) {<br />TIMER2_STOP;<br />T_ZAR1_OFF;<br /><br />kroki=LICZBA_KROKOW;<br /><br />/* podwójne buforowanie, synchronizacja do 50Hz */<br />ika1=kanal1;<br /><br /><br />TCNT2 = 0;<br />TIMER2_START;<br />}<br /><br />ISR(TIMER2_COMP_vect) {<br />if(ika1 &amp;&amp; kroki == ika1) T_ZAR1_ON;<br /><br />kroki--;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6008">Pater</a> — 8 lis 2016, o 16:24</p><hr />
]]></content>
</entry>
</feed>