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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-02-08T01:37:43+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=12&amp;t=5865&amp;mode</id>
<entry>
<author><name><![CDATA[ogrodnik2ha]]></name></author>
<updated>2014-02-08T01:37:43+01:00</updated>
<published>2014-02-08T01:37:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5865&amp;p=69173#p69173</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5865&amp;p=69173#p69173"/>
<title type="html"><![CDATA[Re: SPI=HARD ustawienie ss=1 po transmisji blokuje kolejne]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5865&amp;p=69173#p69173"><![CDATA[
gra, problem leżał w złej kolejności wywołań poleceń w procedurach spi między masterem a slavem:<br />poprawione kody:<br /><br />master:[syntax=basic4gl]'--------------------------------------------------------------<br />'                   (c) 2010-2014 Michna Piotr<br />'--------------------------------------------------------------<br />'                       KOMUNIKACJA SPI<br />'<br />'--------------------------------------------------------------<br /><br />$regfile = &quot;m644pdef.dat&quot;<br />$crystal = 8000000<br /><br />$swstack = 40<br />$hwstack = 40<br />$framesize = 40<br /><br />'---- LCD GRAPH ----------------------<br />$lib &quot;glcdEADOGM128x6.lbx&quot;<br />Config Graphlcd = 128 * 64eadogm , Cs1 = Porta.7 , A0 = Porta.5 , Si = Porta.3 , Sclk = Porta.4 , Rst = Porta.6<br /><br />Cls<br />Config Pind.4 = Output<br />Config Pind.5 = Output<br />Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1<br />Pwm1a = 1                                                   'KEY<br />Pwm1b = 220                                                 'LCD<br />Glcdcmd 38<br /><br />'---- KEY<br />Config Pinc.2 = Input<br />Config Pinc.3 = Input<br />Config Pinc.4 = Input<br />Config Pinc.5 = Input<br />Config Pinc.6 = Input<br />Set Portc.2<br />Set Portc.3<br />Set Portc.4<br />Set Portc.5<br />Set Portc.6<br /><br />Dim Sme As Bit , Sexi As Bit , Sdo As Bit , Sup As Bit , Sru As Bit       'zmienne key<br /><br />Dim Key_ms As Byte<br />Key_ms = 100<br /><br />'---- SPI<br />Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 1 , Clockrate = 128 , Noss = 1<br /><br />Config Portb.5 = Output<br />'Config Pinb.6 = Input<br />Config Portb.7 = Output<br />Config Portb.4 = Output<br />Config Portb.3 = Output<br />'Set Portb.5<br />'Set Portb.7<br />Set Portb.4<br />Set Portb.3<br />Ss_st Alias Portb.3<br />Ss_ds Alias Portb.4<br /><br />Dim Spi_err As Bit<br />Dim Spi_end As Bit<br />Dim Spi_rw As Byte<br /><br />Dim Sdin As Byte<br />Dim Sdout As Byte<br />Dim Spi_d_in(16) As Byte<br />Dim Spi_key(8)as Byte<br />Spi_key(1) = 71<br />Spi_key(2) = 1<br />Spi_key(3) = 33<br />Spi_key(4) = 171<br />Spi_key(5) = 33<br />Spi_key(6) = 5<br />Spi_key(7) = 208<br />Spi_key(8) = 18<br /><br />Dim St_dataw As Byte<br />Dim St_datar As Byte<br />St_dataw = &amp;B11111111<br />St_datar = &amp;B11111111<br />Dim Pwm_datar(7) As Byte<br />Dim Pwm_dataw(7) As Byte<br />Pwm_dataw(1) = 11                                           '0:off  1:off=&gt;on  2:on  3:on=&gt;off  4:test<br />Pwm_dataw(2) = 12                                           'Rmax<br />Pwm_dataw(3) = 13                                           'Gmax<br />Pwm_dataw(4) = 14                                           'Bmax<br />Pwm_dataw(5) = 15                                           'Wmax<br />Pwm_dataw(6) = 16                                           'Procent<br />Pwm_dataw(7) = 17<br /><br />Dim R As Byte , N As Byte , M As Byte<br /><br /><br />Setfont My6_8<br />Spi_end = 0<br />Spi_rw = 0<br />St_dataw = &amp;B11111111<br /><br /><br />Gosub Spi_write_st<br /><br />Waitms 200<br /><br />Do<br /><br />   Lcdat 1 , 1 , &quot;SPI MASTER&quot;<br />   If Spi_end = 1 Then<br />      Spi_end = 0<br />      Lcdat 1 , 64 , &quot;er=&quot; ; Spi_err<br /><br />      For N = 1 To 7<br />         M = 1 + N<br />         Lcdat M , 1 , N ; &quot;r=&quot; ; Pwm_datar(n) ; &quot;  &quot;<br />         Lcdat M , 64 , N ; &quot;w=&quot; ; Pwm_dataw(n) ; &quot;  &quot;<br />      Next N<br />'      'Lcdat 8 , 100 ,                                       Ss_st<br />   End If<br /><br />   If Sme = 1 Then<br />      Lcdat 1 , 64 , &quot;sme&quot;<br />      Spi_rw = 0<br />      Gosub Spi_write_st<br />   End If<br /><br />   If Sexi = 1 Then<br />      Lcdat 1 , 64 , &quot;sexi&quot;<br />      Spi_rw = 1<br />      Gosub Spi_write_st<br />   End If<br /><br />   If Sup = 1 Then<br />      Incr Pwm_dataw(2)<br />      Spi_end = 1<br />   End If<br /><br />   If Sdo = 1 Then<br />      Decr Pwm_dataw(2)<br />      Spi_end = 1<br />   End If<br /><br />   Gosub Key_sme<br />   Gosub Key_sexi<br />   Gosub Key_sup<br />   Gosub Key_sdo<br />   Gosub Key_sru<br /><br />   Waitms 3<br /><br />Loop<br />End<br /><br />Spi_write_st:<br />   Spiinit<br />   Ss_st = 0<br />   '---SYNCHRONIZACJA SPI<br />   Spi_err = 1<br />   Sdout = 123                                              'zmienn kontrolna wysylana do slava<br />   R = 1<br />   Do<br />      Sdin = Spimove(sdout)<br />      Incr R<br />   Loop Until Sdin = 22 Or R = 150                          'oczekiwanie na odpowiedz od slawa<br />   If Sdin = 22 Then                                        'odpowiedz slava prawidlowa<br />      Spi_err = 0                                           'zerowanie bledy SPI<br />      For N = 1 To 8<br />         M = 9 - N<br />         Sdout = Spi_key(n)                                 'wyslanie zmiennych z tablicy 1-8<br />         Sdin = Spimove(sdout)<br />         Spi_d_in(m) = Sdin                                 'zapis odebranych danych z tablicy 8-1<br />      Next N<br />   End If<br /><br />   If Spi_err = 0 Then<br />      For N = 1 To 8<br />         If Spi_d_in(n) &lt;&gt; Spi_key(n) Then Spi_err = 1      'niezgodnosc odebranych danych zglasza blad<br />      Next N<br />   End If<br /><br />   If Spi_err = 0 Then<br />      Sdout = Spi_rw<br />      Sdin = Spimove(sdout)<br />      If Spi_rw = 0 Then<br />        '---odbieranie<br />         Sdout = St_dataw<br />         St_datar = Spimove(sdout)<br /><br />         For N = 1 To 7<br />            Sdout = N<br />            Sdin = Spimove(sdout)<br />            Pwm_datar(n) = Sdin<br />         Next N<br />      Else<br />         Sdout = St_dataw<br />         Sdin = Spimove(sdout)<br />         For N = 1 To 7<br />            Sdout = Pwm_dataw(n)<br />            Sdin = Spimove(sdout)<br />         Next N<br />         '---- odbieranie<br />         Sdout = St_dataw<br />         St_datar = Spimove(sdout)<br /><br />         For N = 1 To 7<br />            Sdout = N<br />            Sdin = Spimove(sdout)<br />            Pwm_datar(n) = Sdin<br />         Next N<br />      end if<br />   End If<br /><br />   Ss_st = 1<br />   Spi_end = 1<br />Return<br /><br /><br />Key_sme:<br />   If Pinc.2 = 0 Then<br />      Waitms Key_ms<br />      If Pinc.2 = 0 Then<br />         Sme = 1<br />         Waitms Key_ms<br />      End If<br />   Else<br />      Sme = 0<br />   End If<br />Return<br /><br />Key_sexi:<br />   If Pinc.3 = 0 Then<br />      Waitms Key_ms<br />      If Pinc.3 = 0 Then<br />         Sexi = 1<br />         Waitms Key_ms<br />      End If<br />   Else<br />      Sexi = 0<br />   End If<br />Return<br /><br />Key_sup:<br />   If Pinc.4 = 0 Then<br />      Waitms Key_ms<br />      If Pinc.4 = 0 Then<br />         Sup = 1<br />         Waitms Key_ms<br />      End If<br />   Else<br />      Sup = 0<br />   End If<br />Return<br /><br />Key_sdo:<br />   If Pinc.5 = 0 Then<br />      Waitms Key_ms<br />      If Pinc.5 = 0 Then<br />         Sdo = 1<br />         Waitms Key_ms<br />      End If<br />   Else<br />      Sdo = 0<br />   End If<br />Return<br /><br />Key_sru:<br />   If Pinc.6 = 0 Then<br />      Waitms Key_ms<br />      If Pinc.6 = 0 Then<br />         Sru = 1<br />         Waitms Key_ms<br />      End If<br />   Else<br />      Sru = 0<br />   End If<br />Return<br /><br />$include &quot;my6_8.font&quot;[/syntax]<br />slave: [syntax=basic4gl]$regfile = &quot;m16def.dat&quot;<br />$crystal = 8000000<br /><br />$swstack = 40<br />$hwstack = 40<br />$framesize = 40<br /><br />$lib &quot;glcdEADOGM128x6.lbx&quot;<br /><br />Config Graphlcd = 128 * 64eadogm , Cs1 = Portc.1 , A0 = Portc.3 , Si = Portc.5 , Sclk = Portc.4 , Rst = Portc.2<br />Glcdcmd 38<br />Cls<br /><br /><br />'-----przyciski<br />Config Pinc.6 = Input<br />Config Pinc.7 = Input<br />Set Portc.6<br />Set Portc.7<br />S1 Alias Pinc.6<br />S2 Alias Pinc.7<br /><br />Dim Pwm_renew As Bit<br />Dim St_data As Byte , St_datar As Byte<br />St_data = &amp;B11111111<br />Config Portb.3 = Output                                     'led r<br />Config Portd.7 = Output                                     'led g<br />Config Portd.5 = Output                                     'led b<br />Config Portd.4 = Output                                     'led w<br />Reset Portb.3<br />Reset Portd.7<br />Reset Portd.5<br />Reset Portd.4<br /><br /><br />Dim Pwm_data(7) As Byte<br />Dim Pwm_datar(7) As Byte<br />Pwm_data(1) = 2                                             '0:off  1:off=&gt;on  2:on  3:on=&gt;off<br />Pwm_data(2) = 255                                           'Rmax<br />Pwm_data(3) = 150                                           'Gmax<br />Pwm_data(4) = 15                                            'Bmax<br />Pwm_data(5) = 0                                             'Wmax<br />Pwm_data(6) = 100                                           'Procent<br />Pwm_data(7) = 1                                             't&#91;min&#93;<br /><br />'----- SPI -------------------------------<br />Config Spi = Hard , Interrupt = On , Data Order = Msb , Master = No , Polarity = Low , Phase = 1 , Clockrate = 128<br /><br />'MISO<br />Config Portb.6 = Output<br /><br />Config Portb.4 = Input<br />Ss Alias Pinb.4<br /><br />Dim Spi_err As Bit<br />Dim Spi_end As Bit<br />Dim Spi_rw As Byte<br /><br />Dim Sdin As Byte<br />Dim Sdout As Byte<br />Dim Spi_d_in(16) As Byte<br />Dim Spi_key(8)as Byte<br />Spi_key(1) = 71<br />Spi_key(2) = 1<br />Spi_key(3) = 33<br />Spi_key(4) = 171<br />Spi_key(5) = 33<br />Spi_key(6) = 5<br />Spi_key(7) = 208<br />Spi_key(8) = 18<br /><br /><br />'   '---- ZMIENNE ------------------------------<br />Dim N As Byte , M As Byte , I As Byte , K As Byte<br /><br />Spiinit<br />On Spi Read_spi Nosave<br />Enable Interrupts<br /><br /><br />Do<br />   St_data = &amp;B11111111<br />   Setfont My6_8<br />   Lcdat 1 , 1 , &quot;SPI SLAVE&quot;<br /><br />   If Pwm_renew = 1 Then<br />      Pwm_renew = 0<br />      Lcdat 1 , 64 , &quot;er=&quot; ; Spi_err<br /><br />      For N = 1 To 7<br />         M = 1 + N<br />         Lcdat M , 1 , N ; &quot;d=&quot; ; Pwm_data(n) ; &quot;  &quot;<br />      Next N<br />   End If<br /><br /><br />   Waitms 300<br /><br />Loop<br />End<br /><br />Read_spi:<br />   '---SYNCHRONIZACJA SPI<br />   Spi_err = 1<br />   Sdout = 22                                               'zmienn kontrolna wysylana do mastera<br />   N = 0<br />   Do<br />      Incr N<br />      Spdr = Sdout<br />      Do<br />      Loop Until Spsr.spif = 1 Or Ss = 1                    'oczekiwanie na zakonczenie przesylania<br />      Sdin = Spdr<br />   Loop Until N = 155 Or Sdin = 123                         'oczekiwanie na odpowiedz mastera<br /><br />   If Sdin = 123 Then                                       'odpowiedz mastera prawidlowa<br />      Spi_err = 0                                           'zerowanie bledy SPI<br />      For N = 1 To 8<br />         M = 9 - N<br />         Spdr = Spi_key(m)                                  'wyslanie zmiennych z tablicy 8-1<br />         Do<br />         Loop Until Spsr.spif = 1 Or Ss = 1<br />         Sdin = Spdr                                        'zapis odebranych danych z tablicy 1-8<br />         Spi_d_in(n) = Sdin<br />      Next N<br />   End If<br /><br />   If Spi_err = 0 Then<br />      For N = 1 To 8<br />         If Spi_key(n) &lt;&gt; Spi_d_in(n) Then Spi_err = 1      'niezgodnosc odebranych danych zglasza blad<br />      Next N<br />   End If<br /><br />   If Spi_err = 0 Then<br />      Do<br />      Loop Until Spsr.spif = 1 Or Ss = 1<br />      Spi_rw = Spdr<br />      If Spi_rw = 0 Then<br />      '----- odbieranie<br />         Spdr = St_data<br />         Do<br />         Loop Until Spsr.spif = 1 Or Ss = 1<br />         Sdin = Spdr<br />         For N = 1 To 7<br />            Sdout = Pwm_data(n)<br />            Spdr = sdout<br />            Do<br />            Loop Until Spsr.spif = 1 Or Ss = 1<br />            Sdin = Spdr<br />         Next N<br />      Else<br />         Do<br />         Loop Until Spsr.spif = 1 Or Ss = 1<br />         St_data = Spdr<br />         For N = 1 To 7<br />            Do<br />            Loop Until Spsr.spif = 1 Or Ss = 1<br />            Pwm_data(n) = Spdr<br />         Next N<br />      '----- odbieranie<br />         Spdr = St_data<br />         Do<br />         Loop Until Spsr.spif = 1 Or Ss = 1<br />         Sdin = Spdr<br />         For N = 1 To 7<br />            Sdout = Pwm_data(n)<br />            Spdr = sdout<br />            Do<br />            Loop Until Spsr.spif = 1 Or Ss = 1<br />            Sdin = Spdr<br />         Next N<br />      end if<br />   End If<br /><br />   Pwm_renew = 1<br /><br />Return<br /><br />$include &quot;my6_8.font&quot;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1754">ogrodnik2ha</a> — 8 lut 2014, o 01:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ogrodnik2ha]]></name></author>
<updated>2014-02-07T17:06:35+01:00</updated>
<published>2014-02-07T17:06:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5865&amp;p=68999#p68999</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5865&amp;p=68999#p68999"/>
<title type="html"><![CDATA[Re: SPI=HARD ustawienie ss=1 po transmisji blokuje kolejne]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5865&amp;p=68999#p68999"><![CDATA[
Dołączam pliki bascom<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1754">ogrodnik2ha</a> — 7 lut 2014, o 17:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ogrodnik2ha]]></name></author>
<updated>2014-02-07T15:55:54+01:00</updated>
<published>2014-02-07T15:55:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5865&amp;p=68991#p68991</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5865&amp;p=68991#p68991"/>
<title type="html"><![CDATA[SPI=HARD ustawienie ss=1 po transmisji blokuje kolejne]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5865&amp;p=68991#p68991"><![CDATA[
Witam,<br />i błagam o pomoc z Bascomem. <br />cyt. &quot;BASCOM - program, który prawie działa jest gorszy od nieistniejącego. W rozpaczy może się zdarzyć, że konstruktor będzie próbował naprawić błędy bibliotek BASCOMa grzebiąc lutownicą w swoim komputerze. &quot; (marek_Łódź <a href="http://www.elektroda.pl/rtvforum/viewtopic.php?p=2083764#2083764"  class="postlink">http://www.elektroda.pl/rtvforum/viewtopic.php?p=2083764#2083764</a>)<br /><br />Walcze z transmisją spi w sposób odmienny niż w postach z powyższego cytatu. <br />Komunikacja działa ok ale tylko w przypadku gdy sygnał ss=1 na koniec procedury wysyłania spi jest wyremowany<br />w odwrotnym przypadku działa tylko za pierwszym wywołaniem procedury.<br />Zakładając, że mamy jeden układ slave działa lux (ss stale w stanie niskim)<br />Ja mama dwa układy slave więc muszę po zakończeniu ustawić ss w stan wysoki. <br />Może coś gdzieś zjadłem i to nie wina bascoma. <br />Tracę już cierpliwość i proszę o pomoc.<br /><br />Master: [syntax=basic4gl]$regfile = &quot;m644pdef.dat&quot;<br />$crystal = 8000000<br /><br />'---- LCD GRAPH ----------------------<br />$lib &quot;glcdEADOGM128x6.lbx&quot;<br />Config Graphlcd = 128 * 64eadogm , Cs1 = Porta.7 , A0 = Porta.5 , Si = Porta.3 , Sclk = Porta.4 , Rst = Porta.6<br /><br />Cls<br />Config Pind.4 = Output<br />Config Pind.5 = Output<br />Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1<br />Pwm1a = 1                                                   'KEY<br />Pwm1b = 220                                                 'LCD<br />Glcdcmd 38<br /><br />'---- KEY<br />Config Pinc.2 = Input<br />Config Pinc.3 = Input<br />Config Pinc.4 = Input<br />Config Pinc.5 = Input<br />Config Pinc.6 = Input<br />Set Portc.2<br />Set Portc.3<br />Set Portc.4<br />Set Portc.5<br />Set Portc.6<br /><br />Dim Sme As Bit , Sexi As Bit , Sdo As Bit , Sup As Bit , Sru As Bit       'zmienne key<br /><br />Dim Key_ms As Byte<br />Key_ms = 100<br /><br />'---- SPI<br />Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 1 , Clockrate = 64 , Noss = 1<br /><br />Config Portb.5 = Output<br />Config Portb.7 = Output<br />Config Portb.4 = Output<br />Config Portb.3 = Output<br />'Set Portb.5<br />'Set Portb.7<br />Set Portb.4<br />Set Portb.3<br />Ss_st Alias Portb.3<br />Ss_ds Alias Portb.4<br /><br />Dim Spi_err As Bit<br />Dim Spi_end As Bit<br />Dim Spi_rw As Bit<br /><br />Dim Sdin As Byte<br />Dim Sdout As Byte<br />Dim Spi_d_in(16) As Byte<br />Dim Spi_key(8)as Byte<br />Spi_key(1) = 71<br />Spi_key(2) = 1<br />Spi_key(3) = 33<br />Spi_key(4) = 171<br />Spi_key(5) = 33<br />Spi_key(6) = 5<br />Spi_key(7) = 208<br />Spi_key(8) = 18<br /><br />Dim St_dataw As Byte<br />Dim St_datar As Byte<br />St_dataw = &amp;B11111111<br />St_datar = &amp;B11111111<br />Dim Pwm_datar(7) As Byte<br />Dim Pwm_dataw(7) As Byte<br />Pwm_dataw(1) = 11                                           '0:off  1:off=&gt;on  2:on  3:on=&gt;off  4:test<br />Pwm_dataw(2) = 12                                           'Rmax<br />Pwm_dataw(3) = 13                                           'Gmax<br />Pwm_dataw(4) = 14                                           'Bmax<br />Pwm_dataw(5) = 15                                           'Wmax<br />Pwm_dataw(6) = 16                                           'Procent<br />Pwm_dataw(7) = 17<br /><br />Dim R As Byte , N As Byte , M As Byte<br /><br /><br />Setfont My6_8<br />Spi_end = 0<br />Spi_rw = 0<br />St_dataw = &amp;B11111111<br /><br /><br />Gosub Spi_write_st<br /><br />Waitms 200<br /><br />Do<br /><br />   Lcdat 1 , 1 , &quot;SPI MASTER&quot;<br />   If Spi_end = 1 Then<br />      Spi_end = 0<br />      For N = 1 To 7<br />         M = 1 + N<br />         Lcdat M , 1 , N ; &quot;r=&quot; ; Pwm_datar(n) ; &quot;  &quot;<br />         Lcdat M , 64 , N ; &quot;w=&quot; ; Pwm_dataw(n) ; &quot;  &quot;<br />      Next N<br />      'Lcdat 8 , 100 ,                                       Ss_st<br />   End If<br /><br />   If Sme = 1 Then<br />      Lcdat 1 , 64 , &quot;sme&quot;<br />      Spi_rw = 0<br />      Spi_end = 0<br />      Gosub Spi_write_st<br />   End If<br /><br />   If Sexi = 1 Then<br />      Lcdat 1 , 64 , &quot;sexi&quot;<br />      Spi_rw = 1<br />      Spi_end = 0<br />      Gosub Spi_write_st<br />   End If<br /><br />   If Sup = 1 Then<br />      Incr Pwm_dataw(2)<br />      Spi_end = 1<br />   End If<br /><br />   If Sdo = 1 Then<br />      Decr Pwm_dataw(2)<br />      Spi_end = 1<br />   End If<br /><br />   Gosub Key_sme<br />   Gosub Key_sexi<br />   Gosub Key_sup<br />   Gosub Key_sdo<br />   Gosub Key_sru<br /><br />   Waitms 3<br /><br />Loop<br />End<br /><br />Spi_write_st:<br />   Spiinit<br />   Ss_st = 0<br />   'Waitus 100<br />   Spi_err = 1<br />   Sdout = 123<br />   R = 1<br />   Do<br />      Sdin = Spimove(sdout)<br />      Incr R<br />   Loop Until Sdin = 22 Or R = 150<br />   If Sdin = 22 Then<br />      For N = 1 To 8<br />         M = 9 - N<br />         Sdout = Spi_key(n)<br />         Sdin = Spimove(sdout)<br />         Spi_d_in(m) = Sdin<br />      Next N<br />      Spi_err = 0<br />   End If<br /><br />   If Spi_err = 0 Then<br />      For N = 1 To 8<br />         If Spi_d_in(n) &lt;&gt; Spi_key(n) Then Spi_err = 1<br />      Next N<br />   End If<br /><br />   If Spi_err = 0 Then<br />      Sdout = Spi_rw<br />      Sdin = Spimove(sdout)<br />      If Spi_rw = 0 Then                                    'odczyt<br />         Sdout = 0<br />         St_datar = Spimove(sdout)<br />         For N = 1 To 7<br />            Pwm_datar(n) = Spimove(n)<br />         Next N<br />      Else<br />         Sdout = St_dataw<br />         Sdin = Spimove(sdout)<br />         For N = 1 To 7<br />            Sdout = Pwm_dataw(n)<br />            Sdin = Spimove(sdout)<br />         Next N<br />      End If<br />   Else<br />      Pwm_datar(1) = 0<br />   End If<br />   Waitms 100<br />   Ss_st = 1<br />   Spi_end = 1<br />Return<br /><br /><br />Key_sme:<br />   If Pinc.2 = 0 Then<br />      Waitms Key_ms<br />      If Pinc.2 = 0 Then<br />         Sme = 1<br />         Waitms Key_ms<br />      End If<br />   Else<br />      Sme = 0<br />   End If<br />Return<br /><br />Key_sexi:<br />   If Pinc.3 = 0 Then<br />      Waitms Key_ms<br />      If Pinc.3 = 0 Then<br />         Sexi = 1<br />         Waitms Key_ms<br />      End If<br />   Else<br />      Sexi = 0<br />   End If<br />Return<br /><br />Key_sup:<br />   If Pinc.4 = 0 Then<br />      Waitms Key_ms<br />      If Pinc.4 = 0 Then<br />         Sup = 1<br />         Waitms Key_ms<br />      End If<br />   Else<br />      Sup = 0<br />   End If<br />Return<br /><br />Key_sdo:<br />   If Pinc.5 = 0 Then<br />      Waitms Key_ms<br />      If Pinc.5 = 0 Then<br />         Sdo = 1<br />         Waitms Key_ms<br />      End If<br />   Else<br />      Sdo = 0<br />   End If<br />Return<br /><br />Key_sru:<br />   If Pinc.6 = 0 Then<br />      Waitms Key_ms<br />      If Pinc.6 = 0 Then<br />         Sru = 1<br />         Waitms Key_ms<br />      End If<br />   Else<br />      Sru = 0<br />   End If<br />Return<br /><br />$include &quot;my6_8.font&quot;[/syntax] Slave: [syntax=basic4gl]$regfile = &quot;m16def.dat&quot;<br />$crystal = 8000000<br /><br />$lib &quot;glcdEADOGM128x6.lbx&quot;<br /><br />Config Graphlcd = 128 * 64eadogm , Cs1 = Portc.1 , A0 = Portc.3 , Si = Portc.5 , Sclk = Portc.4 , Rst = Portc.2<br />Glcdcmd 38<br />Cls<br /><br /><br />'-----przyciski<br />Config Pinc.6 = Input<br />Config Pinc.7 = Input<br />Set Portc.6<br />Set Portc.7<br />S1 Alias Pinc.6<br />S2 Alias Pinc.7<br /><br />Dim Pwm_renew As Bit<br />Dim St_data As Byte , St_datar As Byte<br />St_data = &amp;B11111111<br />Config Portb.3 = Output                                     'led r<br />Config Portd.7 = Output                                     'led g<br />Config Portd.5 = Output                                     'led b<br />Config Portd.4 = Output                                     'led w<br />Reset Portb.3<br />Reset Portd.7<br />Reset Portd.5<br />Reset Portd.4<br /><br /><br />Dim Pwm_data(7) As Byte<br />Dim Pwm_datar(7) As Byte<br />Pwm_data(1) = 2                                             '0:off  1:off=&gt;on  2:on  3:on=&gt;off<br />Pwm_data(2) = 255                                           'Rmax<br />Pwm_data(3) = 150                                           'Gmax<br />Pwm_data(4) = 15                                            'Bmax<br />Pwm_data(5) = 0                                             'Wmax<br />Pwm_data(6) = 100                                           'Procent<br />Pwm_data(7) = 1                                             't&#91;min&#93;<br /><br />'----- SPI -------------------------------<br />Config Spi = Hard , Interrupt = On , Data Order = Msb , Master = No , Polarity = Low , Phase = 1 , Clockrate = 64<br /><br />'MISO<br />Config Portb.6 = Output<br /><br />Config Portb.4 = Input<br />Ss Alias Pinb.4<br /><br />Dim Spi_err As Bit<br />Dim Spi_end As Bit<br /><br />Dim Sdin As Byte<br />Dim Sdout As Byte<br />Dim Spi_d_in(16) As Byte<br />Dim Spi_key(8)as Byte<br />Spi_key(1) = 71<br />Spi_key(2) = 1<br />Spi_key(3) = 33<br />Spi_key(4) = 171<br />Spi_key(5) = 33<br />Spi_key(6) = 5<br />Spi_key(7) = 208<br />Spi_key(8) = 18<br /><br /><br />'   '---- ZMIENNE ------------------------------<br />Dim N As Byte , M As Byte , I As Byte , K As Byte<br /><br />Spiinit<br />On Spi Read_spi Nosave<br />Enable Interrupts<br /><br /><br />Do<br />   St_data = &amp;B11111111<br />   Setfont My6_8<br />   Lcdat 1 , 1 , &quot;SPI SLAVE    &quot;<br /><br />   If Pwm_renew = 1 Then<br />      Pwm_renew = 0<br />      For N = 1 To 7<br />         M = 1 + N<br />         Lcdat M , 1 , N ; &quot;d=&quot; ; Pwm_data(n) ; &quot;  &quot;<br />      Next N<br />   End If<br /><br />   Setfont My6_8<br />   If S1 = 0 Then<br />      Lcdat 1 , 64 , &quot;sme&quot;<br />   End If<br /><br />   If S2 = 0 Then<br />      Lcdat 1 , 64 , &quot;sexi&quot;<br />   End If<br /><br />   Waitms 3<br /><br />Loop<br />End<br /><br />Read_spi:<br /><br />   Config Portb.4 = Input<br />   Spi_err = 1<br />   Sdout = 22<br />   N = 0<br />   Spdr = Sdout<br />   Do<br />      Incr N<br />      Spdr = Sdout<br />      Do<br />      Loop Until Spsr.spif = 1 Or Ss = 1<br />      Spsr.spif = 0<br />      Sdin = Spdr<br />   Loop Until N = 155 Or Sdin = 123<br /><br />   If Sdin = 123 Then<br />      For N = 1 To 8<br />         M = 9 - N<br />         Spdr = Spi_key(m)<br />         Do<br />         Loop Until Spsr.spif = 1 Or Ss = 1<br />         Spsr.spif = 0<br />         Spi_d_in(n) = Spdr<br />      Next N<br />      Spi_err = 0<br />   End If<br /><br />   If Spi_err = 0 Then<br />      For N = 1 To 8<br />         If Spi_key(n) &lt;&gt; Spi_d_in(n) Then Spi_err = 1<br />      Next N<br />   End If<br /><br />   If Spi_err = 0 Then<br />      Do<br />      Loop Until Spsr.spif = 1 Or Ss = 1<br />      Spsr.spif = 0<br />      If Spdr = 0 Then<br />         Spdr = St_data<br />         Do<br />         Loop Until Spsr.spif = 1 Or Ss = 1<br />         Spsr.spif = 0<br />         For N = 1 To 7<br />            Spdr = Pwm_data(n)<br />            Do<br />            Loop Until Spsr.spif = 1 Or Ss = 1<br />            Spsr.spif = 0<br />         Next N<br />      Else<br />         Do<br />         Loop Until Spsr.spif = 1 Or Ss = 1<br />         Spsr.spif = 0<br />         St_datar = Spdr<br />         For N = 1 To 7<br />            Do<br />            Loop Until Spsr.spif = 1 Or Ss = 1<br />            Spsr.spif = 0<br />            Pwm_data(n) = Spdr<br />         Next N<br />      End If<br />   End If<br /><br />   Pwm_renew = 1<br /><br />Return<br /><br />$include &quot;my6_8.font&quot;[/syntax]<br />schemat master: <a href="http://forum.atnel.pl/_obrazki/o/1754/bfce2ed47e3876d70bc44f99aaea0107.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1754/bfce2ed47e3876d70bc44f99aaea0107.png" alt="Obrazek" /></a><br />schemat slave: <a href="http://forum.atnel.pl/_obrazki/o/1754/9f2ce42611a2b1d6f1cd2b7d80ddde6c.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1754/9f2ce42611a2b1d6f1cd2b7d80ddde6c.png" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1754">ogrodnik2ha</a> — 7 lut 2014, o 15:55</p><hr />
]]></content>
</entry>
</feed>