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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-04-19T21:26:32+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=6825&amp;mode</id>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-04-19T21:26:32+01:00</updated>
<published>2014-04-19T21:26:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6825&amp;p=78662#p78662</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6825&amp;p=78662#p78662"/>
<title type="html"><![CDATA[Re: ATtiny45 i USI jako &quot;SPI&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6825&amp;p=78662#p78662"><![CDATA[
Dzięki, super działa.<br /><div class="quotetitle">squeez napisał(a):</div><div class="quotecontent"><br />Nie wiem czy uda co się zrobić SPI z DI jako wyjście (nie próbowałem i nie wiem czy zadziała).<br /></div><br /><br />Co do DI do się daje, właśnie sprawdziłem. Tzn mnie było potrzebne tylko jednorazowe &quot;kłapnięcie&quot; na tym pinie, zbocze narastające.<br />Co prawda rejestr 595 i tak dostawał to zbocze, wystarczyło że miał podpięty kawałek kabelka do pinu, to zbocze pojawiało się samo w sposób, że tak powiem &quot;bezprzewodowy&quot; <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br />No ale mimo wszystko chciałem, żeby było elegancko.<br /><br /><br />dlatego zrobiłem tak:<br />[syntax=c]void send_usi(uint8_t data) {<br />if (disp_flag) {<br />        USIDR = data;<br />        USISR = (1&lt;&lt;USIOIF);<br /><br />        while(!(USISR&amp;(1&lt;&lt;USIOIF)) )<br />        {<br />        USICR = (1&lt;&lt;USIWM0)|(1&lt;&lt;USICS1)|(1&lt;&lt;USICLK)|(1&lt;&lt;USITC);<br />        }<br /><br />        DDRB |= (1&lt;&lt;CS);<br />        PORTB |= (1&lt;&lt;CS);<br />        PORTB &amp;= ~(1&lt;&lt;CS);<br />        DDRB &amp;= ~(1&lt;&lt;CS);<br />        disp_flag=0;<br /><br />}<br />}[/syntax]<br /><br />disp_flag to jest zmienna która ustawia się jak jeden przy każdej zmianie stanu lampki.<br /><br /><div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />Nie robiłem tego ale kiedyś znalazłem takie opracowanie - i trzymam na zaś  może tobie się przyda ?<br /></div><br /><br />O jaki wielki plik <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Zabieram się za lekturę <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 19 kwi 2014, o 21:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-04-19T21:06:03+01:00</updated>
<published>2014-04-19T21:06:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6825&amp;p=78660#p78660</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6825&amp;p=78660#p78660"/>
<title type="html"><![CDATA[Re: ATtiny45 i USI jako &quot;SPI&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6825&amp;p=78660#p78660"><![CDATA[
Nie robiłem tego ale kiedyś znalazłem takie opracowanie - i trzymam na zaś <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> może tobie się przyda ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 19 kwi 2014, o 21:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-04-19T18:04:07+01:00</updated>
<published>2014-04-19T18:04:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6825&amp;p=78647#p78647</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6825&amp;p=78647#p78647"/>
<title type="html"><![CDATA[ATtiny45 i USI jako &quot;SPI&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6825&amp;p=78647#p78647"><![CDATA[
Witam<br /><br />Staram się uruchomić sprzętowy moduł USI w Tiny45. Nigdy nie robiłem wcześniej nic z tymi małymi kostkami.<br />Robię sterowanie dużą lampą ledową (PWM). Sterowanie jest jednym przyciskiem - 6 trybów jasności (pojedyncze wciśnięcia ) oraz ON/OFF po (dłuższym wciśnięciu przycisku). Wszystko ładnie działa, ale chciałem dodać funkcjonalność polegająca na wyświetleniu numeru oznaczającego tryb pracy (jasność) na jednym wyświetlaczu 7seg. Tiny45 ma tylko 5 użytecznych pinów, więc trzeba to zrobić przez rejestr przesuwny. W sumie typowa sprawa. Jednak MCU posiada zamiast TWI I SPI coś takiego jak USI.<br /><br />Czytam i czytam notę PDF i albo robię jakieś głupie błędy, albo zakręciłem się w jakimś błędnym rozumowaniu... W każdym razie coś nie mogę zmusić USI do pracy.<br /><br />Do wyjścia &quot;DO&quot; podłączone jest wejście szeregowe 74595<br />Do SCK oczywiście wejście taktowania rejestru.<br />Wyjście &quot;DI&quot; chcę użyć jako sterowanie zatrzaskiem<br />Choć może da się nie używać latch'a w typowy sposób, display nie będzie multipleksowany (tylko jedna cyfra), więc może być &quot;widoczne&quot; wsuwanie bitów do rejestru.<br /><br />USI próbuję obecnie zainicjować tak:<br />[syntax=c]void InitSpi(void) {<br /><br />// ustawienie wyjsć SPI<br />DDRB |= (1&lt;&lt;MOSI)|(1&lt;&lt;SCK);<br /><br />// aktywancja modułu SPI<br />USICR |= (1&lt;&lt;USIWM0)|(1&lt;&lt;USICS0)|(1&lt;&lt;USITC);<br /><br />}[/syntax]<br /><br />Do tego inicjuję timer0 w trybie CTC (z tego co jest w nocie rozumiem, że muszę zapewnić źródło taktowania i TIM0 może być jednym z nich) <br /><br />[syntax=c]TCCR0A |= (1&lt;&lt;WGM01); //timer0 w tryb CTC<br />TCCR0B |= (1&lt;&lt;CS01); // preskaler /8<br />OCR0A = 155;[/syntax]<br /><br />Wysłać bajt (to będzie tylko jeden bajt, wyświetlacz jest wsp. kat podpięty do GND) próbuję tak:<br />[syntax=c]void disp(uint8_t digit) {<br />USIDR = digit;[/syntax]<br /><br />Wiem, że powinno się czekać na ukończenie wysyłania, ale na razie, do testów nie chciałem sobie dokładać tych &quot;dziwnych&quot; flag w rejestrze stanu <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br /><br />W każdym razie, niestety nic z tego nie działa.<br />Czuję, że problem jest braku zrozumienia mechanizmu taktowania modułu USI. <br />Może ktoś coś podpowie. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 19 kwi 2014, o 18:04</p><hr />
]]></content>
</entry>
</feed>