Forum - MCS Electronics

 

FAQFAQ SearchSearch RegisterRegister Log inLog in

Recept nul char / Bascom
Goto page Previous  1, 2, 3
 
Post new topic   Reply to topic    www.mcselec.com Forum Index -> BASCOM-AVR
View previous topic :: View next topic  
Author Message
bellon

Bascom Member



Joined: 01 Mar 2019
Posts: 24

switzerland.gif
PostPosted: Mon Mar 18, 2019 9:45 pm    Post subject: Recept nul char / Bascom Reply with quote

Hello pikczu
I noticed that the use of the lcd4d switch in "report event message" mode has a big problem in the rs232 reception loop. indeed, the message of the switch arrives in a totally assyinchronous manner compared to the other spots of the cpu (2560) which is normal, but this message can be lost! (easily)
So I configured the LCD4 switch in "Read Object Status" mode and in this case everything works fine since the switch4d read and totally synchronous with the program run, but there is a speed limit not to exceed (50msec between each script or read in the lcd4d.
Too bad, the "event repport" is interesting.
In attachment the source.bas
cordially Bernard
Back to top
View user's profile
bellon

Bascom Member



Joined: 01 Mar 2019
Posts: 24

switzerland.gif
PostPosted: Mon Mar 18, 2019 9:46 pm    Post subject: Recept nul char / Bascom Reply with quote

Hello pikczu
I noticed that the use of the lcd4d switch in "report event message" mode has a big problem in the rs232 reception loop. indeed, the message of the switch arrives in a totally assyinchronous manner compared to the other spots of the cpu (2560) which is normal, but this message can be lost! (easily)
So I configured the LCD4 switch in "Read Object Status" mode and in this case everything works fine since the switch4d read and totally synchronous with the program run, but there is a speed limit not to exceed (50msec between each script or read in the lcd4d.
Too bad, the "event repport" is interesting.
In attachment the source.bas
cordially Bernard
Back to top
View user's profile
Pikczu

Bascom Member



Joined: 22 Jan 2006
Posts: 57
Location: Dublin, Ireland

ireland.gif
PostPosted: Tue Mar 19, 2019 8:04 am    Post subject: Reply with quote

Hi Bernard,
Event reporting should work without the problem.
None of the transmission should be lost as we have used buffered serial and Ischarwaithg is in the do loop.
I have tested that on Xmega 128A3u and all transmissions were received correctly.
If you are using first uart on arduino, this uart is shared with the USB try second Uart instead.
Also can you show schematic diagram of your connection?
Back to top
View user's profile
bellon

Bascom Member



Joined: 01 Mar 2019
Posts: 24

switzerland.gif
PostPosted: Wed Mar 20, 2019 9:48 pm    Post subject: Recept nul char / Bascom Reply with quote

Hello Pikczu
I am, how to say ..... désesepere
I have 2 switch in 4dlcd which are parameter in "4d_read_obj": Ultrasound that sends the data in the angularmeter if it is ON, or nothing if it is OFF. ALARM sends a counter in the 4 digits LCD.
only the first function called returns the state of the switch. if i start with: 4d_read_obj (4dbutton, & H01) ON_OFF works but 4d_read_obj (4dbutton, & H00) does not work, and vice versa!
an idea ?

The board (2560) is powered by the USB port of the PC, the LCD by another port of the PC, UART1 (9600) of the board communicates with the LCD.

Good night !
Back to top
View user's profile
bellon

Bascom Member



Joined: 01 Mar 2019
Posts: 24

switzerland.gif
PostPosted: Sun Mar 24, 2019 11:19 pm    Post subject: Recept nul char / Bascom Reply with quote

Hello Pikczu
everything works almost normally except for some ACK / NAK management details.
The main problems were:
-Allimentation of the LCD
-Share of COM1 with USB arduino card
- In the Do / Ischarwaiting / Loop function, do not put any other functions.
I thank you very much for your help!
Bernard Rolling Eyes Rolling Eyes
Back to top
View user's profile
Pikczu

Bascom Member



Joined: 22 Jan 2006
Posts: 57
Location: Dublin, Ireland

ireland.gif
PostPosted: Mon Mar 25, 2019 3:34 pm    Post subject: Reply with quote

Hi Bernard,
That is great news.
I'm on my way home I will try to tweak the code little bit, when I get time.
I'm open for suggestions.
Back to top
View user's profile
Pikczu

Bascom Member



Joined: 22 Jan 2006
Posts: 57
Location: Dublin, Ireland

ireland.gif
PostPosted: Sun Apr 14, 2019 7:59 pm    Post subject: Reply with quote

Bernard,
I had bit of time to look in to the code, also I have look little bit on the 4D systems forum.
I have better understanding of the communication between the host and the lcd.
When you sent command to the LCD you have to wait for ACK message before you send next one.
I will add this in to the code.

Also I know why your code was so slow.
The issue was with the ischarwaitng part, in my original test i was using while -wend.
then some how I have changed to if ischarwaiting and that was the mistake.

Please change the If Ischarwaiting....then to While Ischarwaiting .... wend

Code:
While Ischarwaiting(#4) <> 0
      Inputbin #lcd_4d , 4d_arr_rx(1) , 1
      'Print #1 , "received= " ; 4d_arr_rx(1)
      Select Case 4d_arr_rx(1)                              'command

         Case Report_obj:                                   '&H05

            Inputbin #lcd_4d , 4d_arr_rx(2) , 5             'get next 5
            Xor_crc = Xor_this(4d_arr_rx(1))                ' check the crc
            If 4d_arr_rx(6) = Xor_crc Then                  'if crc ok then check what came

               Select Case 4d_arr_rx(2)                     'object ID
                  Case Dipswitch:                           '0
                     Dipswitch_idx = 4d_arr_rx(3)
                     Dipswitch_val(1) = 4d_arr_rx(4)
                     Dipswitch_val(2) = 4d_arr_rx(5)
                     Print #1 , "Dipswitch "
                  Case Knob:                                '1
                     Knob_idx = 4d_arr_rx(3)
                     Knob_val(1) = 4d_arr_rx(4)
                     Knob_val(2) = 4d_arr_rx(5)
                     Print #1 , "Knob "
                  Case Rockerswitch:                        '2
                     Rockerswitch_idx = 4d_arr_rx(3)
                     Rockerswitch_val(1) = 4d_arr_rx(4)
                     Rockerswitch_val(2) = 4d_arr_rx(5)
                     Print #1 , "Rockerswitch "
                  Case Rotaryswitch:                        '3
                     Rotaryswitch_idx = 4d_arr_rx(3)
                     Rotaryswitch_val(1) = 4d_arr_rx(4)
                     Rotaryswitch_val(2) = 4d_arr_rx(5)
                     Print #1 , "Rotaryswitch "
                  Case Slider:                              '4
                     Slider_idx = 4d_arr_rx(3)
                     Slider_val(1) = 4d_arr_rx(4)
                     Slider_val(2) = 4d_arr_rx(5)
                     Print #1 , "Slider "
                  Case Trackbar:                            '5
                     Trackbar_idx = 4d_arr_rx(3)
                     Trackbar_val(1) = 4d_arr_rx(4)
                     Trackbar_val(2) = 4d_arr_rx(5)
                     Print #1 , "Trackbar "
                  Case Winbutton:                           '6
                     Winbutton_idx = 4d_arr_rx(3)
                     Winbutton_val(1) = 4d_arr_rx(4)
                     Winbutton_val(2) = 4d_arr_rx(5)
                     Print #1 , "Winbutton "
                  Case Angularmeter:                        '7
                     Angularmeter_idx = 4d_arr_rx(3)
                     Angularmeter_val(1) = 4d_arr_rx(4)
                     Angularmeter_val(2) = 4d_arr_rx(5)
                     Print #1 , "Angularmeter "
                  Case Coolgauge:                           '8
                     Coolgauge_idx = 4d_arr_rx(3)
                     Coolgauge_val(1) = 4d_arr_rx(4)
                     Coolgauge_val(2) = 4d_arr_rx(5)
                     Print #1 , "Coolgauge "
                  Case Customdigits:                        '9
                     Customdigits_idx = 4d_arr_rx(3)
                     Customdigits_val(1) = 4d_arr_rx(4)
                     Customdigits_val(2) = 4d_arr_rx(5)
                     Print #1 , "Customdigits "
                  Case Form:                                '10
                     Form_idx = 4d_arr_rx(3)
                     Form_val(1) = 4d_arr_rx(4)
                     Form_val(2) = 4d_arr_rx(5)
                     Print #1 , "Form "
                  Case Gauge:                               '11
                     Gauge_idx = 4d_arr_rx(3)
                     Gauge_val(1) = 4d_arr_rx(4)
                     Gauge_val(2) = 4d_arr_rx(5)
                     Print #1 , "Gauge "
                  Case Image:                               '12
                  'Image_idx = 4d_arr_rx(3)
                  'Image_val(1) = 4d_arr_rx(4)
                  'Image_val(2) = 4d_arr_rx(5)
                     Print #1 , "Image "
                  Case Keyboard:                            '13
                     Keyboard_idx = 4d_arr_rx(3)
                     Keyboard_val(1) = 4d_arr_rx(4)
                     Keyboard_val(2) = 4d_arr_rx(5)
                     Print #1 , "Keyboard "
                  Case Led:                                 '14
                     Led_idx = 4d_arr_rx(3)
                     Led_val(1) = 4d_arr_rx(4)
                     Led_val(2) = 4d_arr_rx(5)
                     Print #1 , "Led "
                  Case Leddigits:                           '15
                     Leddigits_idx = 4d_arr_rx(3)
                     Leddigits_val(1) = 4d_arr_rx(4)
                     Leddigits_val(2) = 4d_arr_rx(5)
                     Print #1 , "Leddigits "
                  Case Meter:                               '16
                     Meter_idx = 4d_arr_rx(3)
                     Meter_val(1) = 4d_arr_rx(4)
                     Meter_val(2) = 4d_arr_rx(5)
                     Print #1 , "Meter "
                  Case Strings:                             '17
                     Strings_idx = 4d_arr_rx(3)
                     Strings_val(1) = 4d_arr_rx(4)
                     Strings_val(2) = 4d_arr_rx(5)
                     Print #1 , "Strings "
                  Case Thermometer:                         '18
                     Thermometer_idx = 4d_arr_rx(3)
                     Thermometer_val(1) = 4d_arr_rx(4)
                     Thermometer_val(2) = 4d_arr_rx(5)
                     Print #1 , "Thermometer "
                  Case Userled:                             '19
                     Userled_idx = 4d_arr_rx(3)
                     Userled_val(1) = 4d_arr_rx(4)
                     Userled_val(2) = 4d_arr_rx(5)
                     Print #1 , "Userled "
                  Case Video:                               '20
                     Video_idx = 4d_arr_rx(3)
                     Video_val(1) = 4d_arr_rx(4)
                     Video_val(2) = 4d_arr_rx(5)
                     Debug "Video "
                  Case Statictext:                          '21
                  'Statictext_idx = 4d_arr_rx(3)
                  'Statictext_val(1) = 4d_arr_rx(4)
                  'Statictext_val(2) = 4d_arr_rx(5)
                     Print #1 , "Statictext "
                  Case S_ound:                              '22
                     S_ound_idx = 4d_arr_rx(3)
                     S_ound_val(1) = 4d_arr_rx(4)
                     S_ound_val(2) = 4d_arr_rx(5)
                     Print #1 , "S_ound "
                  Case T_imer:                              '23
                     T_imer_idx = 4d_arr_rx(3)
                     T_imer_val(1) = 4d_arr_rx(4)
                     T_imer_val(2) = 4d_arr_rx(5)
                     Print #1 , "T_imer "
                  Case Spectrum:                            '24
                     Spectrum_idx = 4d_arr_rx(3)
                     Spectrum_val(1) = 4d_arr_rx(4)
                     Spectrum_val(2) = 4d_arr_rx(5)
                     Print #1 , "Spectrum "
                  Case Scope:                               '25
                     Scope_idx = 4d_arr_rx(3)
                     Scope_val(1) = 4d_arr_rx(4)
                     Scope_val(2) = 4d_arr_rx(5)
                     Print #1 , "Scope "
                  Case Tank:                                '26
                     Tank_idx = 4d_arr_rx(3)
                     Tank_val(1) = 4d_arr_rx(4)
                     Tank_val(2) = 4d_arr_rx(5)
                     Print #1 , "Tank "
                  Case Userimages:                          '27
                     Userimages_idx = 4d_arr_rx(3)
                     Userimages_val(1) = 4d_arr_rx(4)
                     Userimages_val(2) = 4d_arr_rx(5)
                     Print #1 , "Userimages "
                  Case Pinoutput:                           '28
                     Pinoutput_idx = 4d_arr_rx(3)
                  'Pinoutput_val(1) = 4d_arr_rx(4)
                     Pinoutput_val = 4d_arr_rx(5)
                     Print #1 , "Pinoutput "
                  Case Pininput:                            '29
                     Pininput_idx = 4d_arr_rx(3)
                  'Pininput_val(1) = 4d_arr_rx(4)
                     Pininput_val = 4d_arr_rx(5)
                     Print #1 , "Pininput "
                  Case 4dbutton:                            '30
                     4dbutton_idx = 4d_arr_rx(3)
                     4dbutton_val(1) = 4d_arr_rx(4)
                     4dbutton_val(2) = 4d_arr_rx(5)
                     Print #1 , "4dbutton "
                  Case Anibutton:                           '31
                     Anibutton_idx = 4d_arr_rx(3)
                     Anibutton_val(1) = 4d_arr_rx(4)
                     Anibutton_val(2) = 4d_arr_rx(5)
                     Print #1 , "Anibutton "
                  Case Colorpicker:                         '32
                     Colorpicker_idx = 4d_arr_rx(3)
                     Colorpicker_val(1) = 4d_arr_rx(4)
                     Colorpicker_val(2) = 4d_arr_rx(5)
                     Print #1 , "Colorpicker "
                  Case Userbutton:                          '33
                     Userbutton_idx = 4d_arr_rx(3)
                     Userbutton_val(1) = 4d_arr_rx(4)
                     Userbutton_val(2) = 4d_arr_rx(5)
                     Print #1 , "Userbutton "
                  Case Magicobject:                         '34
                     Magicobject_idx = 4d_arr_rx(3)
                     Magicobject_val(1) = 4d_arr_rx(4)
                     Magicobject_val(2) = 4d_arr_rx(5)
                     Print #1 , "Magicobject "
                  Case Smartgauge:                          '35
                     Smartgauge_idx = 4d_arr_rx(3)
                     Smartgauge_val(1) = 4d_arr_rx(4)
                     Smartgauge_val(2) = 4d_arr_rx(5)
                     Print #1 , "Smartgauge "
                  Case Smartslider:                         '36
                     Smartslider_idx = 4d_arr_rx(3)
                     Smartslider_val(1) = 4d_arr_rx(4)
                     Smartslider_val(2) = 4d_arr_rx(5)
                     Print #1 , "Smartslider "
                  Case Smartknob:                           '37
                     Smartknob_idx = 4d_arr_rx(3)
                     Smartknob_val(1) = 4d_arr_rx(4)
                     Smartknob_val(2) = 4d_arr_rx(5)
                     Print #1 , "Smartknob "
                  Case Else:
                     Print #1 , "Event report wrong ID: " ; 4d_arr_rx(3)
                     'Clear Serialin4
                     'Print #1 , "S_pace: " ; S_pace
                     'Print #1 , "frame error"
               End Select
            Else
               Printbin #lcd_4d , &H15                      'send NACK message to the display
               Print #1 , "Read oject CRC error !"
            End If
         Case A_ck:                                         '&H06    ACK
            Print #1 , "ACK"                                'print ACK message to debug port
            Ack_flag.0 = 0                                  'reset ack flag not really in use yet

         Case Report_event:                                 '&H07

            Inputbin #4 , 4d_arr_rx(2) , 5                  'get next 5
            Xor_crc = Xor_this(4d_arr_rx(1))                ' check the crc
            If 4d_arr_rx(6) = Xor_crc Then                  'if crc ok then check what came

               Select Case 4d_arr_rx(2)                     'object ID
                  Case Dipswitch:                           '0
                     Dipswitch_idx = 4d_arr_rx(3)
                     Dipswitch_val(1) = 4d_arr_rx(4)
                     Dipswitch_val(2) = 4d_arr_rx(5)
                     Print #1 , "Dipswitch "
                  Case Knob:                                '1
                     Knob_idx = 4d_arr_rx(3)
                     Knob_val(1) = 4d_arr_rx(4)
                     Knob_val(2) = 4d_arr_rx(5)
                     Print #1 , "Knob "
                  Case Rockerswitch:                        '2
                     Rockerswitch_idx = 4d_arr_rx(3)
                     Rockerswitch_val(1) = 4d_arr_rx(4)
                     Rockerswitch_val(2) = 4d_arr_rx(5)
                     Print #1 , "Rockerswitch "
                  Case Rotaryswitch:                        '3
                     Rotaryswitch_idx = 4d_arr_rx(3)
                     Rotaryswitch_val(1) = 4d_arr_rx(4)
                     Rotaryswitch_val(2) = 4d_arr_rx(5)
                     Print #1 , "Rotaryswitch "
                  Case Slider:                              '4
                     Slider_idx = 4d_arr_rx(3)
                     Slider_val(1) = 4d_arr_rx(4)
                     Slider_val(2) = 4d_arr_rx(5)
                     Print #1 , "Slider "
                  Case Trackbar:                            '5
                     Trackbar_idx = 4d_arr_rx(3)
                     Trackbar_val(1) = 4d_arr_rx(4)
                     Trackbar_val(2) = 4d_arr_rx(5)
                     Print #1 , "Trackbar "
                  Case Winbutton:                           '6
                     Winbutton_idx = 4d_arr_rx(3)
                     Winbutton_val(1) = 4d_arr_rx(4)
                     Winbutton_val(2) = 4d_arr_rx(5)
                     Print #1 , "Winbutton "
                  Case Angularmeter:                        '7
                     Angularmeter_idx = 4d_arr_rx(3)
                     Angularmeter_val(1) = 4d_arr_rx(4)
                     Angularmeter_val(2) = 4d_arr_rx(5)
                     Print #1 , "Angularmeter "
                  Case Coolgauge:                           '8
                     Coolgauge_idx = 4d_arr_rx(3)
                     Coolgauge_val(1) = 4d_arr_rx(4)
                     Coolgauge_val(2) = 4d_arr_rx(5)
                     Print #1 , "Coolgauge "
                  Case Customdigits:                        '9
                     Customdigits_idx = 4d_arr_rx(3)
                     Customdigits_val(1) = 4d_arr_rx(4)
                     Customdigits_val(2) = 4d_arr_rx(5)
                     Print #1 , "Customdigits "
                  Case Form:                                '10
                     Form_idx = 4d_arr_rx(3)
                     Form_val(1) = 4d_arr_rx(4)
                     Form_val(2) = 4d_arr_rx(5)
                     Print #1 , "Form "
                  Case Gauge:                               '11
                     Gauge_idx = 4d_arr_rx(3)
                     Gauge_val(1) = 4d_arr_rx(4)
                     Gauge_val(2) = 4d_arr_rx(5)
                     Print #1 , "Gauge "
                  Case Image:                               '12
                  'Image_idx = 4d_arr_rx(3)
                  'Image_val(1) = 4d_arr_rx(4)
                  'Image_val(2) = 4d_arr_rx(5)
                     Print #1 , "Image "
                  Case Keyboard:                            '13
                     Keyboard_idx = 4d_arr_rx(3)
                     Keyboard_val(1) = 4d_arr_rx(4)
                     Keyboard_val(2) = 4d_arr_rx(5)
                     Print #1 , "Keyboard "
                  Case Led:                                 '14
                     Led_idx = 4d_arr_rx(3)
                     Led_val(1) = 4d_arr_rx(4)
                     Led_val(2) = 4d_arr_rx(5)
                     Print #1 , "Led "
                  Case Leddigits:                           '15
                     Leddigits_idx = 4d_arr_rx(3)
                     Leddigits_val(1) = 4d_arr_rx(4)
                     Leddigits_val(2) = 4d_arr_rx(5)
                     Print #1 , "Leddigits "
                  Case Meter:                               '16
                     Meter_idx = 4d_arr_rx(3)
                     Meter_val(1) = 4d_arr_rx(4)
                     Meter_val(2) = 4d_arr_rx(5)
                     Print #1 , "Meter "
                  Case Strings:                             '17
                     Strings_idx = 4d_arr_rx(3)
                     Strings_val(1) = 4d_arr_rx(4)
                     Strings_val(2) = 4d_arr_rx(5)
                     Print #1 , "Strings "
                  Case Thermometer:                         '18
                     Thermometer_idx = 4d_arr_rx(3)
                     Thermometer_val(1) = 4d_arr_rx(4)
                     Thermometer_val(2) = 4d_arr_rx(5)
                     Print #1 , "Thermometer "
                  Case Userled:                             '19
                     Userled_idx = 4d_arr_rx(3)
                     Userled_val(1) = 4d_arr_rx(4)
                     Userled_val(2) = 4d_arr_rx(5)
                     Print #1 , "Userled "
                  Case Video:                               '20
                     Video_idx = 4d_arr_rx(3)
                     Video_val(1) = 4d_arr_rx(4)
                     Video_val(2) = 4d_arr_rx(5)
                     Debug "Video "
                  Case Statictext:                          '21
                  'Statictext_idx = 4d_arr_rx(3)
                  'Statictext_val(1) = 4d_arr_rx(4)
                  'Statictext_val(2) = 4d_arr_rx(5)
                     Print #1 , "Statictext "
                  Case S_ound:                              '22
                     S_ound_idx = 4d_arr_rx(3)
                     S_ound_val(1) = 4d_arr_rx(4)
                     S_ound_val(2) = 4d_arr_rx(5)
                     Print #1 , "S_ound "
                  Case T_imer:                              '23
                     T_imer_idx = 4d_arr_rx(3)
                     T_imer_val(1) = 4d_arr_rx(4)
                     T_imer_val(2) = 4d_arr_rx(5)
                     Print #1 , "T_imer "
                  Case Spectrum:                            '24
                     Spectrum_idx = 4d_arr_rx(3)
                     Spectrum_val(1) = 4d_arr_rx(4)
                     Spectrum_val(2) = 4d_arr_rx(5)
                     Print #1 , "Spectrum "
                  Case Scope:                               '25
                     Scope_idx = 4d_arr_rx(3)
                     Scope_val(1) = 4d_arr_rx(4)
                     Scope_val(2) = 4d_arr_rx(5)
                     Print #1 , "Scope "
                  Case Tank:                                '26
                     Tank_idx = 4d_arr_rx(3)
                     Tank_val(1) = 4d_arr_rx(4)
                     Tank_val(2) = 4d_arr_rx(5)
                     Print #1 , "Tank "
                  Case Userimages:                          '27
                     Userimages_idx = 4d_arr_rx(3)
                     Userimages_val(1) = 4d_arr_rx(4)
                     Userimages_val(2) = 4d_arr_rx(5)
                     Print #1 , "Userimages "
                  Case Pinoutput:                           '28
                     Pinoutput_idx = 4d_arr_rx(3)
                  'Pinoutput_val(1) = 4d_arr_rx(4)
                     Pinoutput_val = 4d_arr_rx(5)
                     Print #1 , "Pinoutput "
                  Case Pininput:                            '29
                     Pininput_idx = 4d_arr_rx(3)
                  'Pininput_val(1) = 4d_arr_rx(4)
                     Pininput_val = 4d_arr_rx(5)
                     Print #1 , "Pininput "
                  Case 4dbutton:                            '30
                     4dbutton_idx = 4d_arr_rx(3)
                     4dbutton_val(1) = 4d_arr_rx(4)
                     4dbutton_val(2) = 4d_arr_rx(5)
                     Print #1 , "4dbutton "
                  Case Anibutton:                           '31
                     Anibutton_idx = 4d_arr_rx(3)
                     Anibutton_val(1) = 4d_arr_rx(4)
                     Anibutton_val(2) = 4d_arr_rx(5)
                     Print #1 , "Anibutton "
                  Case Colorpicker:                         '32
                     Colorpicker_idx = 4d_arr_rx(3)
                     Colorpicker_val(1) = 4d_arr_rx(4)
                     Colorpicker_val(2) = 4d_arr_rx(5)
                     Print #1 , "Colorpicker "
                  Case Userbutton:                          '33
                     Userbutton_idx = 4d_arr_rx(3)
                     Userbutton_val(1) = 4d_arr_rx(4)
                     Userbutton_val(2) = 4d_arr_rx(5)
                     Print #1 , "Userbutton "
                  Case Magicobject:                         '34
                     Magicobject_idx = 4d_arr_rx(3)
                     Magicobject_val(1) = 4d_arr_rx(4)
                     Magicobject_val(2) = 4d_arr_rx(5)
                     Print #1 , "Magicobject "
                  Case Smartgauge:                          '35
                     Smartgauge_idx = 4d_arr_rx(3)
                     Smartgauge_val(1) = 4d_arr_rx(4)
                     Smartgauge_val(2) = 4d_arr_rx(5)
                     Print #1 , "Smartgauge "
                  Case Smartslider:                         '36
                     Smartslider_idx = 4d_arr_rx(3)
                     Smartslider_val(1) = 4d_arr_rx(4)
                     Smartslider_val(2) = 4d_arr_rx(5)
                     Print #1 , "Smartslider "
                  Case Smartknob:                           '37
                     Smartknob_idx = 4d_arr_rx(3)
                     Smartknob_val(1) = 4d_arr_rx(4)
                     Smartknob_val(2) = 4d_arr_rx(5)
                     Print #1 , "Smartknob "
                  Case Else:
                     Print #1 , "Event report wrong ID: " ; 4d_arr_rx(3)

                     Clear Serialin4

                     Print #1 , "S_pace" ; S_pace
                     Print #1 , "frame error"

               End Select
            Else
               Printbin #lcd_4d , &H15
               Print #1 , "Event CRC error"
            End If

         Case Nak:
            Print #1 , "NACK"                               '&h15  NAK
            Clear Serialin4
         Case Else:
            Print #1 , "Error in Code =: " ; 4d_arr_rx(1)
            Clear Serialin4

            Print #1 , "frame error"


      End Select
   Wend
Back to top
View user's profile
bellon

Bascom Member



Joined: 01 Mar 2019
Posts: 24

switzerland.gif
PostPosted: Mon Apr 15, 2019 3:51 pm    Post subject: Recept nul char / Bascom Reply with quote

Hello Pikczu
My whole application revolves around a one-second tick generated by a Timer1 interrupt. Because of this, the ischawaiting loop is the main loop and does not break a problem. However, it is very rare that the ischarwaiting function remains "hanging" while waiting for one or more characters and in this circumstance everything is blocked. So I activated the watchdog in ischarwaiting to automatically exit this situation. (which comes back to the same thing as pressing reset). At the moment the host sends more than 7 commands per second on the LCD without waiting for ACK-NACK between each command, but efectively it would be more elegant to manage ACK-NAK properly, which I have not yet implemented, this n It's not so easy to do it properly!)
Thanks again for your sharing and Happy Easter!
I'm coming back next Monday Bernard
Back to top
View user's profile
bellon

Bascom Member



Joined: 01 Mar 2019
Posts: 24

switzerland.gif
PostPosted: Thu Apr 25, 2019 12:59 pm    Post subject: Recept nul char / Bascom Reply with quote

Hello Pikczu
Indeed, it is strongly recommended to monitor ACK / NAK before sending a new command. So I implemented a new function "Sub Ack_nak ()" to be closer to the ACK / NAK reading and changed all your functions to send command to the LCD. I still have a problem with the function "Sub 4d_write_str", but it seems that the rest is working properly. I also noticed that the response of the LCD can take between 5 and 40 ms depending on the command sent!
Bernard[/code]
Back to top
View user's profile
Pikczu

Bascom Member



Joined: 22 Jan 2006
Posts: 57
Location: Dublin, Ireland

ireland.gif
PostPosted: Thu Apr 25, 2019 1:13 pm    Post subject: Reply with quote

Hi Bernard,
I had very little time to work with it. I have added some kind of FIFO buffer base on the ollopa example from the forum.
https://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=7941&highlight=fifo
this should help with NAK_ACK message however its not ready yet. I need a couple more evenings.
I will share it for the test.
In the meantime, I will test your option.
Regards
Pikczu
Back to top
View user's profile
Display posts from previous:   
Post new topic   Reply to topic    www.mcselec.com Forum Index -> BASCOM-AVR All times are GMT + 1 Hour
Goto page Previous  1, 2, 3
Page 3 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum