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

Logic Level shifter for 12864 display on Duet 2 Wifi

Scheduled Pinned Locked Moved
Duet Hardware and wiring
11
200
16.5k
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.
  • undefined
    dc42 administrators @A Former User
    last edited by dc42 16 Apr 2020, 09:51

    @bearer said in Logic Level shifter for 12864 display on Duet 2 Wifi:

    And if the lcd has a proper spi interface it should ignore mosi/sck when cs isn't asserted so idk.

    That's what one would expect; however the V4.0 ST7920 datasheet says on page 29:

    When chip select (CS) is low, ST7920 serial clock counter and serial data will be reset. Serial transfer counter is set
    to the first bit and data register is cleared. After CS is “L”, any further change on SID or SCLK is not allowed. It is
    recommended to keep SCLK at “L” and SID at the last status before set CS to “L”. For a minimal system with only
    one ST7920 and one MPU, only SCLK and SID pins are necessary. CS pin should pull to high.

    That's why we gate SCLK with CS on the Maestro.

    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 16 Apr 2020, 09:57 Reply Quote 0
    • ?
      A Former User @dc42
      last edited by 16 Apr 2020, 09:57

      @dc42 said in Logic Level shifter for 12864 display on Duet 2 Wifi:

      That's why we gate SCLK with CS on the Maestro.

      Thanks for confirming! Suspected as much from the design, 2 for 1 with the and gate, probably timing (or Gremlins) preventing the txs0108 module achieving the same thing.

      Will poke it some more another day or perhaps sneak a 74hct08 in on the next part order.

      ? 1 Reply Last reply 16 Apr 2020, 14:12 Reply Quote 0
      • ?
        A Former User @A Former User
        last edited by A Former User 16 Apr 2020, 14:12

        @bearer said in Logic Level shifter for 12864 display on Duet 2 Wifi:

        probably timing (or Gremlins) preventing the txs0108 module achieving the same thing.

        not 100% sure where the gremlings are/were but ( <- dodgy USB cable and unstable 5v)
        It works! Duet2Wifi + TXS0108 + RepRapDiscount Smart Controller (or geeetech clone with the headers corrected in any case). Confirms patch against 2.05 and schematic at least.
        2020-04-16 17_02_30_d2w_12864-2.jpg

        M918
        12864 display is configured, pulses-per-click is 2
        M115
        FIRMWARE_NAME: RepRapFirmware for Duet 2 WiFi/Ethernet FIRMWARE_VERSION: 2.05.x LCD ELECTRONICS: Duet WiFi 1.02 or later FIRMWARE_DATE: 2020-04-16b4
        

        forecast changed its mind no sunshine today >.<

        edit: i would propose swapping lcd_cs to from PortDPin(21) / lcdconn.10 to PortAPin(7) / sdconn.7 as it would enable a single 10 way ribbon cable to function as just a display + sd reader (but no buttons/beep). Or maybe utxd0, urxd0 and spi0_cs could be used if the reader isn't present or needed.

        (edit2: yes, i'm aware the duet is missing some parts)

        1 Reply Last reply Reply Quote 1
        • ?
          A Former User
          last edited by 16 Apr 2020, 15:16

          @dc42 are there any conventions or limitations to

          # define MAIN_VERSION "2.05"
          # define DATE "2020-04-14b3"
          i see 3.01-RC7 gets a conditional
          # define VERSION_SUFFIX " (CAN0)"

          is that the way to go for various mischief? (i.e. mlx90614 too long a string to add?)

          1 Reply Last reply Reply Quote 0
          • undefined
            dc42 administrators
            last edited by 16 Apr 2020, 18:29

            Yes I suggest you use a version suffix. I agree that mlx90614 is rather long. It's also obscure, at least to me. What does it mean?

            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 16 Apr 2020, 18:42 Reply Quote 0
            • ?
              A Former User @dc42
              last edited by 16 Apr 2020, 18:42

              @dc42 said in Logic Level shifter for 12864 display on Duet 2 Wifi:

              What does it mean?

              unless i got it wrong its one of the non-contact spi temp sensors left over from an EV charger build. might find its way into a printer if this pandemic thing drags out..

              but its aslo about the length of a short commit id so was wondering if there is a hard limit that i didn't see in my limited search. i don't expect to share any binaries but figure clearly tagging them in case of issues would be good.

              1 Reply Last reply Reply Quote 0
              • ?
                A Former User @A Former User
                last edited by A Former User 16 Apr 2020, 20:33

                @bearer said in Logic Level shifter for 12864 display on Duet 2 Wifi:

                Edit: WIP RRF3 patch

                huh, must have missed it earlier:/

                ..bin/ld: Duet2CombinedFirmware.elf section `.ARM.exidx' will not fit in region `rom'
                ..bin/ld: region `rom' overflowed by 4900 bytes
                

                oh well, RRF2 for now.

                edit @ oliof: clearer picture of the wiring with some labels, do note I swapped two pins from the blogpost

                diff --git a/src/DuetNG/Pins_DuetNG.h b/src/DuetNG/Pins_DuetNG.h
                index a9c30059..620d14ef 100644
                --- a/src/DuetNG/Pins_DuetNG.h
                +++ b/src/DuetNG/Pins_DuetNG.h
                @@ -28,7 +28,7 @@ constexpr size_t NumFirmwareUpdateModules = 4;                // 3 modules, plus one for manua
                 #define SUPPORT_IOBITS                 1                                       // set to support P parameter in G0/G1 commands
                 #define SUPPORT_DHT_SENSOR             1                                       // set nonzero to support DHT temperature/humidity sensors
                 #define SUPPORT_WORKPLACE_COORDINATES  1                                       // set nonzero to support G10 L2 and G53..59
                -#define SUPPORT_12864_LCD              0                                       // set nonzero to support 12864 LCD and rotary encoder
                +#define SUPPORT_12864_LCD              1                                       // set nonzero to support 12864 LCD and rotary encoder
                 #define SUPPORT_OBJECT_MODEL           1
                 #define SUPPORT_FTP                    1
                 #define SUPPORT_TELNET                 1
                @@ -37,11 +37,11 @@ constexpr size_t NumFirmwareUpdateModules = 4;              // 3 modules, plus one for manua
                
                 // The physical capabilities of the machine
                
                -constexpr size_t NumDirectDrivers = 12;                                // The maximum number of drives supported directly by the electronics
                +constexpr size_t NumDirectDrivers = 11;                                // The maximum number of drives supported directly by the electronics
                 constexpr size_t MaxTotalDrivers = NumDirectDrivers;                   // The maximum number of drives including CAN expansion
                 constexpr size_t MaxSmartDrivers = 10;                                 // The maximum number of smart drivers
                
                -constexpr size_t NumEndstops = 12;                                     // The number of inputs we have for endstops, filament sensors etc.
                +constexpr size_t NumEndstops = 11;                                     // The number of inputs we have for endstops, filament sensors etc.
                 constexpr size_t NumHeaters = 8;                                       // The number of heaters in the machine
                 constexpr size_t NumExtraHeaterProtections = 8;                        // The number of extra heater protection instances
                 constexpr size_t NumThermistorInputs = 8;
                @@ -72,9 +72,29 @@ constexpr Pin AdditionalIoExpansionStart = 220;              // Pin numbers 220-235 are on t
                
                 // DRIVES
                 constexpr Pin GlobalTmc2660EnablePin = 38;                     // The pin that drives ENN of all TMC2660 drivers on production boards (on pre-production boards they are grounded)
                -constexpr Pin ENABLE_PINS[NumDirectDrivers] = { 78, 41, 42, 49, 57, 87, 88, 89, 90, 31, 82, 60 };
                -constexpr Pin STEP_PINS[NumDirectDrivers] = { 70, 71, 72, 69, 68, 66, 65, 64, 67, 91, 84, 85 };
                -constexpr Pin DIRECTION_PINS[NumDirectDrivers] = { 75, 76, 77, 01, 73, 92, 86, 80, 81, 32, 83, 25 };
                +constexpr Pin ENABLE_PINS[NumDirectDrivers] = { 78, 41, 42, 49, 57, 87, 88, 89, 90, 31, 82};
                +constexpr Pin STEP_PINS[NumDirectDrivers] = { 70, 71, 72, 69, 68, 66, 65, 64, 67, 91, 84};
                +constexpr Pin DIRECTION_PINS[NumDirectDrivers] = { 75, 76, 77, 01, 73, 92, 86, 80, 81, 32, 83};
                +
                +// 12864 LCD
                +// The ST7920 datasheet specifies minimum clock cycle time 400ns @ Vdd=4.5V, min. clock width 200ns high and 20ns low.
                +// This assumes that the Vih specification is met, which is 0.7 * Vcc = 3.5V @ Vcc=5V
                +// The Duet Maestro level shifts all 3 LCD signals to 5V, so we meet the Vih specification and can reliably run at 2MHz.
                +// For other electronics, there are reports that operation with 3.3V LCD signals may work if you reduce the clock frequency.
                +// ST7920 doesn't allow SCK/MISO signals when CS is not asserted, therefore the AND gate on the Maestro
                +constexpr uint32_t LcdSpiClockFrequency = 2000000;     // 2.0MHz            -- Top View --
                +constexpr Pin LcdCSPin = 7;      //connsd.7   --> gate -> exp1.4            |            |
                +constexpr Pin LcdBeepPin = 60;   //connlcd.4           -> exp1.1            |  10*  *9   |
                +constexpr Pin EncoderPinA = 85;  //connlcd.8           -> exp2.5            |            |
                +constexpr Pin EncoderPinB = 25;  //connlcd.6           -> exp2.3            |   8*  *7  _|
                +constexpr Pin EncoderPinSw = 8;  //connlcd.10           -> exp1.2           |          |
                +                                 //adittional spi wiring:                   |   6*  *5 |
                +                                 //connsd.6            <- exp2.1 (SD MISO)  |          |_
                +                                 //connsd.5   --> gate -> exp1.3 (LCD MOSI) |   4*  *3   |
                +                                 //            `->     -> exp2.6 (SD MOSI)  |            |
                +                                 //connsd.4   --> gate -> exp1.5 (LCD SCK)  |   2*  #1   |
                +                                 //            `->     -> exp2.2 (SD SCK)   |            |
                +                                 //connsd.3            -> exp2.4 (SD CS)    --------------
                
                 // Pin assignments etc. using USART1 in SPI mode
                 Usart * const USART_TMC2660 = USART1;
                @@ -92,7 +112,7 @@ constexpr Pin DueX_INT = 17;                                         // DueX interrupt pin = PA17 (was E6_STOP)
                 // Endstops
                 // RepRapFirmware only has a single endstop per axis.
                 // Gcode defines if it is a max ("high end") or min ("low end") endstop and sets if it is active HIGH or LOW.
                -constexpr Pin END_STOP_PINS[NumEndstops] = { 46, 02, 93, 74, 48, 96, 97, 98, 99, 17, 39, 8 };
                +constexpr Pin END_STOP_PINS[NumEndstops] = { 46, 02, 93, 74, 48, 96, 97, 98, 99, 17, 39};
                 constexpr Pin DUEX_END_STOP_PINS[5] = { 200, 203, 202, 201, 213 };                             // these replace endstops 5-9 if a DueX is present
                
                 // HEATERS
                diff --git a/src/Version.h b/src/Version.h
                index ac15bf0a..81082397 100644
                --- a/src/Version.h
                +++ b/src/Version.h
                @@ -11,7 +11,7 @@
                
                 #ifndef VERSION
                 #ifdef RTOS
                -# define MAIN_VERSION  "2.05.1"
                +# define MAIN_VERSION  "2.05.1+LCD"
                 #else
                 # define MAIN_VERSION  "1.26.1"
                 #endif
                @@ -20,7 +20,7 @@
                 #endif
                
                 #ifndef DATE
                -# define DATE "2020-02-09b1"
                +# define DATE "2020-04-16b8"
                 #endif
                
                 #define AUTHORS "reprappro, dc42, chrishamm, t3p3, dnewman, printm3d"
                

                (apply patch with git apply --ignore-whitespace lcd12864.patch as whitespace was tweaked for display)
                2020-04-17 00_03_36-Clipboard.jpg
                And schematic; i only wired up the blue lines on the drawing.
                cf0f5dbd-9107-466b-adbe-28448fb1b843-image.png

                1 Reply Last reply Reply Quote 1
                • undefined
                  oliof
                  last edited by 18 Apr 2020, 18:22

                  Got a delivery of ten boards with 74HCT08 on them just now. Tomorrow I'll need to solder on a bunch of headers ...IMG_20200418_202017.jpg

                  <>RatRig V-Minion Fly Super5Pro RRF<> V-Core 3.1 IDEX k*****r <> RatRig V-Minion SKR 2 Marlin<>

                  ? 1 Reply Last reply 18 Apr 2020, 18:30 Reply Quote 0
                  • ?
                    A Former User @oliof
                    last edited by A Former User 18 Apr 2020, 18:30

                    @oliof said in Logic Level shifter for 12864 display on Duet 2 Wifi:

                    Got a delivery of ten boards with 74HCT08 on them just now.

                    wow thats fast! if thats from the original schematic in the blog post beware pin1 (the square pin) isn't really pin1 on all of those headers; read the description of how to orient the notches on the headers/idc's. (eyeballing it i'd say its H1 and H2 that are reversed, but do check the description)

                    1 Reply Last reply Reply Quote 0
                    • undefined
                      oliof
                      last edited by 18 Apr 2020, 18:34

                      Indeed, 3 weeks turnaround isn't too bad (-:

                      It's the unchanged schematics and I will be careful!

                      In my pursuit for a small board to hide alon a cable length I may have left too little clearance for the headers.

                      A revision is likely inevitable, and then I'd go for your fixed layout if it's finalized by then.

                      <>RatRig V-Minion Fly Super5Pro RRF<> V-Core 3.1 IDEX k*****r <> RatRig V-Minion SKR 2 Marlin<>

                      ? 3 Replies Last reply 18 Apr 2020, 18:35 Reply Quote 0
                      • ?
                        A Former User @oliof
                        last edited by A Former User 18 Apr 2020, 18:35

                        @oliof said in Logic Level shifter for 12864 display on Duet 2 Wifi:

                        3 weeks

                        ah, didn't realize you ordered them a that long ago, seemed like 3 days to me 😛
                        (3 weeks is still quite good considering; I will likely need a break from banging my head against BLE 5 so can look over the 74hct08 layout one of these days np)
                        c1fe2d78-abb1-41e8-a650-1fa45a4fa5a0-image.png

                        1 Reply Last reply Reply Quote 0
                        • ?
                          A Former User @oliof
                          last edited by 18 Apr 2020, 18:40

                          @oliof said in Logic Level shifter for 12864 display on Duet 2 Wifi:

                          I will be careful!

                          quick tip is to measure ground on the duet to ground on the lcd12864 before powering up, if continuity good ods, and grounds are usually easy to spot making it an quick and easy test for reversed wires.

                          1 Reply Last reply Reply Quote 0
                          • ?
                            A Former User @oliof
                            last edited by 18 Apr 2020, 18:43

                            @oliof said in Logic Level shifter for 12864 display on Duet 2 Wifi:

                            I may have left too little clearance for the headers.

                            option 2 is to cut off the 10 way IDC on the ribbon and replace with a 2x5 dupont style housing, or as I often end up, cutting down a 2x40 or laminating any combination of smaller housings (just make sure to align the release catch on the outside if you need to make alterations)

                            1 Reply Last reply Reply Quote 0
                            • undefined
                              oliof
                              last edited by 18 Apr 2020, 18:45

                              good tip on the dupont housing, as I have those in the house and my crimp success rate with duponts is above 80% (-:

                              <>RatRig V-Minion Fly Super5Pro RRF<> V-Core 3.1 IDEX k*****r <> RatRig V-Minion SKR 2 Marlin<>

                              1 Reply Last reply Reply Quote 0
                              • undefined
                                oliof
                                last edited by 20 Apr 2020, 19:11

                                @bearer enabling the LCD12864 feature for DuetNG in RepRapFirmware3 does not grow the size beyond rom, or at least I do not get an error message ... I still need to suss out the pin assignments though.

                                <>RatRig V-Minion Fly Super5Pro RRF<> V-Core 3.1 IDEX k*****r <> RatRig V-Minion SKR 2 Marlin<>

                                ? undefined 2 Replies Last reply 20 Apr 2020, 19:42 Reply Quote 0
                                • ?
                                  A Former User @oliof
                                  last edited by A Former User 20 Apr 2020, 19:42

                                  @oliof I thought it built ok the first time, but can't seem to reproduce the success.

                                  feel free to try the changes I think I used..

                                  index 11d2bdfc..1a8948c5 100644
                                  --- a/src/DuetNG/Pins_DuetNG.h
                                  +++ b/src/DuetNG/Pins_DuetNG.h
                                  @@ -40,7 +40,7 @@ constexpr size_t NumFirmwareUpdateModules = 4;                // 3 modules, plus one for manua
                                   #define SUPPORT_IOBITS                 1                                       // set to support P parameter in G0/G1 commands
                                   #define SUPPORT_DHT_SENSOR             1                                       // set nonzero to support DHT temperature/humidity sensors
                                   #define SUPPORT_WORKPLACE_COORDINATES  1                       // set nonzero to support G10 L2 and G53..59
                                  -#define SUPPORT_12864_LCD              0                                       // set nonzero to support 12864 LCD and rotary encoder
                                  +#define SUPPORT_12864_LCD              1                                       // set nonzero to support 12864 LCD and rotary encoder
                                   #define SUPPORT_OBJECT_MODEL   1
                                   #define SUPPORT_FTP                            1
                                   #define SUPPORT_TELNET                 1
                                  @@ -53,7 +53,7 @@ constexpr size_t NumFirmwareUpdateModules = 4;                // 3 modules, plus one for manua
                                  
                                   // The physical capabilities of the machine
                                  
                                  -constexpr size_t NumDirectDrivers = 12;                                // The maximum number of drives supported directly by the electronics
                                  +constexpr size_t NumDirectDrivers = 11;                                // The maximum number of drives supported directly by the electronics
                                   constexpr size_t MaxSmartDrivers = 10;                         // The maximum number of smart drivers
                                  
                                   constexpr size_t MaxSensors = 32;
                                  @@ -112,18 +112,18 @@ constexpr Pin ENABLE_PINS[NumDirectDrivers] =
                                   {
                                          PortDPin(14), PortCPin(9), PortCPin(10), PortCPin(17), PortCPin(25),    // Duet
                                          PortDPin(23), PortDPin(24), PortDPin(25), PortDPin(26), PortBPin(14),   // DueX5
                                  -       PortDPin(18), PortCPin(28)
                                                  // CONN_LCD
                                  +       PortDPin(18),
                                                  // CONN_LCD  PortCPin(28)=EncoderPinB
                                   };
                                   constexpr Pin STEP_PINS[NumDirectDrivers] =
                                   {
                                          PortDPin(6), PortDPin(7), PortDPin(8), PortDPin(5), PortDPin(4),                // Duet
                                          PortDPin(2), PortDPin(1), PortDPin(0), PortDPin(3), PortDPin(27),               // DueX5
                                  -       PortDPin(20), PortDPin(21)
                                                  // CONN_LCD
                                  +       PortDPin(20)
                                                          // CONN_LCD PortDPin(21)=LcdCSPin
                                   };
                                   constexpr Pin DIRECTION_PINS[NumDirectDrivers] =
                                   {      PortDPin(11), PortDPin(12), PortDPin(13), PortAPin(1), PortDPin(9),             // Duet
                                          PortDPin(28), PortDPin(22), PortDPin(16), PortDPin(17), PortCPin(0),    // DueX5
                                  -       PortDPin(19), PortAPin(25)
                                                  // CONN_LCD
                                  +       PortDPin(19)
                                                          // CONN_LCD  PortAPin(25)=EncoderPinA
                                   };
                                  
                                   // Pin assignments etc. using USART1 in SPI mode
                                  @@ -187,6 +187,25 @@ constexpr Pin SdWriteProtectPins[NumSdCards] = { NoPin, NoPin };
                                   constexpr Pin SdSpiCSPins[1] = { PortCPin(24) };
                                   constexpr uint32_t ExpectedSdCardSpeed = 20000000;
                                  
                                  +// 12864 LCD
                                  +// The ST7920 datasheet specifies minimum clock cycle time 400ns @ Vdd=4.5V, min. clock width 200ns high and 20ns low.
                                  +// This assumes that the Vih specification is met, which is 0.7 * Vcc = 3.5V @ Vcc=5V
                                  +// The Duet Maestro level shifts all 3 LCD signals to 5V, so we meet the Vih specification and can reliably run at 2MHz.
                                  +// For other electronics, there are reports that operation with 3.3V LCD signals may work if you reduce the clock frequency.
                                  +constexpr uint32_t LcdSpiClockFrequency = 2000000;             // 2.0MHz
                                  +constexpr Pin LcdCSPin = PortDPin(21);      //connlcd.10 --> gate -> exp2.4
                                  +constexpr Pin LcdBeepPin = PortAPin(8);     //connlcd.4           -> exp1.1
                                  +constexpr Pin EncoderPinA = PortAPin(25);   //connlcd.8           -> exp2.5
                                  +constexpr Pin EncoderPinB = PortCPin(28);   //connlcd.6           -> exp2.3
                                  +constexpr Pin EncoderPinSw = PortAPin(7);   //connsd.7            -> exp1.2
                                  +                                            //adittional spi wiring:
                                  +                                            //connsd.6            <- exp2.1
                                  +                                            //connsd.5   --> gate -> exp1.3
                                  +                                            //            `->     -> exp2.6
                                  +                                            //connsd.4   --> gate -> exp1.5
                                  +                                            //            `->     -> exp2.2
                                  +                                            //connsd.3            -> exp2.4
                                  +
                                   // Enum to represent allowed types of pin access
                                   // We don't have a separate bit for servo, because Duet PWM-capable ports can be used for servos if they are on the Duet main board
                                   enum class PinCapability: uint8_t
                                  @@ -291,8 +310,8 @@ constexpr PinEntry PinTable[] =
                                          { Z_PROBE_MOD_PIN, PinCapability::write, "zprobe.mod" },
                                          { ATX_POWER_PIN, PinCapability::write,  "pson" },
                                          { PortCPin(7),  PinCapability::rw,              "connlcd.encb,connlcd.3" },
                                  -       { PortAPin(8),  PinCapability::rw,              "connlcd.enca,connlcd.4" },
                                  -       { PortAPin(7),  PinCapability::rw,              "connsd.encsw,connsd.7" },
                                  +       //{ PortAPin(8),        PinCapability::rw,              "connlcd.enca,connlcd.4" }, //LCD Beep
                                  +       //{ PortAPin(7),        PinCapability::rw,              "connsd.encsw,connsd.7" }, //EncoderPinSw
                                          { PortBPin(6),  PinCapability::rw,              "exp.pb6,exp.29,duex.pb6" },
                                          { 211,                  PinCapability::rwpwm,   "duex.gp1" },
                                          { 210,                  PinCapability::rwpwm,   "duex.gp2" },
                                  diff --git a/src/Version.h b/src/Version.h
                                  index 54caf0df..cf783708 100644
                                  --- a/src/Version.h
                                  +++ b/src/Version.h
                                  @@ -9,7 +9,7 @@
                                   #define SRC_VERSION_H_
                                  
                                   #ifndef VERSION
                                  -# define MAIN_VERSION  "3.01-RC8"
                                  +# define MAIN_VERSION  "3.01-RC8 LCD"
                                   # ifdef USE_CAN0
                                   #  define VERSION_SUFFIX       " (CAN0)"
                                   # else
                                  @@ -19,7 +19,7 @@
                                   #endif
                                  
                                   #ifndef DATE
                                  -# define DATE "2020-04-17b4"
                                  +# define DATE "2020-04-20b1"
                                   #endif
                                  
                                   #define AUTHORS "reprappro, dc42, chrishamm, t3p3, dnewman, printm3d"
                                  

                                  but it doesn't build at all unless the pins are defined?

                                  undefined 1 Reply Last reply 21 Apr 2020, 08:10 Reply Quote 0
                                  • undefined
                                    dc42 administrators @oliof
                                    last edited by dc42 20 Apr 2020, 21:35

                                    @oliof said in Logic Level shifter for 12864 display on Duet 2 Wifi:

                                    @bearer enabling the LCD12864 feature for DuetNG in RepRapFirmware3 does not grow the size beyond rom, or at least I do not get an error message ... I still need to suss out the pin assignments though.

                                    The standard v3.01-dev branch build of Duet2CombinedFirmware has 19kB free. The 12864 code on the Duet Maestro build takes up 0x24E0 bytes of readonly data, 0x2840 bytes of code, 0x144 exception table and 0x130 exception index. Total 0x5F94, which is nearly 24K. So unless I have missed anything, it is too large by about 5Kb, which agrees with the message.

                                    I've just managed to reduce the size of the standard 3.02 binary by 4.5kb, so now you are only about 0.5kb short. This will be in the next commit. You will need to update the CoreNG and freeRTOS projects as well as the RepRapFirmware project.

                                    Possible ways to make it fit (EDITED):

                                    • You could save 5kb space by removing the large font
                                    • Compile the less critical parts of the firmware with option -Os instead of -O2
                                    • Remove one of the less-used kinematics classes when 12864 support is enabled
                                    • Remove the old 3/4/5-point bed compensation (I will probably do this myself soon anyway)
                                    • Remove the support for async moves (see SUPPORT_ASYNC_MOVES) or IOBITS (SUPPORT_IOBITS) or scanner
                                    • Separate the WiFi and Ethernet support into separate firmware binaries, as they were before I combined them.

                                    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
                                    • undefined
                                      dc42 administrators
                                      last edited by 20 Apr 2020, 21:53

                                      Update: I just tried a build with the 12864 display enabled. It overflowed by 28 bytes! So it's close to fitting.

                                      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
                                      • ?
                                        A Former User
                                        last edited by 21 Apr 2020, 01:26

                                        just occured to me, would adding both say DIP and SOIC footprint cause issues with signaling? if not, maybe it could lower the diy threshold a little, although SOIC shouldn't really be an issue for the beginner.
                                        eb50fac4-4ace-4b60-a784-4abba24b70b7-image.png

                                        1 Reply Last reply Reply Quote 0
                                        • undefined
                                          oliof
                                          last edited by 21 Apr 2020, 07:49

                                          Funny story, the TXS0108 I ordered in DIP format came as SOIC on a PCB with pin headers ... same footprint, but kind of ironic.

                                          <>RatRig V-Minion Fly Super5Pro RRF<> V-Core 3.1 IDEX k*****r <> RatRig V-Minion SKR 2 Marlin<>

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