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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-02-11T20:11:57+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=14459&amp;mode</id>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-02-11T20:11:57+01:00</updated>
<published>2016-02-11T20:11:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14459&amp;p=153353#p153353</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14459&amp;p=153353#p153353"/>
<title type="html"><![CDATA[Re: [attiny10] [C] Odczyt PWM i sterowanie tranzystorem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14459&amp;p=153353#p153353"><![CDATA[
To wygląda jakby miał być odbierany sygnał sterowania serwa. Ma on okres do 20ms a czas trwania stanu jeden określa położenie serwa. Czyli mamy trochę inaczej opisanego PWM. I pewnie chodzi o wyłapanie przekroczenia jakiego zakresu wychylenia.<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> — 11 lut 2016, o 20:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2016-02-11T18:30:57+01:00</updated>
<published>2016-02-11T18:30:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14459&amp;p=153349#p153349</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14459&amp;p=153349#p153349"/>
<title type="html"><![CDATA[Re: [attiny10] [C] Odczyt PWM i sterowanie tranzystorem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14459&amp;p=153349#p153349"><![CDATA[
Tak z ciekawości to rozwiń co masz na myśli piszac PWM a podajesz długość czasu zamiast wspolczynnika wypelnienia? Zmienia sie Tobie jego częstotliwość?<br /><br />Sent from my mobile.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 11 lut 2016, o 18:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-02-10T23:28:50+01:00</updated>
<published>2016-02-10T23:28:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14459&amp;p=153307#p153307</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14459&amp;p=153307#p153307"/>
<title type="html"><![CDATA[Re: [attiny10] [C] Odczyt PWM i sterowanie tranzystorem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14459&amp;p=153307#p153307"><![CDATA[
Jak może być spełniony warunek dla t jeżeli[syntax=c]volatile uint8_t tPulse<br />...<br />                t = tPulse;                                                     // Get current pulse time<br /> <br />                // Filter out errors (like the first pulse)<br />                if (t &gt;= 750 &amp;&amp; t &lt;= 2250)<br />                {<br />                        if (t&gt;1500) {switch_on();}<br />                        if (t&lt;=1500) {switch_off();[/syntax]do t wpisujesz wartość ze zmiennej 8 bitowej?<br /><br />Dodatkowo, nie wpływa to na działanie, ale dlaczego tak zrobiłeś z tym fragmentem:<br />[syntax=c]volatile uint16_t t;<br />                cli();<br />                t = tPulse;<br />                ...<br />                sei();[/syntax]<br />t używasz tylko lokalnie, więc po co volatile. A jak wyłączasz na wszystkie sprawdzenia t przerwania (a nie tylko na przepisanie wartości z tPulse) to jaki sens ma takie przepisywanie?<br /><br />Także jak sterujesz PB2 tylko z jednego miejsca, to dawanie funkcji switch_on() i switch_off() jest trochę nieoptymalne. Albo dodaj inline do niej albo zrób te przełączanie w #define.<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> — 10 lut 2016, o 23:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bluuu]]></name></author>
<updated>2016-02-09T18:15:31+01:00</updated>
<published>2016-02-09T18:15:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14459&amp;p=153182#p153182</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14459&amp;p=153182#p153182"/>
<title type="html"><![CDATA[Re: [attiny10] [C] Odczyt PWM i sterowanie tranzystorem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14459&amp;p=153182#p153182"><![CDATA[
dziękuję za &quot;F_CPU&quot;<br /><br />w międzyczasie uint_8t zostało poprawione na prawidłowe uint_16t ale to nadal nie to ...<br />szukam dalej<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1835">bluuu</a> — 9 lut 2016, o 18:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bluuu]]></name></author>
<updated>2016-02-09T14:03:16+01:00</updated>
<published>2016-02-09T14:03:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14459&amp;p=153167#p153167</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14459&amp;p=153167#p153167"/>
<title type="html"><![CDATA[Re: [attiny10] [C] Odczyt PWM i sterowanie tranzystorem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14459&amp;p=153167#p153167"><![CDATA[
W tzw. międzyczasie wygenerowałem to:<br /><br /><span style="color: #FF0000"><strong><em>#define F_CPU 8000000UL</em></strong> &lt;--- TEGO NIGDY NIE WPISUJE SIĘ W KODZIE - pamiętaj o tym - szczególnie na tym forum - mirekk36</span><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />//#include &lt;util/delay.h&gt;<br />#include &lt;avr/sleep.h&gt;<br /><br />volatile uint8_t tPulse, tOverflow, lastTime, timerStart;<br /><br />void init(void)<br />{<br />CCP=0xD8;<br />CLKMSR=(0&lt;&lt;CLKMS1) | (0&lt;&lt;CLKMS0);<br />CCP=0xd8;<br />CLKPSR=(0&lt;&lt;CLKPS3) | (0&lt;&lt;CLKPS2) | (1&lt;&lt;CLKPS1) | (1&lt;&lt;CLKPS0); //preskaler na 1<br />DDRB |= (1&lt;&lt;PB2);      //PB2 - wyjscie<br />PORTB &amp;= ~(1&lt;&lt;PB2);//PB2 - na starcie poziom 0<br />DDRB &amp;= ~(1&lt;&lt;PB0);     //PB0 - wejscie<br />}<br /><br />void init_timer(void)<br />{<br /><br /><br />TIMSK0=(0&lt;&lt;ICIE0) | (0&lt;&lt;OCIE0B) | (0&lt;&lt;OCIE0A) | (0&lt;&lt;TOIE0);<br />}<br /><br />void int_setup(void)<br />{<br />EICRA=(0&lt;&lt;ISC01) | (0&lt;&lt;ISC00);<br />EIMSK=(0&lt;&lt;INT0);<br />PCMSK=(0&lt;&lt;PCINT3) | (0&lt;&lt;PCINT2) | (0&lt;&lt;PCINT1) | (1&lt;&lt;PCINT0);<br />PCICR=(1&lt;&lt;PCIE0);<br />PCIFR=(1&lt;&lt;PCIF0);<br />}<br /><br />void switch_on(void)<br />{<br />PORTB |= (1&lt;&lt;PB2);<br />}<br /><br />void switch_off(void)<br />{<br />PORTB &amp;= ~(1&lt;&lt;PB2);<br />}<br /><br />ISR(TIM0_OVF_vect)<br />{<br />tOverflow++;<br />}<br /><br />ISR(PCINT0_vect)<br />{<br />if (PINB &amp; (1&lt;&lt;PB0)) <br />{<br />timerStart = tOverflow;<br />}<br />else<br />{<br />if(timerStart &gt; 0)<br />{<br />tPulse = ((volatile uint8_t)tOverflow - timerStart);<br />timerStart = 0;<br />}<br />}<br />}<br /><br />int main(void)<br />{<br />    init();<br />init_timer();<br />int_setup();<br />// sei;<br />    while (1) <br />    {<br />volatile uint16_t t;<br />cli();<br />t = tPulse;// Get current pulse time<br /><br /><br />// Filter out errors (like the first pulse)<br />if (t &gt;= 750 &amp;&amp; t &lt;= 2250)<br />{<br />if (t&gt;1500) {switch_on();}<br />if (t&lt;=1500) {switch_off();}<br />}<br />sei();<br />}<br />    <br />}[/syntax]<br /><br />Po zaprzęgnięciu do sprawdzania symulatora, wychodzi, że &quot;powinno&quot; działać. Problem jest najprawdopodobniej jest z poprawnym odmierzaniem &quot;czasu&quot; w tym przypadku z 1us.<br />Gdzie jest błąd ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1835">bluuu</a> — 9 lut 2016, o 14:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bluuu]]></name></author>
<updated>2016-02-08T20:23:48+01:00</updated>
<published>2016-02-08T20:23:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14459&amp;p=153100#p153100</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14459&amp;p=153100#p153100"/>
<title type="html"><![CDATA[[attiny10] [C] Odczyt PWM i sterowanie tranzystorem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14459&amp;p=153100#p153100"><![CDATA[
Witam<br /><br />Wymyśliłem sobie prościutki układzik na Attiny10.<br />Tzw. RC-Switch.<br /><br />Na wejściu (PB0) podawany jest PWM w zakresie 1000-2000us (w praktyce może wystąpić 750-2300).<br />Wyjście PB2 steruje bramką mosfeta czyli interesuje nas tylko stan niski i wysoki.<br />Czyli gdy na PB0 jest PWM &lt;1500us ustawiamy stan niski, gdy &gt;1500 stan wysoki.<br /><br />Z racji tego, że attiny10 ma 1kB pamięci zaprogramować go &quot;trzeba&quot; w C (lub asm ... ).<br /><br />I tutaj bardzo proszę o małą pomoc.<br /><br />Po przeczytaniu &quot;dataszita&quot; wychodzi, że nazwy rejestrów są inne i o ile pod arduino program już dawno byłby napisany (ehhh ta wygoda) to tutaj do roboty jest &quot;trochę&quot; więcej i niewiem czy jestem na dobrej drodze.<br /><br />Na początku wymyśliłem aby &quot;dopisać&quot; sobie coś na kształt &quot;micros();&quot; w arduino i na tej podstawie zliczać microsekundy stanu wysokiego na PB0 i powiązać to z PCINT0.<br /><br />Zacząłem się jeszcze wgłębiać w rejestry i .... trochę tego do ustawienia jest ...<br /><br />Drugi wariant to INT0 (i tutaj też są jeszcze maski etc.) ale to wymagało by zmiany na PB2 wejścia.<br /><br />Proszę o małą podpowiedź w tej materii (procka nie zmienię <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> )<br />Jeżeli gdzieś się już temat przewinął to proszę o wskazówkę (szukałem dość długo ale nic pod attiny4/5/9/10).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1835">bluuu</a> — 8 lut 2016, o 20:23</p><hr />
]]></content>
</entry>
</feed>