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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-02-14T10:31:05+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=20210&amp;mode</id>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2018-02-14T10:31:05+01:00</updated>
<published>2018-02-14T10:31:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20210&amp;p=203863#p203863</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20210&amp;p=203863#p203863"/>
<title type="html"><![CDATA[Re: Generowanie sekwencji impulsów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20210&amp;p=203863#p203863"><![CDATA[
<div class="quotetitle">niemy napisał(a):</div><div class="quotecontent"><br />Zerknę na to jak coś powstanie to podeślę.<br /><br />Kilka pytań do doprecyzowania. Czyli mam przełączać pomiędzy generacją PWM'a jak ma być impuls (i w tedy zliczam zbocza) a timerem jak ma być stan niski ?<br />Dobrze zrozumiałem ?<br /></div><br /><br />Tak mniej więcej to na poczekaniu wymyśliłem.<br /><br />Natomiast gdy popatrzyłem na ATTINY13A to przyszła mi inna myśl.<br />Pytanie jest czy nie można by było tego projektu zrealizować na ATTINY24A<br />(trochę trudno operować tym jednym 8 bit timerem)<br /><br />Patrząc na cenę w TME obydwa kosztują tyle samo 2,48 zł netto <br />Dostajesz za to dwa timery 8 bit i jeden 16 bit. plus więcej ram-u<br />Problemem może być większa liczba odnóży procka.<br />Wszystko zależy czy to ma być jednorazowy projekt czy produkcja.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 14 lut 2018, o 10:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2018-02-13T21:25:59+01:00</updated>
<published>2018-02-13T21:25:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20210&amp;p=203832#p203832</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20210&amp;p=203832#p203832"/>
<title type="html"><![CDATA[Re: Generowanie sekwencji impulsów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20210&amp;p=203832#p203832"><![CDATA[
Tu masz taki naskrobany na szybko przykładzik:<br />[syntax=c]//<br />/*<br /> * main.c<br /> *<br /> *  Created on: 13 lut 2018, 19:46:13<br /> *      Author: Xentis<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br />#define PIN_W (1&lt;&lt;PB4)//pin z wyjściem sygnału<br />#define W_ON PORTB|=PIN_W<br />#define W_OFF PORTB&amp;=~PIN_W<br />#define W_TOG PORTB^=PIN_W<br /><br />const uint8_t czasy&#91;8&#93; PROGMEM ={3,6,3,6,3,6,3,250};//stałe czasowe sygnału<br />uint8_t PWM, czas;<br />volatile uint8_t _PWM, licznik2;<br /><br />int main(void){<br />DDRB |= PIN_W;<br />TCCR0A |= (1&lt;&lt;WGM01);<br />TCCR0B |= (1&lt;&lt;CS01);<br />OCR0A = 46;<br />TIMSK0 |= (1&lt;&lt;OCIE0A);<br />sei();<br /><br />PWM=255;//zmienna przechowująca zadany PWM<br />while(1){<br />if(!licznik2){<br />licznik2=pgm_read_byte(czasy+czas);<br />if(7==czas) czas=0; else czas++;<br />}<br />if(czas%2)_PWM=PWM; else _PWM=0;<br /><br />}<br />}<br /> ISR(TIM0_COMPA_vect){<br /> volatile static uint8_t licznik1=0;<br /> if((!licznik1)&amp;&amp;(licznik2))licznik2--;<br /> licznik1++;<br /> if(licznik1&lt;_PWM) W_ON;<br /> else W_OFF;<br /> }[/syntax]<br />Procek attiny13, taktowanie 9600000 z wewnętrznego oscylatora.<br />PWM programowy - na sprzętowym można to też zrobić ale nie da się wyliczyć częstotliwości PWM dokładnie na 100 lub 200 Hz<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 14 minutach ]</span></strong><br /><br />Działanie:<br />Timer sprzętowy napędza przerwanie z częstotliwością ok 26kHz co przy PWM-ie 8 bitowym daje częstotliwość 100Hz z niewielką odchyłką. Owe 100Hz (czyli podstawa czasowa 10ms) stanowi również siłę napędową dla licznika programowego odmierzającego stałe czasowe sygnału zapisanego w tablicy &quot;czasy&quot; w pamięci flash. Z kolei zmienna &quot;czas&quot; stanowi licznik wskazujący kolejne stałe czasowe z tablicy.<br />Program zajmuje ok 25% pamięci więc można jeszcze poszaleć  <img src="https://forum.atnel.pl/images/smilies/icon_cool.gif" alt="8-)" title="Cool" /><br />Oczywiście można to zrobić jeszcze prościej - na żywca w pętli głównej wrzucając delaye formujące przebieg sygnału, a w przerwaniu generowanie samego PWM...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 13 lut 2018, o 21:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[niemy]]></name></author>
<updated>2018-02-13T16:24:51+01:00</updated>
<published>2018-02-13T16:24:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20210&amp;p=203823#p203823</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20210&amp;p=203823#p203823"/>
<title type="html"><![CDATA[Re: Generowanie sekwencji impulsów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20210&amp;p=203823#p203823"><![CDATA[
Zerknę na to jak coś powstanie to podeślę.<br /><br />Kilka pytań do doprecyzowania. Czyli mam przełączać pomiędzy generacją PWM'a jak ma być impuls (i w tedy zliczam zbocza) a timerem jak ma być stan niski ?<br />Dobrze zrozumiałem ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=675">niemy</a> — 13 lut 2018, o 16:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2018-02-13T15:15:56+01:00</updated>
<published>2018-02-13T15:15:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20210&amp;p=203818#p203818</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20210&amp;p=203818#p203818"/>
<title type="html"><![CDATA[Re: Generowanie sekwencji impulsów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20210&amp;p=203818#p203818"><![CDATA[
Hmmm <br />Może tak:<br />200 Hz to daje 5 ms na jeden cykl PWM-a.  Przy szerokości impulsu 30 ms będziesz miał raptem 6 zmian zbocza.<br />(6 w górę albo 6 w dół)<br />No to może potraktować zmianę zbocza przerwaniem zliczającym 6 zmian.<br />Ustawić flagę, a następnie przełączyć na licznik który zliczy odliczy 60 milisekund <br />Powtórzyć to samo 4 razy <br />Przełączyć się znowu na licznik i odliczyć 2,5 s.<br /><br /><br />Zobacz gdyby dało się okocić OC0B z przerwaniem INT0 <br />To w obsłudze przerwania mógłbyś sobie zrobić cały mechanizm ustawiania flag.<br />A w pętli głównej ustawianie trybów pracy<br />Masz to wszystko na jednym pinie<br />MISO/AIN1/OC0B/INT0/PCINT1<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 13 lut 2018, o 15:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2018-02-13T14:36:49+01:00</updated>
<published>2018-02-13T14:36:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20210&amp;p=203815#p203815</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20210&amp;p=203815#p203815"/>
<title type="html"><![CDATA[Re: Generowanie sekwencji impulsów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20210&amp;p=203815#p203815"><![CDATA[
Masz tylko jeden sprzętowy timer 8 bitowy.<br />No to chyba  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> bez timerów programowych się nie obejdzie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 13 lut 2018, o 14:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[niemy]]></name></author>
<updated>2018-02-13T14:28:38+01:00</updated>
<published>2018-02-13T14:28:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20210&amp;p=203813#p203813</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20210&amp;p=203813#p203813"/>
<title type="html"><![CDATA[Generowanie sekwencji impulsów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20210&amp;p=203813#p203813"><![CDATA[
Witam szanowne grono.<br /><br />Generalnie mam taki problem i trochę się już zamotałem dlatego piszę.<br />Na obrazku przedstawiam interpretację tego co mam uzyskać postaram się w skrócie opisać.<br />Chodzi o to aby procesor dokładnie Attiny 13A generował sekwencje impulsów składającą się z:<br />Cztery impulsy gdzie impuls długości 30 ms a przerwa długości 60 ms po czterech takich impulsach 2,5 sekundy przerwy i znowu cztery impulsy i przerwa i tak w kółko.<br />Ale tutaj jest dla mnie gwóźdź do trumny impulsy to tak na prawdę nie ma być ciągły sygnał a ma się składać z PWM'a 100 lub 200 Hz o regulowanym wypełnieniu od 1 do 100 %.<br /><br />Jak pogodzić to wszystko razem ? Bo z jednej strony mam PWM'a czyli bardzo krótkie czasy a z drugiej muszę czekać aż 2,5 sekundy i w dodatku żaden czas się nie powtarza i to wszystko zmieścić w attiny ?<br /><br />Mam odpalić PWM'a hardwarowego czy próbować sobie radzić timerami programowymi ?<br /><br /><a href="https://obrazkiforum.atnel.pl/675/053dedc03e85244c8f827bc0b5bf7a9e.PNG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/675/053dedc03e85244c8f827bc0b5bf7a9e.PNG" alt="Obrazek" /></a><br /><br />Pozdrawiam i z góry dziękuję za sugestię.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=675">niemy</a> — 13 lut 2018, o 14:28</p><hr />
]]></content>
</entry>
</feed>