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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-06-21T17:55:02+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=12&amp;t=12076&amp;mode</id>
<entry>
<author><name><![CDATA[Jacek]]></name></author>
<updated>2015-06-21T17:55:02+01:00</updated>
<published>2015-06-21T17:55:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132404#p132404</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132404#p132404"/>
<title type="html"><![CDATA[Re: Atmega2560 komunikacja com2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132404#p132404"><![CDATA[
Dzięki Bartek - na pewno skorzystam.<br />pozdrawiam Jacek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=193">Jacek</a> — 21 cze 2015, o 17:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pikczu]]></name></author>
<updated>2015-06-21T15:23:17+01:00</updated>
<published>2015-06-21T15:23:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132376#p132376</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132376#p132376"/>
<title type="html"><![CDATA[Re: Atmega2560 komunikacja com2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132376#p132376"><![CDATA[
Jacek nie mam radia z 6 metrami tylko KF ale i tak propagacja u mnie siadła.<br />Obsługa ds-ów to proste. <br />Kiedyś pisałem taki mały termostat do zasilacza laboratoryjnego , wkurzały mnie głośne wentylatory.<br />Zobacz na to kod ma 5 lat teraz napisąl bym go ciut inaczej ale sama rejestracja ds-ów jest ok<br />[syntax=basic4gl]'*******************************************************************************<br />'------------------------------ATmega8-----------------------------------------<br />'------------------------------3xDS18b20----------------------------------------<br />'--------------------------2x PWM controled FAN---------------------------------<br />'-------------------------- UART controled -------------------------------------<br />'-------------------------Auto and manual mode----------------------------------<br />'-----------------------------Version:2.0-----------------------------------------<br />'-------------------------- flash used 66%--------------------------------------<br />'------------------------By Pawel L. aka Pikczu----------------------------------<br />'--------------------------------2010-------------------------------------------<br />'*******************************************************************************<br />'DALLAS DS18B20 ROM and scratchpad commands''''''''''''''''''''''''''<br />'1wwrite....<br />'&amp;H 33  read rom - single sensor<br />'&amp;H 55  match rom, followed by 64 bits<br />'&amp;H CC  skip rom<br />'&amp;H EC  alarm search  - ongoining alarm &gt;TH &lt;TL<br />'&amp;H BE  read scratchpad<br />'&amp;H 44  convert T<br />'*******************************************************************************<br />'*******************************************************************************<br /><br />$prog &amp;HFF , &amp;H3F , &amp;HD9 , &amp;H00                   ' generated. Take care that the chip supports all fuse bytes.<br />$regfile = &quot;m8def.DAT&quot;                            'uc type<br />$crystal = 11059200                               'crysal frequency<br />$baud = 9600<br />Config Serialin = Buffered , Size = 20<br />'Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0<br />Config Portd.1 = Output                           'TX<br />Config Portd.0 = Input                            'RX<br /><br />Config Portd.6 = Input                            'PUSHBUTTON<br />Portd.6 = 1                                       'PULL UP<br />Config 1wire = Portd.2                            '1Wire<br />Config Portd.7 = Output                           'BUZZER<br />Portd.7 = 0                                       'initial status<br />Config Portb.0 = Output                           'STATUS LED<br />Portb.0 = 0                                       'initial status<br />Config Portb.1 = Output                           'oc1a<br />Config Portb.2 = Output                           'oc1b<br /><br />'*******************************************************************************<br />'****************************Variables*****************************************<br />Dim B As Byte                                     'beep<br />Dim Index As Byte                                 'index<br />Dim Ile As Byte                                   'how many sensors ?<br />Dim I1(2) As Byte                                 'array for 2 byte readed from DS sensor<br />Dim I2(2) As Byte                                 'array for 2 byte readed from DS sensor<br />Dim I3(2) As Byte                                 'array for 2 byte readed from DS sensor<br />Dim Dsx(8) As Byte                                'tablica do zapisaania 8 byteów odebranych z dsa przy rejsctarcji<br />Dim Ds1(8) As Byte                                ' tablica 8 bytów do zapisania 8 bytów z 1 dsa<br />Dim Eds1(8)as Eram Byte At &amp;H10                   ' Miesjce w eepromie do zapisania 1 ds<br />Dim Ds2(8) As Byte                                'Tablica 8 Bytów Do Zapisania 8 Bytów Z 2 Dsa<br />Dim Eds2(8) As Eram Byte At &amp;H20                  ' Miesjce w eepromie do zapisania 2 ds<br />Dim Ds3(8) As Byte                                'Tablica 8 Bytów Do Zapisania 8 Bytów Z 3 Dsa<br />Dim Eds3(8) As Eram Byte At &amp;H30                  ' Miesjce w eepromie do zapisania 3 ds<br />Dim Ds_y As Byte                                  'Uzyte tylko do rejstarcji dsów<br />Dim Temp1 As Integer                              'zmienna przchowuje wartosc temp1<br />Dim Temp_1 As Byte<br />Dim Temp2 As Integer                              'zmienna przchowuje wartosc temp2<br />Dim Temp_2 As Byte<br />Dim Temp3 As Integer                              'zmienna przchowuje wartosc temp3<br />Dim Temp_3 As Byte<br />Dim T_array(2) As Byte                            'master and slave temperature array<br />Dim T_a_m As Byte                                 'Temp array max value<br />Dim Speed1 As Byte                                'zmienna na watrosc PWM<br />Dim Speed2 As Byte                                'zmienna na watrosc PWM<br />Dim Mod_e As Bit                                  'zmienna bitowa do zmiany pracy auto/manual<br />Dim Czas As Word                                  'zmienna liczaca czas<br />Dim Czas2 As Byte                                 'zmienna liczaca czas dla flash i beep<br />Dim H1 As Byte                                    'zmienna histerezy<br />Dim H2 As Byte                                    'zmienna histerezy<br />Dim Flag0 As Bit                                  'zmienna pomocnicza do timera 0<br />Dim Flag1 As Bit                                  'taka mala flaga pomocnicza<br />Dim Flag2 As Bit                                  'flaga zmiany temperatury<br />Dim Serial_flag As Byte                           'flaga odebroanego znaku UART<br />Dim Y As Single<br />Dim Z As Single<br /><br /><br />'*******************************************************************************<br />'*******************************************************************************<br />Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1<br />Enable Interrupts<br />Enable Oc1a<br />Enable Oc1b<br />Config Timer0 = Timer , Prescale = 1024<br />Config Timer2 = Timer , Async = Off , Prescale = 1024<br />On Timer2 Timer2_isr                              'ptzrwanie od timera 2 do flash i beep<br /><br />'*******************************************************************************<br />'*******************************************************************************<br />Wait 1<br />Print &quot;Restart&quot;<br />Wait 1<br /><br />Debounce Pind.6 , 0 , Zapisz , Sub                'zarejstruj ds-y<br />Wait 1                                            'krotkie opoznienie po wyjsciu z restarcji<br />Ile = 1wirecount()                                'ile czujnków w ukladzie<br />Wait 1                                            ' krótkie opoznienie po policzeniu czojnkow                                              '<br />Enable Timer2<br />Flag1 = 0                                         'flaga wyzerowana tan na wszelki wypadek<br />For B = 1 To Ile                                  'teraz ile czojnikow tyle flash i beep<br />  Start Timer2                                    'zeby nie uzywac wait do opoznienia<br />  Gosub Flash                                     'skocz do blysku dioda<br />  Gosub Beep                                      'skok do beep<br />  Bitwait Flag1 , Set                             'flaga ze czas minal i mozna wykonac dalej<br />  Czas2 = 0                                       'wyzerwoanie czasu<br />Next B<br />Stop Timer2                                       'zaczymnaie niepotrezbnego timera 2<br />Czas2 = 0                                         'timer juz zdazyl cos policzyc wiec zerownaie jeszcze raz<br />Disable Timer2<br />'*************************Read from Eeprom *************************************<br />'*******************************************************************************<br />For Index = 1 To 8<br />  Ds1(index) = Eds1(index)                        'odczytaj z pameici eeprom nuemry dsów  po zalaczeniu zasilania<br />  Ds2(index) = Eds2(index)                        'odczytaj z pameici eeprom nuemry dsów  po zalaczeniu zasilania<br />  Ds3(index) = Eds3(index)                        'odczytaj z pameici eeprom nuemry dsów   po zalaczeniu zasilania<br />Next Index<br />Index = 0<br />'*******************************************************************************<br />'PO WLACZENIU ZASILANIA PIERWSZA ODCZYTANA WARTOSC BYLA BY 85 STOPNI ZEBY TEGO UNIKNAC DOKONAJ KONWERSI TEMP<br />'*************konwersja temp dla wszystkich dsow********************************<br />1wreset<br />1wwrite &amp;HCC                                      'skip all<br />1wwrite &amp;H44<br />'*******************************************************************************<br />'*******************************************************************************<br />Pwm1a = 255                                       'na maxa go    tak dla testu ze dziala<br />Pwm1b = 255                                       'na maxa go    tak dla testu ze dziala<br />Wait 2<br />Pwm1a = 0<br />Pwm1b = 0<br /><br /><br /><br /><br />'***************************Ustawienie Timera0**********************************<br />Load Timer0 , 216<br />On Ovf0 Timer0_isr<br />Enable Timer0<br />'*******************************************************************************<br />'****************************Poczatek Petli*************************************<br />Czas = 0<br />Do<br /><br />  If Czas &gt;= 100 Then<br /><br />    Disable Timer0<br /><br />    1wreset<br />    1wwrite &amp;H55<br />    1wwrite Ds1(1) , 8                            'wysy³amy adres pierwszego czujnika<br />    1wwrite &amp;HBE<br />    I1(1) = 1wread(2)<br /><br /><br />    1wreset<br />    1wwrite &amp;H55<br />    1wwrite Ds2(1) , 8                            'wysylam adres drugiego czujnika<br />    1wwrite &amp;HBE<br />    I2(1) = 1wread(2)<br /><br />    1wreset<br />    1wwrite &amp;H55<br />    1wwrite Ds3(1) , 8                            'wysylam adres trzeciego czujnika<br />    1wwrite &amp;HBE<br />    I3(1) = 1wread(2)<br /><br /><br />    Temp1 = I1(2)                                 '          starszy bajt temperatury<br />    Shift Temp1 , Left , 8                        'przesun w lewo o 8 miejsc<br />    Temp1 = Temp1 + I1(1)<br />    Shift Temp1 , Right , 4<br /><br />    Temp2 = I2(2)                                 '          starszy bajt temperatury<br />    Shift Temp2 , Left , 8                        'przesun w lewo o 8 miejsc<br />    Temp2 = Temp2 + I2(1)<br />    Shift Temp2 , Right , 4<br /><br />    Temp3 = I3(2)                                 '          starszy bajt temperatury<br />    Shift Temp3 , Left , 8                        'przesun w lewo o 8 miejsc<br />    Temp3 = Temp3 + I3(1)<br />    Shift Temp3 , Right , 4<br />      '  ****konwersja temp dla wszystkich dsow**<br /><br />    1wreset<br />    1wwrite &amp;HCC                                  'skip all<br />    1wwrite &amp;H44<br /><br />    Czas = 0<br />    Enable Timer0                                 'all DS do covert T<br />    Gosub Flash<br />  End If                                          'end of if czas&gt;=100 temp reading form ds scratchpad<br /><br />  If Temp_1 &lt;&gt; Temp1 Or Temp_2 &lt;&gt; Temp2 Or Temp_3 &lt;&gt; Temp3 Then<br />    Temp_1 = Temp1<br />    T_array(1) = Temp1<br />    Temp_2 = Temp2<br />    T_array(2) = Temp2<br />    Temp_3 = Temp3<br />    Print &quot;Master T= &quot; ; Temp_2 ; &quot;C &quot; ; &quot;Slave T= &quot; ; Temp_1 ; &quot;C &quot; ; &quot;Internal T= &quot; ; Temp_3 ; &quot;C&quot;<br />    Set Flag2<br />  End If<br /><br /><br /><br />  If Mod_e = 0 Then                               'mode = Auto<br /><br />    If Flag2 = 1 Then                             'if fla2 =1 new temperature value<br />      T_a_m = Max(t_array(1))                     'pick from array max value of temp<br />      Y = 8.75 * T_a_m                            ' do maths<br />      Y = Y - 182.5<br />         ' Speed1 = Abs(y)<br />      Speed1 = Y<br />      If T_a_m &lt;= 30 Then                         'if temperature array max value smaller then 30 then<br />        Speed1 = 0                                'fan speed = 0<br />      End If                                      '<br />      If T_a_m &gt;= 50 Then                         'if temperature array max value greater or equal 50 then<br />        Speed1 = 255<br />      End If<br />         '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />      Z = 7 * Temp_3                              'same as above but just for small fan and internal temp value<br />      Z = Z - 95<br />      Speed2 = Z<br />      If Temp_3 &lt;= 25 Then<br />        Speed2 = 0<br />      End If<br />      If Temp_3 &gt;= 50 Then<br />        Speed2 = 255<br />      End If<br /><br />      Print &quot;Radiator Fan=&quot; ; Speed1<br /><br />      Print &quot;Case Fan=&quot; ; Speed2<br />      Reset Flag2<br />      Pwm1a = Speed1<br />      Pwm1b = Speed2<br />    End If<br />      'Pwm1a = Speed1<br />      'Pwm1b = Speed2<br />  End If<br /><br /><br />  Serial_flag = Ischarwaiting()                   'jesli jakis znak w buforze to ustaw flage na 1<br /><br />  If Serial_flag = 1 Then                         'jesli flaga odebranego znaku 1 to<br />    Index = Inkey()                               'przepisz znak z bufora do zmiennej index<br />    If Index = 097 Or Index = 065 Then            ' jesli ten znak to male a lub duze A to<br />      Print &quot;MODE:&quot;auto &quot;&quot;                        'print w terminalu ze zmieniono mod na auto<br />      Temp_1 = Temp1<br />      Temp_2 = Temp2<br />      Temp_3 = Temp3<br />      Print &quot;Slave T= &quot; ; Temp_1 ; &quot;C &quot; ; &quot;Master T= &quot; ; Temp_2 ; &quot;C &quot; ; &quot;Internal T= &quot; ; Temp_3 ; &quot;C&quot;<br />      Reset Mod_e                                 'wyzeroj flage trybu prac<br />      Set Flag2<br />    End If<br /><br />    If Index = 109 Or Index = 077 Then<br />      Print &quot;MODE:&quot;manual &quot;&quot;<br />      Set Mod_e<br />      Temp_1 = Temp1<br />      Temp_2 = Temp2<br />      Temp_3 = Temp3<br />      Print &quot;Slave T= &quot; ; Temp_1 ; &quot;C &quot; ; &quot;Master T= &quot; ; Temp_2 ; &quot;C &quot; ; &quot;Internal T= &quot; ; Temp_3 ; &quot;C&quot;<br />      Input &quot;Input Speed value for radiator Fan=&quot; , Speed1<br /><br />      If Speed1 &lt; 80 Then<br />        Speed1 = 0<br />      End If<br />      If Speed1 &gt; 255 Then<br />        Speed1 = 255<br />      End If<br />      Pwm1a = Speed1<br />      Input &quot;Input Speed Value for Case Fan=&quot; , Speed2<br />      If Speed2 &lt; 80 Then<br />        Speed2 = 0<br />      End If<br />      If Speed2 &gt;= 255 Then<br />        Speed2 = 255<br />      End If<br />      Pwm1b = Speed2<br /><br />    End If<br />    Clear Serialin<br />  End If<br /><br />  Enable Timer0<br />Loop<br /><br />End<br />'*******************************************************************************<br />'*****************************SUBS**********************************************<br />'*******************************************************************************<br /><br />Timer0_isr:<br />  Load Timer0 , 216                               'co Xms<br />  Incr Czas<br />  If Czas &gt;= 100 Then<br />    Set Flag0<br />  Else<br />    Reset Flag0<br />  End If<br />Return<br /><br />'******************************Timer2_isr:**************************************<br />'*******************************************************************************<br />Timer2_isr:<br />  Load Timer2 , 255<br />  Incr Czas2<br />  If Czas2 = 4 Then                               'czas aktywny<br />    Reset Portb.0<br />    Reset Portd.7<br />  End If<br /><br />  If Czas2 &gt;= 16 Then                             'czas przerwy<br />    Flag1 = 1<br />  End If<br /><br />Return<br /><br />'**********************************FlashBeep************************************<br />'*******************************************************************************<br /><br />Fb:                                               'Flash beep<br />  Enable Timer2<br /><br />  Flag1 = 0                                       'wyzerój flage<br />  Toggle Portd.7                                  'zmien stan na przeciwny<br />  Toggle Portb.0                                  'zmien stan na przeciwny<br />  Bitwait Flag1 , Set                             'czekaj na bit potwierdzajacy od timera2<br />  Czas2 = 0                                       'wyzeroj czas liczony przez timer2<br /><br />Return<br />'********************************BEEP*******************************************<br />'*******************************************************************************<br />Beep:<br />  Flag1 = 0<br />  Toggle Portd.7<br />Return<br />'********************************FLASH******************************************<br />'*******************************************************************************<br />Flash:<br />  Flag1 = 0<br />  Toggle Portb.0<br /><br />Return<br />'********************************ZAPISZ*****************************************<br />'*******************************************************************************<br />Zapisz:<br />  Czas = 0                                        'wyzerownaie licznika czasu od timera0<br />  Gosub Fb                                        'skocz do flash beep<br />  Print &quot;Rejstracja&quot;                              '  wyswietla w terminalu<br />  Disable Interrupts                              'wy³acz przerwania<br />  Ds_y = 0                                        'wyzeroj zmienna ilosc czojnikow ds<br /><br />  Do                                              'poczatek petli rejstracyjnej<br />    Dsx(1) = 1wsearchfirst()                      'szukaj ds na magistrali<br />    If Err = 0 Then                               'jelsi znalazl ds-a<br />      Incr Ds_y                                   'zwieksz ds_y o 1<br />      Select Case Ds_y:                           'w zaleznosci ktory to ds<br />      Case 1:                                     'pierwszy ds<br />      For Index = 1 To 8                          'zapisz jego dane do eeprom<br />        Eds1(index) = Dsx(index)<br />      Next Index                                  'i tak 8 razy<br />      Print &quot;Registered DS1 as Master &quot;           'no i potwierdz<br />      Enable Interrupts                           'wlacz przerwania<br />      Gosub Fb                                    'skocz do flash beep<br />      Disable Timer2                              'juz po to wylacz tiemr 2<br />      Enable Timer0                               'Wlacz timer0<br />      Bitwait Flag0 , Set                         'czekaj na flage od timera 0<br />      Disable Timer0                              'wy³acz timer0<br />      Disable Interrupts                          'wylacz przerwania<br />      Czas = 0                                    'wyzerownaie licznika czasu od timera0<br />      Case 2:                                     'dla ds-a 2<br />      For Index = 1 To 8                          'zapisz jego dane do eeprom<br />        Eds2(index) = Dsx(index)<br />      Next Index                                  'i tak 8 razy<br />      Print &quot;Registered DS2 as Slave &quot;<br />      Enable Interrupts                           'wlacz przerwania<br />      Gosub Fb                                    'skocz do flash beep<br />      Gosub Fb                                    'skocz do flash beep<br />      Disable Timer2                              'juz po to wylacz tiemr 2<br />      Enable Timer0<br />      Bitwait Flag0 , Set                         'czaekja na flage od timera 0<br />      Disable Timer0                              'wy³acz timer0<br />      Disable Interrupts                          'wylacz przerwania<br />      Czas = 0                                    'wyzerownaie licznika czasu od timera0<br />      Case 3:                                     'dla ds-a 3<br />      For Index = 1 To 8                          'zapisz jego dane do eeprom<br />        Eds3(index) = Dsx(index)<br />      Next Index                                  'i tak 8 razy<br />      Print &quot;Registered DS3 as internal  &quot;        'no i potwierdz<br />      Enable Interrupts                           'wlacz przerwania<br />      Gosub Fb                                    'skocz do flash beep<br />      Gosub Fb                                    'skocz do flash beep<br />      Gosub Fb                                    'skocz do flash beep<br />      Disable Timer2<br />      Enable Timer0                               'juz po to wylacz timer 2<br />      Bitwait Flag0 , Set                         'czekaj na flage od timera 0<br />      Disable Timer0                              'wy³acz timer0<br />      Disable Interrupts                          'wylacz przerwania<br />      Czas = 0                                    'wyzerownaie licznika czasu od timera0<br />    End Select                                    'koniec wyboru ds-ow<br />    End If                                        'koniec warunklu<br />  Loop Until Ds_y = 3                             'koniec petli do 3-ech                                      '3<br />  Enable Interrupts                               'wlacz przerwania<br />Return                                            'powrot<br />'*******************************************************************************<br />'*******************************************************************************<br />'*******************************************************************************<br />'*******************************************************************************<br />'Dta:<br />'Data 80 , 85 , 90 , 100 , 110 , 120 , 130 , 140 , 150 , 160<br />'Data 170 , 180 , 190 , 200 , 210 , 220 , 230 , 240 , 250 , 255<br />'*******************************************************************************<br />'*******************************************************************************<br />'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<br />'Y = 8.75 * X -182.5    range from 30 up to 50 degre<br />'y=predkosc<br />'x= temp<br /><br />'Y = 7 * x-95   range from 25 up to 50<br /><br />'******************************************************************************[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=154">pikczu</a> — 21 cze 2015, o 15:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jacek]]></name></author>
<updated>2015-06-21T14:13:11+01:00</updated>
<published>2015-06-21T14:13:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132356#p132356</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132356#p132356"/>
<title type="html"><![CDATA[Re: Atmega2560 komunikacja com2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132356#p132356"><![CDATA[
ok Koledzy - teraz muszę do Slave 1 dopisać obsługę 2 x DS18B20, pomiaru prędkości wiatru, no i by się przydało kierunku wiatru na AS5040 w trybie odczytu PWM - ale to pewnie jeszcze mi trochę zejdzie.<br /><br />P.S. na 6 m są zawody co kawałek wołają stacje głównie z Włoch.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=193">Jacek</a> — 21 cze 2015, o 14:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pikczu]]></name></author>
<updated>2015-06-21T14:04:28+01:00</updated>
<published>2015-06-21T14:04:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132352#p132352</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132352#p132352"/>
<title type="html"><![CDATA[Re: Atmega2560 komunikacja com2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132352#p132352"><![CDATA[
Teraz jest poprawnie:[syntax=basic4gl]$regfile = &quot;m2560def.dat&quot;<br />$crystal = 16000000<br />$hwstack = 128<br />$swstack = 128<br />$framesize = 128<br />$baud = 19200<br />$baud1 = 19200<br /><br />$lib &quot;glcd.lib&quot;<br />Config Com1 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0<br />Config Com2 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0<br /><br /><br />Config Serialin0 = Buffered , Size = 100<br />Config Serialin1 = Buffered , Size = 100          'second uart<br />Config Serialout0 = Buffered , Size = 100<br />Config Serialout1 = Buffered , Size = 100         'second uart<br /><br />Config Print0 = Portd.1 , Mode = Set<br />Config Pind.1 = Output<br /><br />Open &quot;com2:&quot; For Binary As #1<br /><br />'Dim Nm As String * 1 , Id As Word<br />Dim Nm As Byte<br />Dim Id As Word<br />Enable Interrupts<br /><br />Cursor Off<br />Cls<br />Print &quot;test port 0&quot;<br />Print #1 , &quot;Start Slave 2&quot;<br />Locate 1 , 1 : Lcd &quot;Start Slave 2&quot;<br /><br />Do<br />  'Print #1 , &quot;Start Slave 2&quot;<br /><br />  While Ischarwaiting(#1) &gt; 0<br />  Nm = Waitkey(#1)<br /><br />  Id = Val(nm)<br /><br />    Locate 2 , 1 : Lcd &quot;KEY &quot; ; Id<br />    'nie mam wyœwietlacza wiec poka¿ mi na porcie 0<br /><br />    Print &quot;KEY &quot; ; Id<br />    If Id = 2 Then<br />      Print #1 , &quot;To ja Slave 2&quot;<br />      Locate 1 , 1 : Lcd &quot;TO JA    &quot;<br />    Else<br />      Locate 1 , 1 : Lcd &quot;TO NIE JA&quot;<br />      Print #1 , &quot;TO NIE JA&quot;<br />  End If<br /><br />Wend<br />Loop<br />End<br /><br />Close #1[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=154">pikczu</a> — 21 cze 2015, o 14:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jacek]]></name></author>
<updated>2015-06-21T13:55:04+01:00</updated>
<published>2015-06-21T13:55:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132351#p132351</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132351#p132351"/>
<title type="html"><![CDATA[Re: Atmega2560 komunikacja com2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132351#p132351"><![CDATA[
Przepraszam faktycznie brakowało jednego zera ( nie mogę się przyzwyczaić do nowych okularów )<br />więc tak ten kod działa - ( na LCD Slave 1 jak dostaje &quot;2&quot; to wyskakuje krzaczek jak zaczyna odpowiadać Slave 1 zamiast &quot;2&quot; i na odwrót na LCD slave 2 jak dostaje &quot;1&quot; bo nadaje Slave 1 to jest krzaczek zamiast &quot;1&quot;)<br /><br />działający kod:<br /><br />[syntax=basic4gl]$regfile = &quot;m2560def.dat&quot;<br />    $crystal = 16000000<br />    $hwstack = 40<br />    $swstack = 40<br />    $framesize = 40<br />    $lib &quot;glcd.lib&quot;<br /><br />    Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 5 , Cd = 6 , Wr = 3 , Rd = 4 , Reset = 7 , Fs = 2 , Mode = 6<br /><br />    Config Com2 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0<br />    Config Serialin1 = Buffered , Size = 100                ' &lt;&lt;&lt;&lt;&lt;&lt;&lt; DODANO<br /><br />    Config Print1 = Portd.1 , Mode = Set                    '   &lt;&lt;&lt;&lt;&lt;&lt;&lt; ZMIENIONO<br />    Config Pind.1 = Output<br /><br />    Open &quot;com2:&quot; For Binary As #1<br /><br />    Dim Nm As String * 1 , Id As Word<br /><br /><br />    Enable Interrupts<br /><br />    Cursor Off<br />    Cls<br />    Print #1 , &quot;Start Slave 2&quot;<br />    Locate 1 , 1 : Lcd &quot;Start Slave 2&quot;<br /><br /><br />        Do<br /><br /><br />           If Ischarwaiting(#1) = 1 Then                        ' &lt;&lt;&lt;&lt;&lt;&lt; DODANO #1<br />              Nm = Waitkey(#1)                                  ' &lt;&lt;&lt;&lt;&lt;&lt; DODANO #1<br />              Locate 2 , 1 : Lcd &quot;KEY &quot; ; Nm<br />              Id = Val(nm)<br />              If Id = 2 Then<br />              Print #1 , &quot;To ja Slave 2&quot;<br />              Locate 1 , 1 : Lcd &quot;TO JA        &quot;<br />              Else<br />              Locate 1 , 1 : Lcd &quot;TO NIE JA    &quot;<br />              End If<br />           End If<br /><br /><br />           'Waitms 100<br />        Loop<br /><br /><br />       Close #1<br /><br />     End[/syntax]<br /><br />dzięki wszystkim za pomoc - bawię się dalej hi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=193">Jacek</a> — 21 cze 2015, o 13:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pikczu]]></name></author>
<updated>2015-06-21T13:54:35+01:00</updated>
<published>2015-06-21T13:54:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132350#p132350</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132350#p132350"/>
<title type="html"><![CDATA[Re: Atmega2560 komunikacja com2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132350#p132350"><![CDATA[
No teraz widzę tylko ja to od razu wywaliłem po wklejeniu kodu. <br />Po czym wkleiłem przez &quot;Add to Code&quot;  zmieniając sw i hw stack<br />Nie zmienia to jednak faktu ze zmienna NM nie powinna być jako string tylko jako byte.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=154">pikczu</a> — 21 cze 2015, o 13:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pikczu]]></name></author>
<updated>2015-06-21T13:37:03+01:00</updated>
<published>2015-06-21T13:37:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132346#p132346</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132346#p132346"/>
<title type="html"><![CDATA[Re: Atmega2560 komunikacja com2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132346#p132346"><![CDATA[
Dziwne u mnie wszytko działa coś masz źle.<br />A przekleiłeś kod dokładnie ?<br />hmm może hexa CI wyślę ??<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br />Bartek w moim kodzie ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=154">pikczu</a> — 21 cze 2015, o 13:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jacek]]></name></author>
<updated>2015-06-21T13:19:35+01:00</updated>
<published>2015-06-21T13:19:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132341#p132341</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132341#p132341"/>
<title type="html"><![CDATA[Re: Atmega2560 komunikacja com2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132341#p132341"><![CDATA[
mega po załadowaniu programu wysyła na terminal &quot;Start Slave 2&quot; - potem milczy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=193">Jacek</a> — 21 cze 2015, o 13:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pikczu]]></name></author>
<updated>2015-06-21T13:04:27+01:00</updated>
<published>2015-06-21T13:04:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132339#p132339</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132339#p132339"/>
<title type="html"><![CDATA[Re: Atmega2560 komunikacja com2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132339#p132339"><![CDATA[
Sprawdź ten [syntax=basic4gl]$regfile = &quot;m2560def.dat&quot;<br />$crystal = 16000000<br />$hwstack = 128<br />$swstack = 128<br />$framesize = 128<br />$baud = 19200<br />$baud1 = 19200<br /><br />$lib &quot;glcd.lib&quot;<br />Config Com1 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0<br />Config Com2 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0<br /><br /><br />Config Serialin0 = Buffered , Size = 100<br />Config Serialin1 = Buffered , Size = 100          'second uart<br />Config Serialout0 = Buffered , Size = 100<br />Config Serialout1 = Buffered , Size = 100         'second uart<br /><br />'Config Print0 = Portd.1 , Mode = Set<br />'Config Pind.1 = Output<br /><br />Open &quot;com2:&quot; For Binary As #1<br /><br />'Dim Nm As String * 1 , Id As Word<br />Dim Id As Byte<br /><br />Enable Interrupts<br /><br />Cursor Off<br />Cls<br />Print &quot;test port 0&quot;<br />Print #1 , &quot;Start Slave 2&quot;<br />Locate 1 , 1 : Lcd &quot;Start Slave 2&quot;<br /><br />Do<br />  'Print #1 , &quot;Start Slave 2&quot;<br /><br />  While Ischarwaiting(#1) &gt; 0<br />  Id = Waitkey(#1)<br />    Locate 2 , 1 : Lcd &quot;KEY &quot; ; Id<br />    'nie mam wyœwietlacza wiec poka¿ mi na porcie 0<br />    Print &quot;KEY &quot; ; Id<br />    If Id = 2 Then<br />      Print #1 , &quot;To ja Slave 2&quot;<br />      Locate 1 , 1 : Lcd &quot;TO JA    &quot;<br />    Else<br />      Locate 1 , 1 : Lcd &quot;TO NIE JA&quot;<br />      Print #1 , &quot;TO NIE JA&quot;<br />  End If<br /><br />Wend<br />Loop<br />End<br /><br />Close #1[/syntax]<br />Zmienna Dim Nm As String * 1 , Id As Word     która używasz do odebrania znaku przez waitkey musi byc zdeklarowana jako bajt a nie string<br /> dopiero potem możesz z tego zbudować string.<br />bufor_str =bufor_str + chr(Id) <br />Zmienna bufor_str deklarujesz jako string np *20<br /><br />---------edit ------ <br />Się mi  przypomniało, brakowało Ci jeszcze $baud u góry nie można tego zostawić nie ustawionego bo kompilator przypisuje śmieci.<br />Któryś z użytkowników miał taki problem na MCS forum.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=154">pikczu</a> — 21 cze 2015, o 13:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jacek]]></name></author>
<updated>2015-06-21T12:36:57+01:00</updated>
<published>2015-06-21T12:36:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132337#p132337</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132337#p132337"/>
<title type="html"><![CDATA[Re: Atmega2560 komunikacja com2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132337#p132337"><![CDATA[
Bartku twój kod miałem załadowany działa w połowie można powiedzieć - mega po otrzymaniu jakiegokolwiek znaku również &quot;2&quot; wyświetla na LCD &quot;to nie ja&quot; ale nie odpowiada do terminala - pisząc o PD.2 miałem na myśli port w aruino uno gdzie jest atmega 328p.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=193">Jacek</a> — 21 cze 2015, o 12:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jacek]]></name></author>
<updated>2015-06-21T11:18:57+01:00</updated>
<published>2015-06-21T11:18:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132330#p132330</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132330#p132330"/>
<title type="html"><![CDATA[Re: Atmega2560 komunikacja com2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132330#p132330"><![CDATA[
Witam Bartku - dzięki za odpowiedź - buforowanie dodałem bufor zrobiłem 100, Print1 - nie działa, Print2 również - na płytę arduino mega nam nałożoną taką płytkę I/O do arduino mega <a href="https://www.fasttech.com/product/1274901"  class="postlink">https://www.fasttech.com/product/1274901</a> chyba ona nie ma wpływu na transmisje - co dziwne port PD.1 jest cały czas w stanie niskim ( mam podłączoną diodę Led dla kontroli - taka samą diodę LED mam w płytce uno przy atmedze 328p i tam dioda nie świeci port PD.2 jest w stanie wysokim tak jak jest zadeklarowane w programie &quot;  Config Print0 = Portd.2 , Mode = Set Config Pind.2 = Output) nie wiem co o tym myśleć.<br />pozdrawiam Jacek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=193">Jacek</a> — 21 cze 2015, o 11:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jacek]]></name></author>
<updated>2015-06-21T10:40:25+01:00</updated>
<published>2015-06-21T10:40:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132323#p132323</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132323#p132323"/>
<title type="html"><![CDATA[Atmega2560 komunikacja com2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12076&amp;p=132323#p132323"><![CDATA[
Witam - napisałem programik testowy na A2560 do komunikacji po RS485 program wygląda tak:<br /><br />[syntax=basic4gl]$regfile = &quot;m2560def.dat&quot;<br />$crystal = 1600000<br />$hwstack = 40<br />$swstack = 40<br />$framesize = 40<br />$lib &quot;glcd.lib&quot;<br /><br />Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 5 , Cd = 6 , Wr = 3 , Rd = 4 , Reset = 7 , Fs = 2 , Mode = 6<br /><br />Config Com2 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0<br /><br />Config Print0 = Portd.1 , Mode = Set<br />Config Pind.1 = Output<br /><br />Open &quot;com2:&quot; For Binary As #1<br /><br />Dim Nm As String * 1 , Id As Word<br /><br /><br />Enable Interrupts<br /><br />Cursor Off<br />Cls<br />Print #1 , &quot;Start Slave 2&quot;<br />Locate 1 , 1 : Lcd &quot;Start Slave 2&quot;<br /><br /><br />    Do<br /><br /><br />       If Ischarwaiting() = 1 Then<br />          Nm = Waitkey()<br />          Locate 2 , 1 : Lcd &quot;KEY &quot; ; Nm<br />          Id = Val(nm)<br />          If Id = 2 Then<br />          Print #1 , &quot;To ja Slave 2&quot;<br />          Locate 1 , 1 : Lcd &quot;TO JA    &quot;<br />          Else<br />          Locate 1 , 1 : Lcd &quot;TO NIE JA&quot;<br />          End If<br />       End If<br /><br /><br />       Waitms 100<br />    Loop<br /><br /><br />   Close #1<br /><br /> End[/syntax]<br /><br />niestety atmega nie odpowiada na wysyłanie &quot;2&quot; z terminala.<br /><br />natomiast program na atmegę 328p który wygląda tak:<br /><br />[syntax=basic4gl]$regfile = &quot;m328pdef.dat&quot;                               ' specify the used micro<br />    $crystal = 16000000                                     ' used crystal frequency<br />    $baud = 19200                                           ' use baud rate<br />    $hwstack = 32                                           ' default use 32 for the hardware stack<br />    $swstack = 10                                           ' default use 10 for the SW stack<br />    $framesize = 40                                         ' default use 40 for the frame space<br /><br /><br />    Config Serialin0 = Buffered , Size = 20<br />    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portc.3 , Rs = Portc.2<br />    Config Lcd = 16 * 2<br /><br /><br /><br />    Config Print0 = Portd.2 , Mode = Set<br />    Config Pind.2 = Output<br /><br />    Dim Nm As String * 1 , Id As Word<br /><br />Enable Interrupts<br /><br />Cursor Off<br />Cls<br />Print &quot;Start Slave 1&quot;<br />Locate 1 , 1 : Lcd &quot;Start Slave 1&quot;<br /><br />    Do<br /><br /><br />       If Ischarwaiting() = 1 Then<br />          Nm = Waitkey()<br />          Locate 2 , 1 : Lcd &quot;KEY &quot; ; Nm<br />          Id = Val(nm)<br />          If Id = 1 Then<br />          Print &quot;To ja Slave 1&quot;<br />          Locate 1 , 1 : Lcd &quot;TO JA         &quot;<br />          Else<br />          Locate 1 , 1 : Lcd &quot;TO NIE JA     &quot;<br />          End If<br />       End If<br /><br />       Waitms 100<br />    Loop<br /><br />    End[/syntax]<br /><br />ten działa bez problemu jak podaje z terminala &quot;1&quot; to się odzywa jeżeli jest inny znak to milczy.<br /><br />Co mam źle w programiku na A2560?<br /><br />pozdrawiam Jacek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=193">Jacek</a> — 21 cze 2015, o 10:40</p><hr />
]]></content>
</entry>
</feed>