Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    Duet 6XD RRF3 Create a Input and Check its Status

    Scheduled Pinned Locked Moved
    General Discussion
    5
    11
    168
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • machinemarkundefined
      machinemark
      last edited by

      I have been trying to create an input on io6 using

      M950 J1 C"io6 . in" in the config.g file

      Then tried to check the status from the console with;

      M950 J1

      But always get - Pin io6 . in, active, true

      I tried changing the state of the input by tying the pin to GND and 3.3V but the message never changes. Also tried to check the status of the input using
      M409 K"inputs" but the output is not clear which input I should be looking at on the list.

      I also tried writing a simple macro

      if sensors.gpIn[6].value != 0
      M117 "Output should be on"
      else
      M117 "Output should be off"

      Not sure is the pin naming in the macro is correct so cannot trust the output of this macro.
      In any case there is no change in message from the macro even though there was a change of input.

      Any help would be appreciated,

      Thanks Mark

      T3P3Tonyundefined droftartsundefined 2 Replies Last reply Reply Quote 1
      • T3P3Tonyundefined
        T3P3Tony administrators @machinemark
        last edited by

        @machinemark you can use the object model browser plugin in DuetWebControl to observe the status of IO pins while you toggle them.

        How do you have io6.in wired?

        As a test you can connect it to ground with a simple switch.

        www.duet3d.com

        1 Reply Last reply Reply Quote 0
        • machinemarkundefined
          machinemark
          last edited by

          I have tried switching the input to GND, then checking for a change of input from the duet side, then tried switching the input to 3.3 volt looking for a change of state and then out desperation tried switching the input to 5 volt still with no changes. Perhaps my naming or syntax in the macro is incorrect. ie the hardware side is no issue but not sure about the naming. When running M950 in config we declare the pin as J1 ie
          M950 J1 C"io6 . in" in the config.g file (The spaces between io6 and the . and in are intentional cause I cannot send this message for the system sees it as a link and blocks it)
          But then when we try to check the inputs status in the macro we cannot use J1 - it gives an error.
          So tried

          if sensors.gpIn[6].value != 0
          I have looked at the documentation and examples in the forums. I have tried variations but never see any sign of change on the software side. Also tried one of the opto isolated inputs;
          M950 J1 C"!io5 . in . iso" -in config.g
          But the same problems.
          M950 J1 Gives the same message if the opto coupler is powered or not (24 volts at the input. The documentation states 10-50 volt so 24 volt should be safe and sufficient)
          Also tried to see a change of state with the above lines in a macro adjusting the input number (or I think cause the naming is different)
          Any help in using ie naming etc from a macro would be awesome because the frustration might cause me to see this control board as Frisbee that needs throwing!
          Thanks Mark

          T3P3Tonyundefined 1 Reply Last reply Reply Quote 0
          • T3P3Tonyundefined
            T3P3Tony administrators @machinemark
            last edited by

            @machinemark

            I have given you some upvotes so you can post links. That said if you post the code snippets as code then its easier to read and they wont be links.

            e.g:

            M950 J1 C"io6.in"
            

            92b0b8a5-2442-4c8f-8b73-789dc191a4cf-image.png

            Using config command you used:

            M950 J1 C"io6.in
            

            you are creating IO input number 1 (J1)

            So the object model entry is:

            sensors.gpIn[1]
            

            So a command like:

            echo sensors.gpIn[1].value
            

            will work, note the array index of 1

            The object model explorer will help a lot here:

            d3767a04-db92-4445-b6f0-b526237b2397-image.png

            www.duet3d.com

            1 Reply Last reply Reply Quote 0
            • droftartsundefined
              droftarts administrators @machinemark
              last edited by droftarts

              @machinemark note that M950 configures an input/output. Querying with M950 shows the configuration, not the state of that input/output. That’s why it doesn’t change.

              EDIT: apparently the above isn’t the case, and M950 does show the state of the pin. Make sure you’re grounding/applying 3.3V to the correct pin.

              If you need the input to make something happen, eg run a macro, set up triggers on the input. See M581 and M582, and https://docs.duet3d.com/en/User_manual/Tuning/Triggers for examples.
              EDIT: ignore this too, checking the OM is probably more straightforward.

              Ian

              Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

              machinemarkundefined 1 Reply Last reply Reply Quote 0
              • machinemarkundefined
                machinemark @droftarts
                last edited by

                @droftarts Thank you for the replies, I now have my head around the object model's Arrays, Objects and Value. I installed the plug in, studied it and was able to 'pluck' values using the echo command for eg;

                echo boards[0].mcuTemp.current

                boards is an array, element 0 holds mcuTemp with the value current

                I seem to have run into another problem on using the 6XD I/Os. There are opto isolated inputs and outputs as well as the GPIO inputs and outputs.

                Maybe I am not understanding but if I try to configure number 8 opto as well as number 8 GPIO out like the following in config ;

                M950 S9 C"io8.out" 			; GPIO 8 
                M950 S8 C"!io8.out.iso"		; Isolated out 8
                

                Then save, reset, and run

                M98 P"config.g"
                

                Returns

                Error: Pin 'io8.out.iso' is not free

                Another bruise on my head, This the only use of io8.out.iso
                Not sure how io8.out.iso is the same as io8.out ???

                The same happens with io8.in.iso and io8.in .

                Is it a case of only being able to use one or the other??

                On the positive,
                I linked io8.out to io8.in with a jumper wire.
                The following worked to setup a digital output and input.

                M950 P9 C"io8.out" 		
                M950 J2 C"io8.in"
                

                In config.g, save and reset

                M42 P9 S0  ;Turn off the output
                echo sensors.gpIn[2].value  ;Check the input
                
                M42 P9 S1  ;Turn on the output
                echo sensors.gpIn[2].value  ;Check the input
                

                Not sure where to check the output status in the object model ??

                Hope this helps someone who comes across this who is trying to turn on off an output / check an input etc before they plant their fist into the screen.

                Thanks Mark

                dc42undefined 1 Reply Last reply Reply Quote 0
                • dc42undefined
                  dc42 administrators @machinemark
                  last edited by dc42

                  @machinemark said in Duet 6XD RRF3 Create a Input and Check its Status:

                  s it a case of only being able to use one or the other??

                  Yes. They are the same input, which is why they are both called io8. You have set up GpIn port 2 to use io8.in in your M950- command, so the status can be read from sensors.gpIn[2].value in the object model. The state of the output can be read from state.gpOut.

                  Duet WiFi hardware designer and firmware engineer
                  Please do not ask me for Duet support via PM or email, use the forum
                  http://www.escher3d.com, https://miscsolutions.wordpress.com

                  1 Reply Last reply Reply Quote 0
                  • machinemarkundefined
                    machinemark
                    last edited by

                    Sorry, I am not following, 'have set up GpIn port 2' ?

                    I kind of get the object model and have had success 'plucking' / reading / echoing elements / values from the arrays.

                    Are the physical/hardware tied together internally so you can only use one in software - Surely not.

                    And this is what adds to the confusion.

                    I am looking at the documentation that shows the pin naming and it seems logical (at least to me) that io8.in is an input and io8.in.iso is another input.

                    So

                    M950 J2 C"io8.in"
                    

                    Maps io8.in to pin number J2

                    and

                    M950 J3 C"io8.in.iso"
                    

                    would map the isolated input to J3

                    But obviously not??

                    How, if possible do we make use of both the GPIO input and the ISOLATED input as independent entities ????

                    Thanks Mark

                    jay_s_ukundefined droftartsundefined 2 Replies Last reply Reply Quote 0
                    • jay_s_ukundefined
                      jay_s_uk @machinemark
                      last edited by

                      @machinemark you can see on the schematic that IO8,in and IO8.in.iso share the same MCU pin so can't be used at the same time
                      07de5462-6ab2-4f9d-b754-1b9bf8f3844a-image.png

                      Owns various duet boards and is the main wiki maintainer for the Teamgloomy LPC/STM32 port of RRF. Assume I'm running whatever the latest beta/stable build is

                      1 Reply Last reply Reply Quote 0
                      • droftartsundefined
                        droftarts administrators @machinemark
                        last edited by droftarts

                        @machinemark said in Duet 6XD RRF3 Create a Input and Check its Status:

                        How, if possible do we make use of both the GPIO input and the ISOLATED input as independent entities ????

                        You can't. Yes, they are tied internally. It gives you the option of having an opto-isolated input, rather than a direct input. There are not enough spare pins on the MCU to have 4 extra pairs of I/O pins, so they are shared. As it says here https://docs.duet3d.com/Duet3D_hardware/Duet_3_family/Duet_3_Mainboard_6XD_Hardware_Overview#hardware-specification

                        Inputs/Outputs: 9 x on-board I/O connectors for endstop, filament monitor, Z probe, hobby servo, or PanelDue connection. Inputs are 30V-tolerant. 4 of the 9 pairs of IO also have alternative opto-isolated connectors.

                        Sorry, I am not following, 'have set up GpIn port 2' ?

                        You have set up 'GpIn port 2' with M950 J2 (J for 'general purpose Input', 2 for the port number that you can use to reference it) on pin C"io8.in".

                        Ian

                        Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                        1 Reply Last reply Reply Quote 0
                        • machinemarkundefined
                          machinemark
                          last edited by

                          Thanks for clarifying and providing the schematic showing the two inputs tied internally.

                          Thanks Mark

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post
                          Unless otherwise noted, all forum content is licensed under CC-BY-SA