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

    Short to ground on drivers 0123

    Scheduled Pinned Locked Moved Unsolved
    Duet Hardware and wiring
    8
    63
    2.7k
    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.
    • Touchthebitumundefined
      Touchthebitum @droftarts
      last edited by Touchthebitum

      @droftarts
      same results ... error on driver 0 and 1
      It's a nightmare
      I can't post anything since I don't have ethernet connection

      Sparkcube XL V 1.1 300x300x190, Radds, Raspberry, Keenovo silicone bedheat 220v, Big Booster Extruder, DIY building
      BLV Cube 665mm Direct Drive with Duet3/SBC (RPi 4) Mosquito Magnum/Bond Tech Extruder/Vanadium Nozzle, Keenovo silicone bedheat 220v

      A Former User? 1 Reply Last reply Reply Quote 0
      • A Former User?
        A Former User @Touchthebitum
        last edited by

        @Touchthebitum said in Short to ground on drivers 0123:

        I can't post anything since I don't have ethernet connection

        to the board in stand alone mode?

        Touchthebitumundefined 1 Reply Last reply Reply Quote 0
        • Touchthebitumundefined
          Touchthebitum @A Former User
          last edited by

          @bearer
          No, I'm far from a router

          Sparkcube XL V 1.1 300x300x190, Radds, Raspberry, Keenovo silicone bedheat 220v, Big Booster Extruder, DIY building
          BLV Cube 665mm Direct Drive with Duet3/SBC (RPi 4) Mosquito Magnum/Bond Tech Extruder/Vanadium Nozzle, Keenovo silicone bedheat 220v

          A Former User? 1 Reply Last reply Reply Quote 0
          • A Former User?
            A Former User @Touchthebitum
            last edited by

            @Touchthebitum said in Short to ground on drivers 0123:

            @bearer
            No, I'm far from a router

            you can do all the tests over usb serial interface, or a direct (ethernet) connection to your computer with static ip addresses on both duet and computer when duet is in stand alone mode.

            Touchthebitumundefined 1 Reply Last reply Reply Quote 0
            • Touchthebitumundefined
              Touchthebitum @A Former User
              last edited by

              @bearer
              Ok, what do you need as info or tests ?

              Sparkcube XL V 1.1 300x300x190, Radds, Raspberry, Keenovo silicone bedheat 220v, Big Booster Extruder, DIY building
              BLV Cube 665mm Direct Drive with Duet3/SBC (RPi 4) Mosquito Magnum/Bond Tech Extruder/Vanadium Nozzle, Keenovo silicone bedheat 220v

              A Former User? 1 Reply Last reply Reply Quote 0
              • A Former User?
                A Former User @Touchthebitum
                last edited by

                @Touchthebitum said in Short to ground on drivers 0123:

                what do you need as info or tests ?

                i suspect should repeat all the steps you did diagnosing the old board to see if the error persist when using the Duet as a stand alone board.

                you could also configure your raspberry pi to be a wifi to ethernet bridge , but imho its easier to set a static up for a direct ethernet connection but all three options would work.

                Touchthebitumundefined 1 Reply Last reply Reply Quote 0
                • Touchthebitumundefined
                  Touchthebitum @A Former User
                  last edited by

                  @bearer
                  I have a connected laptop to my board but I don't know ho to connect

                  Sparkcube XL V 1.1 300x300x190, Radds, Raspberry, Keenovo silicone bedheat 220v, Big Booster Extruder, DIY building
                  BLV Cube 665mm Direct Drive with Duet3/SBC (RPi 4) Mosquito Magnum/Bond Tech Extruder/Vanadium Nozzle, Keenovo silicone bedheat 220v

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

                    This is perplexing.

                    • Are there any other connectors in the leads that connect the motors to the Duet? If so, please post a photo of them.
                    • Please post a photo of the stepper motor wires where they go into the motor.
                    • Please use your multimeter to check that there is no continuity between any of the motor wires and the body of the motor.
                    • Use your multimeter to check that with the connectors fitted, the resistance across each phase is as expected (a few ohms, not a short circuit) and there is no continuity between the two motor phases. Your multimeter probes should be able to fit in the slots in the connector shells in order to make contact with the crimp pins inside.

                    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

                    Touchthebitumundefined 1 Reply Last reply Reply Quote 0
                    • A Former User?
                      A Former User
                      last edited by

                      to set a static IP address on the Duet, you have two options, config.g or USB. Both cases involves M552 S1 P192.168.1.14 as shown in https://duet3d.dozuki.com/Wiki/Gcode#Section_M552_Set_IP_address_enable_disable_network_interface

                      then you need to configure the correct network interface for the computer to use an address in the same network range. probably best to ask google how to do this for your operating system and version/language.

                      if you use the example above for the duet, set the PC to be IP address 192.168.1.15 with netmask 255.255.255.0 and leave the other settings blank or at their defaults.

                      if you have trouble with the computer let us know what operating system/version/language it is and maybe someone can help

                      Touchthebitumundefined 1 Reply Last reply Reply Quote 0
                      • Touchthebitumundefined
                        Touchthebitum @dc42
                        last edited by Touchthebitum

                        @dc42

                        • No, it is direct wire from motor to the board

                        • motor connector.jpg list item

                        • I checked 10x and there is no continuity, resistance is ok

                        • I tested the motors plugged with the multimeter and it is the same result like unplugged

                        • no short between motor case and plugs

                        Sparkcube XL V 1.1 300x300x190, Radds, Raspberry, Keenovo silicone bedheat 220v, Big Booster Extruder, DIY building
                        BLV Cube 665mm Direct Drive with Duet3/SBC (RPi 4) Mosquito Magnum/Bond Tech Extruder/Vanadium Nozzle, Keenovo silicone bedheat 220v

                        dc42undefined 1 Reply Last reply Reply Quote 0
                        • Touchthebitumundefined
                          Touchthebitum @A Former User
                          last edited by

                          @bearer
                          Thanks, I used usb to make tests.

                          First test : psu on, no connected motors, no movements:

                          m122
                          === Diagnostics ===
                          RepRapFirmware for Duet 3 MB6HC version 3.1.1 running on Duet 3 MB6HC v1.01 or later (standalone mode)
                          Board ID: 08DJM-956L2-G43S8-6JKD6-3SJ6L-KA02G
                          Used output buffers: 1 of 40 (21 max)
                          === RTOS ===
                          Static ram: 154604
                          Dynamic ram: 162384 of which 44 recycled
                          Exception stack ram used: 308
                          Never used ram: 75876
                          Tasks: ETHERNET(blocked,472) NETWORK(ready,244) HEAT(blocked,1200) CanReceiv(suspended,3820) CanSender(suspended,1488) CanClock(blocked,1436) TMC(blocked,204) MAIN(running,4628) IDLE(ready,76)
                          Owned mutexes:
                          === Platform ===
                          Last reset 00:14:54 ago, cause: power up
                          Last software reset at 2020-08-02 08:21, reason: User, spinning module LinuxInterface, available RAM 75776 bytes (slot 1)
                          Software reset code 0x0010 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0443c000 BFAR 0x00000000 SP 0xffffffff Task MAIN
                          Error status: 0
                          MCU temperature: min 30.0, current 30.7, max 30.7
                          Supply voltage: min 0.2, current 24.1, max 24.2, under voltage events: 0, over voltage events: 0, power good: yes
                          12V rail voltage: min 0.1, current 12.1, max 12.4, under voltage events: 0
                          Driver 0: standstill, reads 42573, writes 11 timeouts 0, SG min/max 0/0
                          Driver 1: standstill, reads 42573, writes 11 timeouts 0, SG min/max 0/0
                          Driver 2: standstill, reads 42574, writes 11 timeouts 0, SG min/max 0/0
                          Driver 3: standstill, reads 42574, writes 11 timeouts 0, SG min/max 0/0
                          Driver 4: standstill, reads 42575, writes 11 timeouts 0, SG min/max 0/0
                          Driver 5: standstill, reads 42576, writes 11 timeouts 0, SG min/max 0/0
                          Date/time: 2020-08-02 21:35:01
                          Slowest loop: 4.89ms; fastest: 0.16ms
                          === Storage ===
                          Free file entries: 10
                          SD card 0 detected, interface speed: 25.0MBytes/sec
                          SD card longest read time 2.6ms, write time 0.0ms, max retries 0
                          === Move ===
                          Hiccups: 0(0), FreeDm: 375, MinFreeDm: 375, MaxWait: 0ms
                          Bed compensation in use: none, comp offset 0.000
                          === MainDDARing ===
                          Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1
                          === AuxDDARing ===
                          Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1
                          === Heat ===
                          Bed heaters = 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1
                          === GCodes ===
                          Segments left: 0
                          Movement lock held by null
                          HTTP is idle in state(s) 0
                          Telnet is idle in state(s) 0
                          File is idle in state(s) 0
                          USB is idle in state(s) 0
                          Aux is idle in state(s) 0
                          Trigger is idle in state(s) 0
                          Queue is idle in state(s) 0
                          LCD is idle in state(s) 0
                          SBC is idle in state(s) 0
                          Daemon is idle in state(s) 0
                          Aux2 is idle in state(s) 0
                          Autopause is idle in state(s) 0
                          Code queue is empty.
                          === Network ===
                          Slowest loop: 5.26ms; fastest: 0.03ms
                          Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions Telnet(0), 0 sessions
                          HTTP sessions: 1 of 8

                          • Ethernet -
                            State: active
                            Error counts: 0 0 0 0 0
                            Socket states: 5 2 2 2 2 0 0 0
                            === CAN ===
                            Messages sent 344, longest wait 0ms for type 0
                            === Linux interface ===
                            State: 0, failed transfers: 0
                            Last transfer: 894436ms ago
                            RX/TX seq numbers: 0/1
                            SPI underruns 0, overruns 0
                            Number of disconnects: 0
                            Buffer RX/TX: 0/0-0

                          Second test : psu on, no connected motors, movement on x through the panel Due:

                          Error: short-to-ground reported by driver(s) 0 1
                          8/2/2020, 9:36:51 PM Error: short-to-ground reported by driver(s) 0 1
                          8/2/2020, 9:36:47 PM m122
                          === Diagnostics ===
                          RepRapFirmware for Duet 3 MB6HC version 3.1.1 running on Duet 3 MB6HC v1.01 or later (standalone mode)
                          Board ID: 08DJM-956L2-G43S8-6JKD6-3SJ6L-KA02G
                          Used output buffers: 1 of 40 (22 max)
                          === RTOS ===
                          Static ram: 154604
                          Dynamic ram: 162384 of which 44 recycled
                          Exception stack ram used: 308
                          Never used ram: 75876
                          Tasks: ETHERNET(blocked,436) NETWORK(ready,244) HEAT(blocked,1188) CanReceiv(suspended,3820) CanSender(suspended,1488) CanClock(blocked,1424) TMC(blocked,60) MAIN(running,4628) IDLE(ready,76)
                          Owned mutexes:
                          === Platform ===
                          Last reset 00:16:39 ago, cause: power up
                          Last software reset at 2020-08-02 08:21, reason: User, spinning module LinuxInterface, available RAM 75776 bytes (slot 1)
                          Software reset code 0x0010 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0443c000 BFAR 0x00000000 SP 0xffffffff Task MAIN
                          Error status: 0
                          MCU temperature: min 30.6, current 31.9, max 32.0
                          Supply voltage: min 24.1, current 24.1, max 24.2, under voltage events: 0, over voltage events: 0, power good: yes
                          12V rail voltage: min 12.1, current 12.1, max 12.2, under voltage events: 0
                          Driver 0: short-to-ground standstill, reads 56010, writes 3 timeouts 0, SG min/max 0/8
                          Driver 1: short-to-ground standstill, reads 56009, writes 3 timeouts 0, SG min/max 0/8
                          Driver 2: standstill, reads 56013, writes 0 timeouts 0, SG min/max not available
                          Driver 3: standstill, reads 56012, writes 0 timeouts 0, SG min/max not available
                          Driver 4: standstill, reads 56013, writes 0 timeouts 0, SG min/max not available
                          Driver 5: standstill, reads 56013, writes 0 timeouts 0, SG min/max not available
                          Date/time: 2020-08-02 21:36:46
                          Slowest loop: 17.09ms; fastest: 0.21ms
                          === Storage ===
                          Free file entries: 10
                          SD card 0 detected, interface speed: 25.0MBytes/sec
                          SD card longest read time 2.3ms, write time 12.3ms, max retries 0
                          === Move ===
                          Hiccups: 0(0), FreeDm: 375, MinFreeDm: 373, MaxWait: 984672ms
                          Bed compensation in use: none, comp offset 0.000
                          === MainDDARing ===
                          Scheduled moves: 1, completed moves: 1, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1
                          === AuxDDARing ===
                          Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1
                          === Heat ===
                          Bed heaters = 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1
                          === GCodes ===
                          Segments left: 0
                          Movement lock held by null
                          HTTP is idle in state(s) 0
                          Telnet is idle in state(s) 0
                          File is idle in state(s) 0
                          USB is idle in state(s) 0
                          Aux is idle in state(s) 0
                          Trigger is idle in state(s) 0
                          Queue is idle in state(s) 0
                          LCD is idle in state(s) 0
                          SBC is idle in state(s) 0
                          Daemon is idle in state(s) 0
                          Aux2 is idle in state(s) 0
                          Autopause is idle in state(s) 0
                          Code queue is empty.
                          === Network ===
                          Slowest loop: 19.59ms; fastest: 0.03ms
                          Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions Telnet(0), 0 sessions
                          HTTP sessions: 1 of 8

                          • Ethernet -
                            State: active
                            Error counts: 0 0 0 0 0
                            Socket states: 5 2 2 2 2 0 0 0
                            === CAN ===
                            Messages sent 422, longest wait 0ms for type 0
                            === Linux interface ===
                            State: 0, failed transfers: 0
                            Last transfer: 999813ms ago
                            RX/TX seq numbers: 0/1
                            SPI underruns 0, overruns 0

                          Sparkcube XL V 1.1 300x300x190, Radds, Raspberry, Keenovo silicone bedheat 220v, Big Booster Extruder, DIY building
                          BLV Cube 665mm Direct Drive with Duet3/SBC (RPi 4) Mosquito Magnum/Bond Tech Extruder/Vanadium Nozzle, Keenovo silicone bedheat 220v

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

                            @Touchthebitum rather than using the PanelDue (try with it disconnected in case it’s causing the problem), send Gcode moves via USB. First set a position for the X and Y axis with G92 X0 Y0, then send G1 X10 F300. You will need motors connected to driver 0 and 1, or you’ll get an error.

                            Guide to setting up direct Ethernet connection here: https://duet3d.dozuki.com/Wiki/Setting_up_networking_on_Duet#Section_Wired_direct_connection

                            Edit: when the PanelDue is sending commands, they should be echoed on the USB (I think). If so, what command is being sent to move X?

                            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

                            Touchthebitumundefined 2 Replies Last reply Reply Quote 0
                            • dc42undefined
                              dc42 administrators @Touchthebitum
                              last edited by

                              @Touchthebitum, thanks for answering my previous questions. Two more:

                              • what is the stepper motor model number?
                              • what resistance do you measure across each phase?

                              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

                              Touchthebitumundefined 1 Reply Last reply Reply Quote 0
                              • Touchthebitumundefined
                                Touchthebitum @dc42
                                last edited by Touchthebitum

                                @dc42

                                Motors are Blurolls 17HM19-2004S

                                I get 1.7 (stabilised) as resistance on every motor on both phase

                                I'll execute tests this morning

                                Sparkcube XL V 1.1 300x300x190, Radds, Raspberry, Keenovo silicone bedheat 220v, Big Booster Extruder, DIY building
                                BLV Cube 665mm Direct Drive with Duet3/SBC (RPi 4) Mosquito Magnum/Bond Tech Extruder/Vanadium Nozzle, Keenovo silicone bedheat 220v

                                1 Reply Last reply Reply Quote 0
                                • Touchthebitumundefined
                                  Touchthebitum @droftarts
                                  last edited by

                                  @droftarts said in Short to ground on drivers 0123:

                                  G1 X10 F300

                                  No Panel Due Ethernet connection
                                  G92 X0 Y0
                                  G1 X10 F300

                                  Error: short-to-ground reported by driver(s) 0 1
                                  03/08/2020 à 15:04:54 m122
                                  === Diagnostics ===
                                  RepRapFirmware for Duet 3 MB6HC version 3.1.1 running on Duet 3 MB6HC v1.01 or later (standalone mode)
                                  Board ID: 08DJM-956L2-G43S8-6JKD6-3SJ6L-KA02G
                                  Used output buffers: 2 of 40 (11 max)
                                  === RTOS ===
                                  Static ram: 154604
                                  Dynamic ram: 162384 of which 44 recycled
                                  Exception stack ram used: 272
                                  Never used ram: 75912
                                  Tasks: ETHERNET(blocked,436) NETWORK(ready,388) HEAT(blocked,1188) CanReceiv(suspended,3820) CanSender(suspended,1488) CanClock(blocked,1424) TMC(blocked,204) MAIN(running,4656) IDLE(ready,76)
                                  Owned mutexes:
                                  === Platform ===
                                  Last reset 00:02:33 ago, cause: power up
                                  Last software reset at 2020-08-02 08:21, reason: User, spinning module LinuxInterface, available RAM 75776 bytes (slot 1)
                                  Software reset code 0x0010 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0443c000 BFAR 0x00000000 SP 0xffffffff Task MAIN
                                  Error status: 0
                                  MCU temperature: min 22.7, current 32.1, max 32.2
                                  Supply voltage: min 0.2, current 24.1, max 24.2, under voltage events: 0, over voltage events: 0, power good: yes
                                  12V rail voltage: min 0.1, current 12.1, max 12.4, under voltage events: 0
                                  Driver 0: short-to-ground standstill, reads 44551, writes 14 timeouts 0, SG min/max 0/8
                                  Driver 1: short-to-ground standstill, reads 44552, writes 14 timeouts 0, SG min/max 0/8
                                  Driver 2: standstill, reads 44556, writes 11 timeouts 0, SG min/max 0/0
                                  Driver 3: standstill, reads 44557, writes 11 timeouts 0, SG min/max 0/0
                                  Driver 4: standstill, reads 44558, writes 11 timeouts 0, SG min/max 0/0
                                  Driver 5: standstill, reads 44558, writes 11 timeouts 0, SG min/max 0/0
                                  Date/time: 2020-08-03 15:04:53
                                  Slowest loop: 29.12ms; fastest: 0.14ms
                                  === Storage ===
                                  Free file entries: 10
                                  SD card 0 detected, interface speed: 25.0MBytes/sec
                                  SD card longest read time 2.3ms, write time 23.8ms, max retries 0
                                  === Move ===
                                  Hiccups: 0(0), FreeDm: 375, MinFreeDm: 373, MaxWait: 134960ms
                                  Bed compensation in use: none, comp offset 0.000
                                  === MainDDARing ===
                                  Scheduled moves: 1, completed moves: 1, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1
                                  === AuxDDARing ===
                                  Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1
                                  === Heat ===
                                  Bed heaters = 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1
                                  === GCodes ===
                                  Segments left: 0
                                  Movement lock held by null
                                  HTTP is idle in state(s) 0
                                  Telnet is idle in state(s) 0
                                  File is idle in state(s) 0
                                  USB is idle in state(s) 0
                                  Aux is idle in state(s) 0
                                  Trigger is idle in state(s) 0
                                  Queue is idle in state(s) 0
                                  LCD is idle in state(s) 0
                                  SBC is idle in state(s) 0
                                  Daemon is idle in state(s) 0
                                  Aux2 is idle in state(s) 0
                                  Autopause is idle in state(s) 0
                                  Code queue is empty.
                                  === Network ===
                                  Slowest loop: 28.84ms; fastest: 0.01ms
                                  Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions Telnet(0), 0 sessions
                                  HTTP sessions: 1 of 8

                                  • Ethernet -
                                    State: active
                                    Error counts: 0 0 0 0 0
                                    Socket states: 5 2 2 2 2 0 0 0
                                    === CAN ===
                                    Messages sent 613, longest wait 0ms for type 0
                                    === Linux interface ===
                                    State: 0, failed transfers: 0
                                    Last transfer: 153531ms ago
                                    RX/TX seq numbers: 0/1
                                    SPI underruns 0, overruns 0
                                    Number of disconnects: 0
                                    Buffer RX/TX: 0/0-0

                                  @droftarts said in Short to ground on drivers 0123:

                                  Edit: when the PanelDue is sending commands, they should be echoed on the USB (I think). If so, what command is being sent to move X?

                                  I don't see anything regarding echo on the command

                                  Sparkcube XL V 1.1 300x300x190, Radds, Raspberry, Keenovo silicone bedheat 220v, Big Booster Extruder, DIY building
                                  BLV Cube 665mm Direct Drive with Duet3/SBC (RPi 4) Mosquito Magnum/Bond Tech Extruder/Vanadium Nozzle, Keenovo silicone bedheat 220v

                                  1 Reply Last reply Reply Quote 0
                                  • Touchthebitumundefined
                                    Touchthebitum @droftarts
                                    last edited by

                                    @droftarts
                                    Hello
                                    Same results with YAT and USB commands without connected Panel Due. Error short on driver 0 1 ...
                                    I don't know what to say anymore....

                                    Sparkcube XL V 1.1 300x300x190, Radds, Raspberry, Keenovo silicone bedheat 220v, Big Booster Extruder, DIY building
                                    BLV Cube 665mm Direct Drive with Duet3/SBC (RPi 4) Mosquito Magnum/Bond Tech Extruder/Vanadium Nozzle, Keenovo silicone bedheat 220v

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

                                      @Touchthebitum please email me info@duet3d.com and I will arrange a return directly

                                      www.duet3d.com

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