From d4ea70b1961092e9f90f3da4d193e0ca2ea0a273 Mon Sep 17 00:00:00 2001 From: jean-marcharvengt Date: Fri, 21 Feb 2020 21:06:46 +0100 Subject: [PATCH] add support for 320x240 st7789 display --- MCUME_teensy/pcb_t4/mcumev1.kicad_pcb | 9 +- MCUME_teensy/pcb_t4/mcumev2psram.kicad_pcb | 17 +- MCUME_teensy/pcb_t4/mcumev3mini.kicad_pcb | 9 +- MCUME_teensy/pcb_t4/mcumev3mini.kicad_pcb-bak | 508 ------ .../pcb_t4/mcumev4minkeys7789.kicad_pcb | 1358 +++++++++++++++++ MCUME_teensy/pcb_t4/mcumev4minkeys7789.pro | 33 + .../pcb_t4/mcumev4minkeys9341.kicad_pcb | 1348 ++++++++++++++++ MCUME_teensy/pcb_t4/mcumev4minkeys9341.pro | 33 + MCUME_teensy/pinout.txt | 66 +- MCUME_teensy/teensy5200/emuapi.cpp | 2 +- MCUME_teensy/teensy5200/iopins.h | 30 +- MCUME_teensy/teensy5200/platform_config.h | 20 +- MCUME_teensy/teensy5200/tft_t_dma.cpp | 166 +- MCUME_teensy/teensy5200/tft_t_dma.h | 17 +- MCUME_teensy/teensy5200/tft_t_dma_config.h | 8 +- MCUME_teensy/teensy64/emuapi.cpp | 2 +- MCUME_teensy/teensy64/iopins.h | 30 +- MCUME_teensy/teensy64/platform_config.h | 20 +- MCUME_teensy/teensy64/tft_t_dma.cpp | 166 +- MCUME_teensy/teensy64/tft_t_dma.h | 18 +- MCUME_teensy/teensy64/tft_t_dma_config.h | 8 +- MCUME_teensy/teensy800/emuapi.cpp | 2 +- MCUME_teensy/teensy800/iopins.h | 30 +- MCUME_teensy/teensy800/platform_config.h | 20 +- MCUME_teensy/teensy800/tft_t_dma.cpp | 166 +- MCUME_teensy/teensy800/tft_t_dma.h | 17 +- MCUME_teensy/teensy800/tft_t_dma_config.h | 8 +- MCUME_teensy/teensy8086/emuapi.cpp | 2 +- MCUME_teensy/teensy8086/iopins.h | 30 +- MCUME_teensy/teensy8086/platform_config.h | 20 +- MCUME_teensy/teensy8086/tft_t_dma.cpp | 166 +- MCUME_teensy/teensy8086/tft_t_dma.h | 17 +- MCUME_teensy/teensy8086/tft_t_dma_config.h | 8 +- MCUME_teensy/teensy81/emuapi.cpp | 2 +- MCUME_teensy/teensy81/iopins.h | 30 +- MCUME_teensy/teensy81/platform_config.h | 20 +- MCUME_teensy/teensy81/tft_t_dma.cpp | 168 +- MCUME_teensy/teensy81/tft_t_dma.h | 17 +- MCUME_teensy/teensy81/tft_t_dma_config.h | 8 +- MCUME_teensy/teensycastaway/emuapi.cpp | 2 +- MCUME_teensy/teensycastaway/iopins.h | 30 +- MCUME_teensy/teensycastaway/platform_config.h | 20 +- MCUME_teensy/teensycastaway/sound.h | 2 +- MCUME_teensy/teensycastaway/tft_t_dma.cpp | 166 +- MCUME_teensy/teensycastaway/tft_t_dma.h | 18 +- .../teensycastaway/tft_t_dma_config.h | 8 +- MCUME_teensy/teensycolem/emuapi.cpp | 2 +- MCUME_teensy/teensycolem/iopins.h | 30 +- MCUME_teensy/teensycolem/platform_config.h | 20 +- MCUME_teensy/teensycolem/tft_t_dma.cpp | 166 +- MCUME_teensy/teensycolem/tft_t_dma.h | 17 +- MCUME_teensy/teensycolem/tft_t_dma_config.h | 8 +- MCUME_teensy/teensygen/emuapi.cpp | 2 +- MCUME_teensy/teensygen/iopins.h | 30 +- MCUME_teensy/teensygen/platform_config.h | 20 +- MCUME_teensy/teensygen/tft_t_dma.cpp | 168 +- MCUME_teensy/teensygen/tft_t_dma.h | 17 +- MCUME_teensy/teensygen/tft_t_dma_config.h | 8 +- MCUME_teensy/teensygnuboy/emuapi.cpp | 2 +- MCUME_teensy/teensygnuboy/iopins.h | 30 +- MCUME_teensy/teensygnuboy/platform_config.h | 20 +- MCUME_teensy/teensygnuboy/tft_t_dma.cpp | 166 +- MCUME_teensy/teensygnuboy/tft_t_dma.h | 17 +- MCUME_teensy/teensygnuboy/tft_t_dma_config.h | 8 +- MCUME_teensy/teensylogo/emuapi.cpp | 2 +- MCUME_teensy/teensylogo/iopins.h | 30 +- MCUME_teensy/teensylogo/platform_config.h | 20 +- MCUME_teensy/teensylogo/teensylogo.ino | 7 +- MCUME_teensy/teensylogo/tft_t_dma.cpp | 166 +- MCUME_teensy/teensylogo/tft_t_dma.h | 16 +- MCUME_teensy/teensylogo/tft_t_dma_config.h | 8 +- MCUME_teensy/teensynofrendo/emuapi.cpp | 2 +- MCUME_teensy/teensynofrendo/iopins.h | 30 +- MCUME_teensy/teensynofrendo/platform_config.h | 20 +- MCUME_teensy/teensynofrendo/tft_t_dma.cpp | 166 +- MCUME_teensy/teensynofrendo/tft_t_dma.h | 17 +- .../teensynofrendo/tft_t_dma_config.h | 8 +- MCUME_teensy/teensyo2em/emuapi.cpp | 2 +- MCUME_teensy/teensyo2em/iopins.h | 30 +- MCUME_teensy/teensyo2em/platform_config.h | 20 +- MCUME_teensy/teensyo2em/tft_t_dma.cpp | 166 +- MCUME_teensy/teensyo2em/tft_t_dma.h | 18 +- MCUME_teensy/teensyo2em/tft_t_dma_config.h | 8 +- MCUME_teensy/teensypce/emuapi.cpp | 2 +- MCUME_teensy/teensypce/iopins.h | 30 +- MCUME_teensy/teensypce/platform_config.h | 20 +- MCUME_teensy/teensypce/tft_t_dma.cpp | 166 +- MCUME_teensy/teensypce/tft_t_dma.h | 17 +- MCUME_teensy/teensypce/tft_t_dma_config.h | 8 +- MCUME_teensy/teensysms/emuapi.cpp | 2 +- MCUME_teensy/teensysms/iopins.h | 30 +- MCUME_teensy/teensysms/platform_config.h | 20 +- MCUME_teensy/teensysms/psram_t.cpp | 6 + MCUME_teensy/teensysms/tft_t_dma.cpp | 166 +- MCUME_teensy/teensysms/tft_t_dma.h | 17 +- MCUME_teensy/teensysms/tft_t_dma_config.h | 8 +- MCUME_teensy/teensyspeccy/emuapi.cpp | 2 +- MCUME_teensy/teensyspeccy/iopins.h | 30 +- MCUME_teensy/teensyspeccy/platform_config.h | 20 +- MCUME_teensy/teensyspeccy/tft_t_dma.cpp | 166 +- MCUME_teensy/teensyspeccy/tft_t_dma.h | 17 +- MCUME_teensy/teensyspeccy/tft_t_dma_config.h | 8 +- MCUME_teensy/teensyvcs/emuapi.cpp | 2 +- MCUME_teensy/teensyvcs/iopins.h | 30 +- MCUME_teensy/teensyvcs/platform_config.h | 20 +- MCUME_teensy/teensyvcs/tft_t_dma.cpp | 166 +- MCUME_teensy/teensyvcs/tft_t_dma.h | 17 +- MCUME_teensy/teensyvcs/tft_t_dma_config.h | 8 +- MCUME_teensy/teensyvectrex/emuapi.cpp | 2 +- MCUME_teensy/teensyvectrex/iopins.h | 30 +- MCUME_teensy/teensyvectrex/platform_config.h | 20 +- MCUME_teensy/teensyvectrex/tft_t_dma.cpp | 166 +- MCUME_teensy/teensyvectrex/tft_t_dma.h | 17 +- MCUME_teensy/teensyvectrex/tft_t_dma_config.h | 8 +- i2ckeyboard/pinout.txt | 20 +- 115 files changed, 5076 insertions(+), 2477 deletions(-) delete mode 100644 MCUME_teensy/pcb_t4/mcumev3mini.kicad_pcb-bak create mode 100644 MCUME_teensy/pcb_t4/mcumev4minkeys7789.kicad_pcb create mode 100644 MCUME_teensy/pcb_t4/mcumev4minkeys7789.pro create mode 100644 MCUME_teensy/pcb_t4/mcumev4minkeys9341.kicad_pcb create mode 100644 MCUME_teensy/pcb_t4/mcumev4minkeys9341.pro diff --git a/MCUME_teensy/pcb_t4/mcumev1.kicad_pcb b/MCUME_teensy/pcb_t4/mcumev1.kicad_pcb index 5aefc77..c568af0 100644 --- a/MCUME_teensy/pcb_t4/mcumev1.kicad_pcb +++ b/MCUME_teensy/pcb_t4/mcumev1.kicad_pcb @@ -3,7 +3,7 @@ (general (thickness 1.6) (drawings 4) - (tracks 386) + (tracks 389) (zones 0) (modules 0) (nets 1) @@ -333,7 +333,6 @@ (via (at 68.58 22.86) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) (via (at 57.15 22.86) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) (segment (start 50.8 26.67) (end 54.61 26.67) (width 1) (layer B.Cu) (net 0)) - (segment (start 74.93 24.13) (end 69.85 24.13) (width 1) (layer B.Cu) (net 0)) (segment (start 54.61 26.67) (end 55.88 25.4) (width 1) (layer B.Cu) (net 0)) (segment (start 50.8 21.59) (end 48.26 21.59) (width 1) (layer B.Cu) (net 0)) (segment (start 48.26 21.59) (end 48.26 29.21) (width 1) (layer B.Cu) (net 0)) @@ -463,7 +462,6 @@ (segment (start 105.41 34.29) (end 105.41 35.56) (width 1) (layer B.Cu) (net 0)) (segment (start 93.98 34.29) (end 101.6 34.29) (width 1) (layer B.Cu) (net 0)) (segment (start 83.82 24.13) (end 93.98 34.29) (width 1) (layer B.Cu) (net 0)) - (segment (start 74.93 24.13) (end 83.82 24.13) (width 1) (layer B.Cu) (net 0)) (segment (start 95.25 43.18) (end 93.98 43.18) (width 1) (layer B.Cu) (net 0)) (segment (start 93.98 43.18) (end 91.44 43.18) (width 1) (layer B.Cu) (net 0)) (segment (start 101.6 36.83) (end 97.79 36.83) (width 1) (layer B.Cu) (net 0)) @@ -501,5 +499,10 @@ (segment (start 107.95 24.13) (end 101.6 24.13) (width 1) (layer B.Cu) (net 0)) (segment (start 110.49 81.28) (end 110.49 26.67) (width 1) (layer B.Cu) (net 0)) (segment (start 110.49 81.28) (end 110.49 95.25) (width 1) (layer F.Cu) (net 0)) + (segment (start 69.85 24.13) (end 72.39 26.67) (width 1) (layer B.Cu) (net 0)) + (segment (start 72.39 26.67) (end 74.93 26.67) (width 1) (layer B.Cu) (net 0)) + (segment (start 78.742792 24.13) (end 83.82 24.13) (width 1) (layer B.Cu) (net 0)) + (segment (start 76.202792 26.67) (end 78.742792 24.13) (width 1) (layer B.Cu) (net 0)) + (segment (start 74.93 26.67) (end 76.202792 26.67) (width 1) (layer B.Cu) (net 0)) ) diff --git a/MCUME_teensy/pcb_t4/mcumev2psram.kicad_pcb b/MCUME_teensy/pcb_t4/mcumev2psram.kicad_pcb index 1954f19..bc212d9 100644 --- a/MCUME_teensy/pcb_t4/mcumev2psram.kicad_pcb +++ b/MCUME_teensy/pcb_t4/mcumev2psram.kicad_pcb @@ -3,7 +3,7 @@ (general (thickness 1.6) (drawings 5) - (tracks 360) + (tracks 361) (zones 0) (modules 0) (nets 1) @@ -179,7 +179,7 @@ (via (at 213.741 50.673) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBDB)) (via (at 213.741 53.213) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBDC)) (via (at 213.741 53.213) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBDD)) - (via (at 181.739941 85.957485) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBDF) (status 1000000)) + (via (at 181.739941 85.957485) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBDF)) (via (at 184.279941 85.957485) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBE1)) (via (at 186.819941 85.957485) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBE3)) (via (at 189.359941 85.957485) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBE5)) @@ -328,15 +328,11 @@ (segment (start 181.739941 64.010941) (end 181.737 64.008) (width 1) (layer B.Cu) (net 0)) (segment (start 189.359941 64.010941) (end 189.357 64.008) (width 1) (layer B.Cu) (net 0)) (segment (start 189.359941 68.939485) (end 189.359941 64.010941) (width 1) (layer B.Cu) (net 0)) - (segment (start 199.519941 68.939485) (end 199.519941 66.296941) (width 1) (layer B.Cu) (net 0)) - (segment (start 197.231 64.008) (end 199.519941 66.296941) (width 1) (layer B.Cu) (net 0)) - (segment (start 191.897 64.008) (end 197.231 64.008) (width 1) (layer B.Cu) (net 0)) (segment (start 176.53 43.053) (end 176.53 64.008) (width 1) (layer F.Cu) (net 0)) (via (at 176.53 88.392) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) (via (at 176.53 91.059) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) (via (at 207.137 91.059) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) (segment (start 207.139941 91.056059) (end 207.137 91.059) (width 1) (layer B.Cu) (net 0)) - (segment (start 207.139941 85.957485) (end 207.139941 91.056059) (width 1) (layer B.Cu) (net 0)) (segment (start 176.53 88.392) (end 176.53 91.059) (width 1) (layer B.Cu) (net 0)) (segment (start 176.53 91.059) (end 207.137 91.059) (width 1) (layer F.Cu) (net 0)) (segment (start 176.53 64.008) (end 176.53 66.548) (width 1) (layer B.Cu) (net 0)) @@ -389,7 +385,6 @@ (via (at 176.53 85.979) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) (segment (start 179.07 66.548) (end 179.07 85.979) (width 1) (layer F.Cu) (net 0)) (segment (start 176.53 66.548) (end 176.53 88.392) (width 1) (layer F.Cu) (net 0)) - (segment (start 199.519941 68.939485) (end 199.519941 70.717485) (width 1) (layer B.Cu) (net 0)) (segment (start 189.357 70.714544) (end 189.359941 70.717485) (width 1) (layer B.Cu) (net 0)) (segment (start 189.357 64.008) (end 189.357 70.714544) (width 1) (layer B.Cu) (net 0)) (segment (start 186.819941 70.717485) (end 186.819941 68.326) (width 1) (layer B.Cu) (net 0)) @@ -405,7 +400,6 @@ (segment (start 196.977 69.342) (end 196.979941 69.344941) (width 1) (layer B.Cu) (net 0)) (segment (start 194.439941 69.344941) (end 194.439941 71.752059) (width 1) (layer B.Cu) (net 0)) (segment (start 194.437 69.342) (end 194.439941 69.344941) (width 1) (layer B.Cu) (net 0)) - (segment (start 191.899941 69.344941) (end 191.899941 71.752059) (width 1) (layer B.Cu) (net 0)) (segment (start 191.897 69.342) (end 191.899941 69.344941) (width 1) (layer B.Cu) (net 0)) (segment (start 208.026 118.237) (end 214.884 118.237) (width 1) (layer B.Cu) (net 0)) (segment (start 191.899941 102.110941) (end 208.026 118.237) (width 1) (layer B.Cu) (net 0)) @@ -478,5 +472,12 @@ (segment (start 207.01 61.341) (end 207.01 64.008) (width 1) (layer B.Cu) (net 0)) (segment (start 146.812 94.615) (end 146.812 125.857) (width 1) (layer B.Cu) (net 0)) (segment (start 148.717 92.71) (end 146.812 94.615) (width 1) (layer B.Cu) (net 0)) + (segment (start 199.517 70.714544) (end 199.519941 70.717485) (width 1) (layer B.Cu) (net 0)) + (segment (start 199.517 69.5325) (end 199.517 70.714544) (width 1) (layer B.Cu) (net 0)) + (segment (start 199.519941 70.717485) (end 199.519941 71.752059) (width 1) (layer B.Cu) (net 0)) + (segment (start 191.897 70.714544) (end 191.899941 70.717485) (width 1) (layer B.Cu) (net 0)) + (segment (start 191.897 64.008) (end 191.897 70.714544) (width 1) (layer B.Cu) (net 0)) + (segment (start 204.599941 88.521941) (end 204.599941 85.957485) (width 1) (layer B.Cu) (net 0)) + (segment (start 207.137 91.059) (end 204.599941 88.521941) (width 1) (layer B.Cu) (net 0)) ) diff --git a/MCUME_teensy/pcb_t4/mcumev3mini.kicad_pcb b/MCUME_teensy/pcb_t4/mcumev3mini.kicad_pcb index 36618c2..72ae13d 100644 --- a/MCUME_teensy/pcb_t4/mcumev3mini.kicad_pcb +++ b/MCUME_teensy/pcb_t4/mcumev3mini.kicad_pcb @@ -3,7 +3,7 @@ (general (thickness 1.6) (drawings 4) - (tracks 343) + (tracks 344) (zones 0) (modules 0) (nets 1) @@ -307,12 +307,9 @@ (segment (start 146.177 29.718) (end 146.05 29.591) (width 1) (layer B.Cu) (net 0)) (segment (start 158.784583 26.254417) (end 157.988 27.051) (width 0.8) (layer B.Cu) (net 0)) (segment (start 158.784583 25.364137) (end 158.784583 26.254417) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 176.403 28.06572) (end 176.403 28.067) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 179.104583 25.364137) (end 176.403 28.06572) (width 0.8) (layer B.Cu) (net 0)) (segment (start 149.987 19.939) (end 149.225 20.701) (width 0.8) (layer B.Cu) (net 0)) (segment (start 149.225 27.432) (end 149.86 28.067) (width 0.8) (layer B.Cu) (net 0)) (segment (start 149.225 20.701) (end 149.225 27.432) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 176.403 28.067) (end 149.86 28.067) (width 0.8) (layer B.Cu) (net 0)) (segment (start 184.15 29.718) (end 151.13 29.718) (width 0.8) (layer B.Cu) (net 0)) (segment (start 161.324583 21.554137) (end 162.052 22.281554) (width 0.8) (layer F.Cu) (net 0)) (segment (start 162.941 38.98772) (end 161.324583 40.604137) (width 1) (layer F.Cu) (net 0)) @@ -458,5 +455,9 @@ (segment (start 112.915183 34.230625) (end 94.809625 34.230625) (width 0.8) (layer B.Cu) (net 0)) (segment (start 112.915183 36.770625) (end 94.674375 36.770625) (width 0.8) (layer B.Cu) (net 0)) (segment (start 112.915183 39.310625) (end 94.801375 39.310625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 174.710248 28.067) (end 174.498 28.067) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 174.498 28.067) (end 149.86 28.067) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 176.40172 28.067) (end 179.104583 25.364137) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 174.498 28.067) (end 176.40172 28.067) (width 0.8) (layer B.Cu) (net 0)) ) diff --git a/MCUME_teensy/pcb_t4/mcumev3mini.kicad_pcb-bak b/MCUME_teensy/pcb_t4/mcumev3mini.kicad_pcb-bak deleted file mode 100644 index 2d42898..0000000 --- a/MCUME_teensy/pcb_t4/mcumev3mini.kicad_pcb-bak +++ /dev/null @@ -1,508 +0,0 @@ -(kicad_pcb (version 20171130) (host pcbnew "(5.0.1-3-g963ef8bb5)") - - (general - (thickness 1.6) - (drawings 4) - (tracks 389) - (zones 0) - (modules 0) - (nets 1) - ) - - (page A4) - (layers - (0 F.Cu signal) - (31 B.Cu signal) - (32 B.Adhes user) - (33 F.Adhes user) - (34 B.Paste user) - (35 F.Paste user) - (36 B.SilkS user) - (37 F.SilkS user) - (38 B.Mask user) - (39 F.Mask user) - (40 Dwgs.User user) - (41 Cmts.User user) - (42 Eco1.User user) - (43 Eco2.User user) - (44 Edge.Cuts user) - (45 Margin user) - (46 B.CrtYd user) - (47 F.CrtYd user) - (48 B.Fab user) - (49 F.Fab user) - ) - - (setup - (last_trace_width 0.8) - (trace_clearance 0.2) - (zone_clearance 0.508) - (zone_45_only no) - (trace_min 0.2) - (segment_width 0.2) - (edge_width 0.15) - (via_size 1.8) - (via_drill 0.4) - (via_min_size 0.4) - (via_min_drill 0.3) - (uvia_size 0.3) - (uvia_drill 0.1) - (uvias_allowed no) - (uvia_min_size 0.2) - (uvia_min_drill 0.1) - (pcb_text_width 0.3) - (pcb_text_size 1.5 1.5) - (mod_edge_width 0.15) - (mod_text_size 1 1) - (mod_text_width 0.15) - (pad_size 1.524 1.524) - (pad_drill 0.762) - (pad_to_mask_clearance 0.051) - (solder_mask_min_width 0.25) - (aux_axis_origin 0 0) - (visible_elements FFFFFF7F) - (pcbplotparams - (layerselection 0x010fc_ffffffff) - (usegerberextensions false) - (usegerberattributes false) - (usegerberadvancedattributes false) - (creategerberjobfile false) - (excludeedgelayer true) - (linewidth 0.150000) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (padsonsilk false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "")) - ) - - (net 0 "") - - (net_class Default "This is the default net class." - (clearance 0.2) - (trace_width 0.8) - (via_dia 1.8) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - ) - - (net_class neti "" - (clearance 0.2) - (trace_width 0.8) - (via_dia 3) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - ) - - (gr_line (start 144.018 44.577) (end 144.018 18.415) (layer Edge.Cuts) (width 0.15)) - (gr_line (start 189.738 44.704) (end 143.891 44.704) (layer Edge.Cuts) (width 0.15)) - (gr_line (start 189.865 18.415) (end 189.865 44.323) (layer Edge.Cuts) (width 0.15)) - (gr_line (start 144.018 18.415) (end 189.865 18.415) (layer Edge.Cuts) (width 0.15)) - - (via (at 176.564583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D07)) - (via (at 186.724583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D08)) - (via (at 156.244583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1A)) - (via (at 174.024583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1B)) - (via (at 176.564583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1C)) - (via (at 179.104583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1D)) - (via (at 174.024583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1E)) - (via (at 186.724583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1F)) - (via (at 179.104583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D20)) - (via (at 181.644583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D21)) - (via (at 184.184583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D22)) - (via (at 176.564583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D23)) - (via (at 181.644583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D24)) - (via (at 186.724583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D25)) - (via (at 186.724583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D26)) - (via (at 184.184583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D27)) - (via (at 184.184583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D28)) - (via (at 176.564583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D29)) - (via (at 179.104583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2A)) - (via (at 158.784583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2B)) - (via (at 158.784583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2C)) - (via (at 171.484583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2D)) - (via (at 181.644583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2E)) - (via (at 179.104583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2F)) - (via (at 184.184583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D30)) - (via (at 181.644583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D31)) - (via (at 174.024583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D32)) - (via (at 174.024583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D33)) - (via (at 171.484583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D34)) - (via (at 171.484583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D35)) - (via (at 168.944583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D36)) - (via (at 168.944583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D37)) - (via (at 166.404583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D38)) - (via (at 166.404583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D39)) - (via (at 163.864583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3A)) - (via (at 163.864583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3B)) - (via (at 161.324583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3C)) - (via (at 161.324583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3D)) - (via (at 158.784583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3E)) - (via (at 158.784583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3F)) - (via (at 156.244583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D40)) - (via (at 158.784583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D41)) - (via (at 156.244583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D42)) - (via (at 163.864583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D43)) - (via (at 153.704583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D44)) - (via (at 153.704583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D45)) - (via (at 161.324583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D46)) - (via (at 153.704583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D47)) - (via (at 153.704583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D48)) - (via (at 153.704583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D49)) - (via (at 153.704583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4A)) - (via (at 156.244583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4B)) - (via (at 176.564583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4C)) - (via (at 156.244583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4D)) - (via (at 186.724583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4F)) - (via (at 184.184583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D50)) - (via (at 181.644583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D51)) - (via (at 153.704583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D52)) - (via (at 153.704583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D53)) - (via (at 156.244583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D54)) - (via (at 156.244583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D55)) - (via (at 174.024583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D56)) - (via (at 166.404583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D57)) - (via (at 158.784583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D58)) - (via (at 158.784583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D59)) - (via (at 161.324583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5A)) - (via (at 161.324583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5B)) - (via (at 163.864583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5C)) - (via (at 163.864583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5D)) - (via (at 166.404583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5E)) - (via (at 166.404583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5F)) - (via (at 168.944583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D60)) - (via (at 168.944583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D61)) - (via (at 171.484583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D62)) - (via (at 171.484583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D63)) - (via (at 174.024583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D64)) - (via (at 174.024583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D65)) - (via (at 176.564583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D66)) - (via (at 184.184583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D67)) - (via (at 186.724583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D68)) - (via (at 176.564583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D69)) - (via (at 156.244583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6A)) - (via (at 161.324583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6B)) - (via (at 153.704583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6C)) - (via (at 176.564583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6D)) - (via (at 153.704583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6E)) - (via (at 174.024583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6F)) - (via (at 158.784583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D71)) - (via (at 176.564583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D72)) - (via (at 171.484583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D73)) - (via (at 168.944583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D74)) - (via (at 166.404583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D75)) - (via (at 163.864583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D76)) - (via (at 161.324583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D77)) - (via (at 171.484583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D78)) - (via (at 179.104583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D79)) - (via (at 168.944583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7A)) - (via (at 181.644583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7B)) - (via (at 186.724583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7C)) - (via (at 153.704583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7D)) - (via (at 153.704583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7E)) - (via (at 176.564583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7F)) - (via (at 179.104583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D80)) - (via (at 179.104583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D81)) - (via (at 181.644583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D82)) - (via (at 181.644583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D83)) - (via (at 184.184583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D84)) - (via (at 168.944583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D85)) - (via (at 171.484583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D86)) - (via (at 179.104583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D87)) - (via (at 161.324583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D88)) - (via (at 163.864583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D89)) - (via (at 184.184583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8A)) - (via (at 163.864583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8B)) - (via (at 186.724583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8C)) - (via (at 166.404583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8D)) - (via (at 166.404583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8E)) - (via (at 168.944583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8F)) - (via (at 158.784583 21.554137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9A)) - (via (at 163.864583 21.554137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9B)) - (via (at 163.864583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9C)) - (via (at 158.784583 21.554137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9D)) - (via (at 158.784583 21.554137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9E)) - (via (at 158.784583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9F)) - (via (at 158.784583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA0)) - (via (at 161.324583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA1)) - (via (at 174.024583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA2)) - (via (at 158.784583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA3)) - (via (at 161.324583 21.554137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA4)) - (via (at 161.324583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA5)) - (via (at 161.324583 21.554137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA6)) - (via (at 158.784583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA7)) - (via (at 163.864583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA8)) - (via (at 163.864583 21.554137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA9)) - (via (at 168.944583 21.554137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAA)) - (via (at 171.484583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAB)) - (via (at 163.864583 21.554137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAC)) - (via (at 168.944583 21.554137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAD)) - (via (at 168.944583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAE)) - (via (at 171.484583 21.554137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAF)) - (via (at 161.324583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB0)) - (via (at 158.784583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB1)) - (via (at 174.024583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB2)) - (via (at 171.484583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB3)) - (via (at 168.944583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB4)) - (via (at 166.404583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB5)) - (via (at 171.484583 21.554137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB6)) - (via (at 171.484583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB7)) - (via (at 168.944583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB8)) - (via (at 174.024583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB9)) - (via (at 168.944583 21.554137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBA)) - (via (at 158.784583 21.554137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBB)) - (via (at 158.784583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBC)) - (via (at 166.404583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBD)) - (via (at 163.864583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBE)) - (via (at 166.404583 21.554137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBF)) - (via (at 174.024583 21.554137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC0)) - (via (at 174.024583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC1)) - (via (at 166.404583 21.554137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC2)) - (via (at 166.404583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC3)) - (via (at 171.484583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC4)) - (via (at 161.324583 21.554137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC5)) - (via (at 161.324583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC6)) - (via (at 163.864583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC7)) - (via (at 166.404583 21.554137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC8)) - (via (at 168.944583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC9)) - (via (at 171.484583 21.554137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FCA)) - (via (at 158.784583 21.554137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FCB)) - (via (at 166.404583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FCC)) - (via (at 174.024583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0661A3)) - (via (at 174.024583 21.554137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) - (via (at 184.15 29.718) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) - (via (at 184.15 37.338) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) - (via (at 179.07 37.338) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) - (via (at 173.99 37.338) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) - (via (at 179.07 29.718) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) - (via (at 173.99 29.718) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) - (segment (start 184.184583 29.683417) (end 184.15 29.718) (width 1) (layer B.Cu) (net 0)) - (segment (start 156.244583 29.683417) (end 156.21 29.718) (width 1) (layer B.Cu) (net 0) (tstamp 5E0772AE)) - (via (at 156.21 29.718) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0772B0)) - (segment (start 146.084583 29.556417) (end 146.05 29.591) (width 1) (layer B.Cu) (net 0) (tstamp 5E0772AE)) - (via (at 146.05 29.718) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0772B0)) - (via (at 146.05 37.338) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0772B1)) - (via (at 156.21 37.338) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0772B1)) - (via (at 151.13 25.4) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E07763C)) - (via (at 151.13 32.766) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E07763D)) - (segment (start 151.164583 34.255417) (end 151.13 34.29) (width 1) (layer B.Cu) (net 0) (tstamp 5E07763B)) - (via (at 151.13 34.29) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E07763C)) - (via (at 151.13 41.91) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E07763D)) - (segment (start 146.177 29.718) (end 146.05 29.591) (width 1) (layer B.Cu) (net 0)) - (segment (start 158.784583 26.254417) (end 157.988 27.051) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 158.784583 25.364137) (end 158.784583 26.254417) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 176.403 28.06572) (end 176.403 28.067) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 179.104583 25.364137) (end 176.403 28.06572) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 149.987 19.939) (end 149.225 20.701) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 149.225 27.432) (end 149.86 28.067) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 149.225 20.701) (end 149.225 27.432) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 176.403 28.067) (end 149.86 28.067) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 184.15 29.718) (end 151.13 29.718) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 161.324583 21.554137) (end 162.052 22.281554) (width 0.8) (layer F.Cu) (net 0)) - (segment (start 162.941 38.98772) (end 161.324583 40.604137) (width 1) (layer F.Cu) (net 0)) - (segment (start 184.15 22.352) (end 184.15 22.352) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 151.13 25.527) (end 151.13 26.035) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 152.146 27.051) (end 157.48 27.051) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 151.13 26.035) (end 152.146 27.051) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 157.988 27.051) (end 157.48 27.051) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 151.13 39.37) (end 151.13 41.91) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 151.511 38.989) (end 151.13 39.37) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 166.062238 38.989) (end 151.511 38.989) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 166.404583 39.331345) (end 166.062238 38.989) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 166.404583 40.604137) (end 166.404583 39.331345) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 151.13 29.718) (end 151.13 32.893) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 168.944583 39.331345) (end 166.951238 37.338) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 168.944583 40.604137) (end 168.944583 39.331345) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 166.951238 37.338) (end 156.21 37.338) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 171.484583 40.604137) (end 171.484583 38.896583) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 171.484583 38.896583) (end 168.148 35.56) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 168.148 35.56) (end 154.178 35.56) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 154.178 35.56) (end 152.4 37.338) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 152.4 37.338) (end 150.876 37.338) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 150.876 37.338) (end 151.892 37.338) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 146.05 37.338) (end 150.876 37.338) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 174.024583 37.372583) (end 173.99 37.338) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 174.024583 40.604137) (end 174.024583 37.372583) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 179.07 37.338) (end 177.292 37.338) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 176.564583 38.065417) (end 176.564583 40.604137) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 177.292 37.338) (end 176.564583 38.065417) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 182.37072 37.338) (end 179.104583 40.604137) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 184.15 37.338) (end 182.37072 37.338) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 174.024583 21.554137) (end 183.352137 21.554137) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 171.45 23.368) (end 171.484583 23.333417) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 180.975 23.368) (end 171.45 23.368) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 171.484583 23.333417) (end 171.484583 21.554137) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 181.644583 24.037583) (end 180.975 23.368) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 181.644583 25.364137) (end 181.644583 24.037583) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 168.944583 23.275583) (end 168.944583 21.554137) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 154.305 23.368) (end 169.037 23.368) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 153.704583 23.968417) (end 154.305 23.368) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 169.037 23.368) (end 168.944583 23.275583) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 153.704583 25.364137) (end 153.704583 23.968417) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 156.244583 41.876929) (end 156.244583 40.604137) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 156.912654 42.545) (end 156.244583 41.876929) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 188.722 21.463) (end 188.722 41.275) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 187.071 19.812) (end 188.722 21.463) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 187.452 42.545) (end 156.912654 42.545) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 188.722 41.275) (end 187.452 42.545) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 166.404583 21.554137) (end 166.404583 20.158417) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 166.751 19.812) (end 187.071 19.812) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 166.404583 20.158417) (end 166.751 19.812) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 163.864583 20.281345) (end 163.268238 19.685) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 163.864583 21.554137) (end 163.864583 20.281345) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 163.268238 19.685) (end 150.368 19.685) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 184.15 22.352) (end 184.15 29.21) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E0A4353)) - (via (at 184.15 22.352) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) - (via (at 186.69 22.352) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) - (segment (start 186.69 25.329554) (end 186.724583 25.364137) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 186.69 22.352) (end 186.69 25.329554) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 183.352137 21.554137) (end 184.15 22.352) (width 0.8) (layer B.Cu) (net 0)) - (via (at 148.59 31.115) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) - (via (at 148.59 39.751) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) - (segment (start 148.59 29.842208) (end 148.59 29.718) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 148.59 31.115) (end 148.59 29.842208) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 148.59 29.718) (end 146.05 29.718) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 151.13 29.718) (end 148.59 29.718) (width 0.8) (layer B.Cu) (net 0)) - (via (at 146.05 42.926) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) - (segment (start 147.322792 42.926) (end 148.084792 43.688) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 146.05 42.926) (end 147.322792 42.926) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 148.084792 43.688) (end 158.877 43.688) (width 0.8) (layer B.Cu) (net 0)) - (via (at 146.05 40.767) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) - (segment (start 147.574 40.767) (end 148.59 39.751) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 146.05 40.767) (end 147.574 40.767) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 148.59 32.387792) (end 148.59 39.751) (width 0.8) (layer F.Cu) (net 0)) - (segment (start 148.59 31.115) (end 148.59 32.387792) (width 0.8) (layer F.Cu) (net 0)) - (via (at 136.029183 39.310625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FCC)) - (via (at 136.029183 34.230625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FCD)) - (via (at 136.029183 34.230625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FCE)) - (via (at 136.029183 39.310625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FCF)) - (via (at 136.029183 39.310625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD0)) - (via (at 136.029183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD1)) - (via (at 136.029183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD2)) - (via (at 136.029183 36.770625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD3)) - (via (at 136.029183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD4)) - (via (at 136.029183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD5)) - (via (at 136.029183 36.770625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD6)) - (via (at 136.029183 36.770625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD7)) - (via (at 136.029183 36.770625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD8)) - (via (at 136.029183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD9)) - (via (at 136.029183 34.230625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDA)) - (via (at 136.029183 34.230625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDB)) - (via (at 136.029183 29.150625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDC)) - (via (at 136.029183 26.610625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDD)) - (via (at 136.029183 34.230625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDE)) - (via (at 136.029183 29.150625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDF)) - (via (at 136.029183 29.150625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE0)) - (via (at 136.029183 26.610625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE1)) - (via (at 136.029183 36.770625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE2)) - (via (at 136.029183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE3)) - (via (at 136.029183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE4)) - (via (at 136.029183 26.610625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE5)) - (via (at 136.029183 29.150625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE6)) - (via (at 136.029183 31.690625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE7)) - (via (at 136.029183 26.610625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE8)) - (via (at 136.029183 26.610625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE9)) - (via (at 136.029183 29.150625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEA)) - (via (at 136.029183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEB)) - (via (at 136.029183 29.150625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEC)) - (via (at 136.029183 39.310625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FED)) - (via (at 136.029183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEE)) - (via (at 136.029183 31.690625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEF)) - (via (at 136.029183 34.230625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF0)) - (via (at 136.029183 31.690625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF1)) - (via (at 136.029183 24.070625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF2)) - (via (at 136.029183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF3)) - (via (at 136.029183 31.690625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF4)) - (via (at 136.029183 31.690625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF5)) - (via (at 136.029183 26.610625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF6)) - (via (at 136.029183 36.770625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF7)) - (via (at 136.029183 36.770625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF8)) - (via (at 136.029183 34.230625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF9)) - (via (at 136.029183 31.690625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFA)) - (via (at 136.029183 29.150625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFB)) - (via (at 136.029183 26.610625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFC)) - (via (at 136.029183 39.310625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFD)) - (via (at 136.029183 31.690625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFE)) - (via (at 136.029183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFF)) - (via (at 136.029183 24.070625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5000)) - (via (at 112.915183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51E4)) - (via (at 112.915183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51E5)) - (via (at 112.915183 36.770625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51E6)) - (via (at 112.915183 26.610625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51E7)) - (via (at 112.915183 26.610625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51E8)) - (via (at 112.915183 31.690625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51E9)) - (via (at 112.915183 34.230625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51EA)) - (via (at 112.915183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51EB)) - (via (at 112.915183 39.310625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51EC)) - (via (at 112.915183 26.610625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51ED)) - (via (at 112.915183 29.150625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51EE)) - (via (at 112.915183 34.230625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51EF)) - (via (at 112.915183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F0)) - (via (at 112.915183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F1)) - (via (at 112.915183 29.150625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F2) (status 1000000)) - (via (at 112.915183 26.610625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F3)) - (via (at 112.915183 34.230625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F4)) - (via (at 112.915183 29.150625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F5)) - (via (at 112.915183 29.150625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F6)) - (via (at 112.915183 39.310625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F7)) - (via (at 112.915183 36.770625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F8)) - (via (at 112.915183 39.310625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F9)) - (via (at 112.915183 26.610625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51FA)) - (via (at 112.915183 36.770625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51FB)) - (via (at 112.915183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51FC)) - (via (at 112.915183 36.770625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51FD)) - (via (at 112.915183 34.230625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51FE)) - (via (at 112.915183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51FF)) - (via (at 112.915183 36.770625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5200)) - (via (at 112.915183 34.230625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5201)) - (via (at 112.915183 29.150625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5202)) - (via (at 112.915183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5203)) - (via (at 112.915183 29.150625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5204)) - (via (at 112.915183 39.310625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5205)) - (via (at 112.915183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5206)) - (via (at 112.915183 31.690625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5207)) - (via (at 112.915183 34.230625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5208)) - (via (at 112.915183 31.690625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5209)) - (via (at 112.915183 24.070625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A520A)) - (via (at 112.915183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A520B)) - (via (at 112.915183 31.690625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A520C)) - (via (at 112.915183 31.690625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A520D)) - (via (at 112.915183 26.610625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A520E)) - (via (at 112.915183 36.770625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A520F)) - (via (at 112.915183 36.770625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5210)) - (via (at 112.915183 34.230625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5211)) - (via (at 112.915183 31.690625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5212)) - (via (at 112.915183 29.150625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5213)) - (via (at 112.915183 26.610625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5214)) - (via (at 112.915183 39.310625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5215)) - (via (at 112.915183 31.690625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5216)) - (via (at 112.915183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5217)) - (via (at 112.915183 24.070625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5218)) - (segment (start 112.915183 24.070625) (end 136.029183 24.070625) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 113.763711 26.610625) (end 136.029183 26.610625) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 112.915183 26.610625) (end 113.763711 26.610625) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 112.915183 29.150625) (end 136.029183 29.150625) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 112.915183 31.690625) (end 136.029183 31.690625) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 112.915183 34.230625) (end 136.029183 34.230625) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 112.915183 36.770625) (end 136.029183 36.770625) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 112.915183 39.310625) (end 136.029183 39.310625) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 157.511791 21.554137) (end 157.475928 21.59) (width 0.8) (layer B.Cu) (net 0)) - (segment (start 157.511791 21.554137) (end 158.784583 21.554137) (width 0.8) (layer B.Cu) (net 0)) - -) diff --git a/MCUME_teensy/pcb_t4/mcumev4minkeys7789.kicad_pcb b/MCUME_teensy/pcb_t4/mcumev4minkeys7789.kicad_pcb new file mode 100644 index 0000000..1570835 --- /dev/null +++ b/MCUME_teensy/pcb_t4/mcumev4minkeys7789.kicad_pcb @@ -0,0 +1,1358 @@ +(kicad_pcb (version 20171130) (host pcbnew "(5.0.1-3-g963ef8bb5)") + + (general + (thickness 1.6) + (drawings 12) + (tracks 1128) + (zones 0) + (modules 1) + (nets 1) + ) + + (page A4) + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.59944) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (segment_width 0.2) + (edge_width 0.15) + (via_size 1.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.15) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.051) + (solder_mask_min_width 0.25) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes false) + (usegerberadvancedattributes false) + (creategerberjobfile false) + (excludeedgelayer true) + (linewidth 0.150000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.59944) + (via_dia 1.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + ) + + (net_class neti "" + (clearance 0.2) + (trace_width 0.59944) + (via_dia 3) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + ) + + (module Connector_Card:microSD_HC_Hirose_DM3D-SF (layer B.Cu) (tedit 5B82D16A) (tstamp 5DE970AC) + (at 68.707 72.644 180) + (descr "Micro SD, SMD, right-angle, push-pull (https://media.digikey.com/PDF/Data%20Sheets/Hirose%20PDFs/DM3D-SF.pdf)") + (tags "Micro SD") + (attr smd) + (fp_text reference REF** (at -0.025 7.625 180) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value microSD_HC_Hirose_DM3D-SF (at -0.025 -6.975 180) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_arc (start 5.475 -5.475) (end 5.475 -5.725) (angle -90) (layer B.Fab) (width 0.1)) + (fp_arc (start 4.725 -4.425) (end 4.725 -3.925) (angle -90) (layer B.Fab) (width 0.1)) + (fp_arc (start -5.525 -5.475) (end -5.275 -5.475) (angle -90) (layer B.Fab) (width 0.1)) + (fp_arc (start -4.775 -4.425) (end -5.275 -4.425) (angle -90) (layer B.Fab) (width 0.1)) + (fp_arc (start -5.025 -9.575) (end -5.025 -10.075) (angle -90) (layer B.Fab) (width 0.1)) + (fp_arc (start 4.975 -9.575) (end 5.475 -9.575) (angle -90) (layer B.Fab) (width 0.1)) + (fp_line (start 6.325 5.785) (end 6.435 5.785) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.525 5.725) (end -1.975 5.725) (layer Dwgs.User) (width 0.1)) + (fp_line (start 6.375 -5.725) (end 6.375 5.725) (layer B.Fab) (width 0.1)) + (fp_line (start 3.575 -0.475) (end 3.575 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start 3.075 -0.475) (end 3.575 0.975) (layer Dwgs.User) (width 0.1)) + (fp_line (start 2.575 -0.475) (end 3.275 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start 2.075 -0.475) (end 2.775 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start 1.575 -0.475) (end 2.275 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start 1.075 -0.475) (end 1.775 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start 0.575 -0.475) (end 1.275 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start 0.075 -0.475) (end 0.775 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -0.425 -0.475) (end 0.275 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -0.925 -0.475) (end -0.225 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -1.425 -0.475) (end -0.725 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -1.925 -0.475) (end -1.225 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -2.425 -0.475) (end -1.725 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -2.925 -0.475) (end -2.225 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -3.425 -0.475) (end -2.725 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -4.425 -0.475) (end -3.725 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -6.375 -5.725) (end -6.375 5.725) (layer B.Fab) (width 0.1)) + (fp_line (start -4.925 -0.475) (end 3.575 -0.475) (layer Dwgs.User) (width 0.1)) + (fp_line (start 0.525 3.875) (end -1.975 3.875) (layer Dwgs.User) (width 0.1)) + (fp_line (start -4.925 1.525) (end 3.575 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -6.92 6.72) (end 6.88 6.72) (layer B.CrtYd) (width 0.05)) + (fp_line (start 6.88 6.72) (end 6.88 -6.28) (layer B.CrtYd) (width 0.05)) + (fp_line (start 6.88 -6.28) (end -6.92 -6.28) (layer B.CrtYd) (width 0.05)) + (fp_line (start -6.92 -6.28) (end -6.92 6.72) (layer B.CrtYd) (width 0.05)) + (fp_line (start -4.925 1.525) (end -4.925 -0.475) (layer Dwgs.User) (width 0.1)) + (fp_line (start -4.925 -0.475) (end -4.225 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -4.225 1.525) (end -3.725 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -3.925 -0.475) (end -3.225 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -3.225 1.525) (end -2.725 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -6.375 5.725) (end 6.375 5.725) (layer B.Fab) (width 0.1)) + (fp_line (start -1.975 5.725) (end -1.975 3.875) (layer Dwgs.User) (width 0.1)) + (fp_line (start 0.525 3.875) (end 0.525 5.725) (layer Dwgs.User) (width 0.1)) + (fp_line (start -1.925 3.875) (end -1.525 5.725) (layer Dwgs.User) (width 0.1)) + (fp_line (start -1.025 5.725) (end -1.525 3.875) (layer Dwgs.User) (width 0.1)) + (fp_line (start -1.025 3.875) (end -0.525 5.725) (layer Dwgs.User) (width 0.1)) + (fp_line (start -0.025 5.725) (end -0.525 3.875) (layer Dwgs.User) (width 0.1)) + (fp_line (start -0.025 3.875) (end 0.475 5.725) (layer Dwgs.User) (width 0.1)) + (fp_line (start -5.525 6.975) (end 4.175 6.975) (layer B.Fab) (width 0.1)) + (fp_line (start 4.175 5.725) (end 4.175 6.975) (layer B.Fab) (width 0.1)) + (fp_line (start -5.525 5.725) (end -5.525 6.975) (layer B.Fab) (width 0.1)) + (fp_line (start -4.775 -3.925) (end 4.725 -3.925) (layer B.Fab) (width 0.1)) + (fp_line (start -6.375 -5.725) (end -5.525 -5.725) (layer B.Fab) (width 0.1)) + (fp_line (start -5.275 -5.475) (end -5.275 -4.425) (layer B.Fab) (width 0.1)) + (fp_line (start 5.225 -5.475) (end 5.225 -4.425) (layer B.Fab) (width 0.1)) + (fp_line (start 5.475 -5.725) (end 6.375 -5.725) (layer B.Fab) (width 0.1)) + (fp_line (start -5.525 -5.725) (end -5.525 -9.575) (layer B.Fab) (width 0.1)) + (fp_line (start -5.025 -10.075) (end 4.975 -10.075) (layer B.Fab) (width 0.1)) + (fp_line (start 5.475 -9.575) (end 5.475 -5.725) (layer B.Fab) (width 0.1)) + (fp_line (start -6.435 4.625) (end -6.435 5.785) (layer B.SilkS) (width 0.12)) + (fp_line (start -6.435 5.785) (end 4.825 5.785) (layer B.SilkS) (width 0.12)) + (fp_line (start 6.435 5.785) (end 6.435 3.975) (layer B.SilkS) (width 0.12)) + (fp_line (start -6.435 1.375) (end -6.435 -4.225) (layer B.SilkS) (width 0.12)) + (fp_line (start 6.435 2.075) (end 6.435 -4.225) (layer B.SilkS) (width 0.12)) + (fp_text user KEEPOUT (at -0.725 4.8 180) (layer Cmts.User) + (effects (font (size 0.4 0.4) (thickness 0.06))) + ) + (fp_text user %R (at -0.025 -1.475 180) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.1)) (justify mirror)) + ) + (fp_text user KEEPOUT (at -0.275 0.525 180) (layer Cmts.User) + (effects (font (size 1 1) (thickness 0.1))) + ) + (pad 10 smd rect (at 5.575 5.45 180) (size 1 1.55) (layers B.Cu B.Paste B.Mask)) + (pad 11 smd rect (at 5.625 -5.225 180) (size 1.5 1.5) (layers B.Cu B.Paste B.Mask)) + (pad 1 smd rect (at 3.175 -5.35 180) (size 0.7 1.75) (layers B.Cu B.Paste B.Mask)) + (pad 2 smd rect (at 2.075 -5.35 180) (size 0.7 1.75) (layers B.Cu B.Paste B.Mask)) + (pad 3 smd rect (at 0.975 -5.35 180) (size 0.7 1.75) (layers B.Cu B.Paste B.Mask)) + (pad 4 smd rect (at -0.125 -5.35 180) (size 0.7 1.75) (layers B.Cu B.Paste B.Mask)) + (pad 5 smd rect (at -1.225 -5.35 180) (size 0.7 1.75) (layers B.Cu B.Paste B.Mask)) + (pad 6 smd rect (at -2.325 -5.35 180) (size 0.7 1.75) (layers B.Cu B.Paste B.Mask)) + (pad 7 smd rect (at -3.425 -5.35 180) (size 0.7 1.75) (layers B.Cu B.Paste B.Mask)) + (pad 11 smd rect (at 5.975 3.025 180) (size 0.8 1.4) (layers B.Cu B.Paste B.Mask)) + (pad 9 smd rect (at -5.65 3.875 180) (size 1.45 1) (layers B.Cu B.Paste B.Mask)) + (pad 11 smd rect (at -5.975 2.375 180) (size 0.8 1.5) (layers B.Cu B.Paste B.Mask)) + (pad 11 smd rect (at -5.725 -5.225 180) (size 1.3 1.5) (layers B.Cu B.Paste B.Mask)) + (pad 8 smd rect (at -4.525 -5.35 180) (size 0.7 1.75) (layers B.Cu B.Paste B.Mask)) + (model ${KISYS3DMOD}/Connector_Card.3dshapes/microSD_HC_Hirose_DM3D-SF.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (gr_line (start 129.54 90.551) (end 129.54 22.225) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 189.738 90.932) (end 129.921 90.932) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 190.119 22.225) (end 190.119 90.551) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 129.921 22.098) (end 189.611 22.098) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 79.248 68.199) (end 97.409 68.199) (layer Edge.Cuts) (width 0.15) (tstamp 5DE979D2)) + (gr_line (start 79.248 89.916) (end 97.155 89.916) (layer Edge.Cuts) (width 0.15) (tstamp 5DE979D1)) + (gr_line (start 79.248 68.199) (end 79.248 89.789) (layer Edge.Cuts) (width 0.15) (tstamp 5DE9797E)) + (gr_line (start 97.282 68.326) (end 97.282 89.916) (layer Edge.Cuts) (width 0.15) (tstamp 5DE9797D)) + (gr_line (start 59.69 68.199) (end 77.851 68.199) (layer Edge.Cuts) (width 0.15) (tstamp 5DE97775)) + (gr_line (start 59.69 89.916) (end 77.597 89.916) (layer Edge.Cuts) (width 0.15) (tstamp 5DE97775)) + (gr_line (start 59.69 68.199) (end 59.69 89.789) (layer Edge.Cuts) (width 0.15) (tstamp 5DE95758)) + (gr_line (start 77.724 68.199) (end 77.724 89.789) (layer Edge.Cuts) (width 0.15) (tstamp 5DE95757)) + + (via (at 176.437583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D07)) + (via (at 186.597583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D08)) + (via (at 156.117583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1A)) + (via (at 173.897583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1B)) + (via (at 176.437583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1C)) + (via (at 178.977583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1D)) + (via (at 173.897583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1E)) + (via (at 186.597583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1F)) + (via (at 178.977583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D20)) + (via (at 181.517583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D21)) + (via (at 184.057583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D22)) + (via (at 176.437583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D23)) + (via (at 181.517583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D24)) + (via (at 186.597583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D25)) + (via (at 186.597583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D26)) + (via (at 184.057583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D27)) + (via (at 184.057583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D28)) + (via (at 176.437583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D29)) + (via (at 178.977583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2A)) + (via (at 158.657583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2B)) + (via (at 158.657583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2C)) + (via (at 171.357583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2D)) + (via (at 181.517583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2E)) + (via (at 178.977583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2F)) + (via (at 184.057583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D30)) + (via (at 181.517583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D31)) + (via (at 173.897583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D32)) + (via (at 173.897583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D33)) + (via (at 171.357583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D34)) + (via (at 171.357583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D35)) + (via (at 168.817583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D36)) + (via (at 168.817583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D37)) + (via (at 166.277583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D38)) + (via (at 166.277583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D39)) + (via (at 163.737583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3A)) + (via (at 163.737583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3B)) + (via (at 161.197583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3C)) + (via (at 161.197583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3D)) + (via (at 158.657583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3E)) + (via (at 158.657583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3F)) + (via (at 156.117583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D40)) + (via (at 158.657583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D41)) + (via (at 156.117583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D42)) + (via (at 163.737583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D43)) + (via (at 153.577583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D44)) + (via (at 153.577583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D45)) + (via (at 161.197583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D46)) + (via (at 153.577583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D47)) + (via (at 153.577583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D48)) + (via (at 153.577583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D49)) + (via (at 153.577583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4A)) + (via (at 156.117583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4B)) + (via (at 176.437583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4C)) + (via (at 156.117583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4D)) + (via (at 186.597583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4F)) + (via (at 184.057583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D50)) + (via (at 181.517583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D51)) + (via (at 153.577583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D52)) + (via (at 153.577583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D53)) + (via (at 156.117583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D54)) + (via (at 156.117583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D55)) + (via (at 173.897583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D56)) + (via (at 166.277583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D57)) + (via (at 158.657583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D58)) + (via (at 158.657583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D59)) + (via (at 161.197583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5A)) + (via (at 161.197583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5B)) + (via (at 163.737583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5C)) + (via (at 163.737583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5D)) + (via (at 166.277583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5E)) + (via (at 166.277583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5F)) + (via (at 168.817583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D60)) + (via (at 168.817583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D61)) + (via (at 171.357583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D62)) + (via (at 171.357583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D63)) + (via (at 173.897583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D64)) + (via (at 173.897583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D65)) + (via (at 176.437583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D66)) + (via (at 184.057583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D67)) + (via (at 186.597583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D68)) + (via (at 176.437583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D69)) + (via (at 156.117583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6A)) + (via (at 161.197583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6B)) + (via (at 153.577583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6C)) + (via (at 176.437583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6D)) + (via (at 153.577583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6E)) + (via (at 173.897583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6F)) + (via (at 158.657583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D71)) + (via (at 176.437583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D72)) + (via (at 171.357583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D73)) + (via (at 168.817583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D74)) + (via (at 166.277583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D75)) + (via (at 163.737583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D76)) + (via (at 161.197583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D77)) + (via (at 171.357583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D78)) + (via (at 178.977583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D79)) + (via (at 168.817583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7A)) + (via (at 181.517583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7B)) + (via (at 186.597583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7C)) + (via (at 153.577583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7D)) + (via (at 153.577583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7E)) + (via (at 176.437583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7F)) + (via (at 178.977583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D80)) + (via (at 178.977583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D81)) + (via (at 181.517583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D82)) + (via (at 181.517583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D83)) + (via (at 184.057583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D84)) + (via (at 168.817583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D85)) + (via (at 171.357583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D86)) + (via (at 178.977583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D87)) + (via (at 161.197583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D88)) + (via (at 163.737583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D89)) + (via (at 184.057583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8A)) + (via (at 163.737583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8B)) + (via (at 186.597583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8C)) + (via (at 166.277583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8D)) + (via (at 166.277583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8E)) + (via (at 168.817583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8F)) + (via (at 153.577583 25.110137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9A)) + (via (at 158.657583 25.110137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9B)) + (via (at 158.657583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9C)) + (via (at 153.577583 25.110137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9D)) + (via (at 153.577583 25.110137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9E)) + (via (at 153.577583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9F)) + (via (at 153.577583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA0)) + (via (at 156.117583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA1)) + (via (at 168.817583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA2)) + (via (at 153.577583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA3)) + (via (at 156.117583 25.110137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA4)) + (via (at 156.117583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA5)) + (via (at 156.117583 25.110137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA6)) + (via (at 153.577583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA7)) + (via (at 158.657583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA8)) + (via (at 158.657583 25.110137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA9)) + (via (at 163.737583 25.110137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAA)) + (via (at 166.277583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAB)) + (via (at 158.657583 25.110137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAC)) + (via (at 163.737583 25.110137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAD)) + (via (at 163.737583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAE)) + (via (at 166.277583 25.110137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAF)) + (via (at 156.117583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB0)) + (via (at 153.577583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB1)) + (via (at 168.817583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB2)) + (via (at 166.277583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB3)) + (via (at 163.737583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB4)) + (via (at 161.197583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB5)) + (via (at 166.277583 25.110137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB6)) + (via (at 166.277583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB7)) + (via (at 163.737583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB8)) + (via (at 168.817583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB9)) + (via (at 163.737583 25.110137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBA)) + (via (at 153.577583 25.110137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBB)) + (via (at 153.577583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBC)) + (via (at 161.197583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBD)) + (via (at 158.657583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBE)) + (via (at 161.197583 25.110137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBF)) + (via (at 168.817583 25.110137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC0)) + (via (at 168.817583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC1)) + (via (at 161.197583 25.110137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC2)) + (via (at 161.197583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC3)) + (via (at 166.277583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC4)) + (via (at 156.117583 25.110137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC5)) + (via (at 156.117583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC6)) + (via (at 158.657583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC7)) + (via (at 161.197583 25.110137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC8)) + (via (at 163.737583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC9)) + (via (at 166.277583 25.110137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FCA)) + (via (at 153.577583 25.110137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FCB)) + (via (at 161.197583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FCC)) + (via (at 168.817583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0661A3)) + (via (at 168.817583 25.110137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 184.023 33.274) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 184.023 40.894) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 178.943 40.894) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 173.863 40.894) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 178.943 33.274) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 173.863 33.274) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 184.057583 33.239417) (end 184.023 33.274) (width 1) (layer B.Cu) (net 0)) + (segment (start 144.687583 33.239417) (end 144.653 33.274) (width 1) (layer B.Cu) (net 0) (tstamp 5E0772AE)) + (via (at 144.653 33.274) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0772B0)) + (segment (start 134.527583 33.112417) (end 134.493 33.147) (width 1) (layer B.Cu) (net 0) (tstamp 5E0772AE)) + (via (at 134.493 33.274) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0772B0)) + (via (at 134.493 40.894) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0772B1)) + (via (at 144.653 40.894) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0772B1)) + (via (at 139.573 28.956) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E07763C)) + (via (at 139.573 36.322) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E07763D)) + (segment (start 139.607583 37.811417) (end 139.573 37.846) (width 1) (layer B.Cu) (net 0) (tstamp 5E07763B)) + (via (at 139.573 37.846) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E07763C)) + (via (at 139.573 45.466) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E07763D)) + (segment (start 134.62 33.274) (end 134.493 33.147) (width 1) (layer B.Cu) (net 0)) + (segment (start 184.023 25.908) (end 184.023 25.908) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 139.573 29.083) (end 139.573 29.591) (width 0.8) (layer B.Cu) (net 0)) + (via (at 184.023 25.908) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 186.563 25.908) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 186.563 28.885554) (end 186.597583 28.920137) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 186.563 25.908) (end 186.563 28.885554) (width 0.8) (layer B.Cu) (net 0)) + (via (at 119.519183 42.104625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FCC)) + (via (at 119.519183 37.024625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FCD)) + (via (at 119.519183 37.024625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FCE)) + (via (at 119.519183 42.104625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FCF)) + (via (at 119.519183 42.104625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD0)) + (via (at 119.519183 42.104625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD1)) + (via (at 119.519183 42.104625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD2)) + (via (at 119.519183 39.564625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD3)) + (via (at 119.519183 26.864625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD4)) + (via (at 119.519183 42.104625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD5)) + (via (at 119.519183 39.564625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD6)) + (via (at 119.519183 39.564625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD7)) + (via (at 119.519183 39.564625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD8)) + (via (at 119.519183 42.104625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD9)) + (via (at 119.519183 37.024625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDA)) + (via (at 119.519183 37.024625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDB)) + (via (at 119.519183 31.944625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDC)) + (via (at 119.519183 29.404625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDD)) + (via (at 119.519183 37.024625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDE)) + (via (at 119.519183 31.944625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDF)) + (via (at 119.519183 31.944625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE0)) + (via (at 119.519183 29.404625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE1)) + (via (at 119.519183 39.564625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE2)) + (via (at 119.519183 42.104625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE3)) + (via (at 119.519183 26.864625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE4)) + (via (at 119.519183 29.404625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE5)) + (via (at 119.519183 31.944625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE6)) + (via (at 119.519183 34.484625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE7)) + (via (at 119.519183 29.404625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE8)) + (via (at 119.519183 29.404625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE9)) + (via (at 119.519183 31.944625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEA)) + (via (at 119.519183 26.864625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEB)) + (via (at 119.519183 31.944625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEC)) + (via (at 119.519183 42.104625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FED)) + (via (at 119.519183 42.104625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEE)) + (via (at 119.519183 34.484625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEF)) + (via (at 119.519183 37.024625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF0)) + (via (at 119.519183 34.484625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF1)) + (via (at 119.519183 26.864625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF2)) + (via (at 119.519183 26.864625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF3)) + (via (at 119.519183 34.484625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF4)) + (via (at 119.519183 34.484625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF5)) + (via (at 119.519183 29.404625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF6)) + (via (at 119.519183 39.564625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF7)) + (via (at 119.519183 39.564625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF8)) + (via (at 119.519183 37.024625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF9)) + (via (at 119.519183 34.484625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFA)) + (via (at 119.519183 31.944625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFB)) + (via (at 119.519183 29.404625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFC)) + (via (at 119.519183 42.104625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFD)) + (via (at 119.519183 34.484625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFE)) + (via (at 119.519183 26.864625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFF)) + (via (at 119.519183 26.864625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5000)) + (segment (start 97.253711 29.404625) (end 119.519183 29.404625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 31.944625) (end 119.519183 31.944625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 34.484625) (end 119.519183 34.484625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 37.024625) (end 119.519183 37.024625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 39.564625) (end 119.519183 39.564625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 42.104625) (end 119.519183 42.104625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 97.536 26.864625) (end 78.037375 26.864625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 26.864625) (end 97.536 26.864625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 97.536 26.864625) (end 119.519183 26.864625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 97.253711 29.404625) (end 78.172625 29.404625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 31.944625) (end 78.164375 31.944625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 34.484625) (end 78.299625 34.484625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 37.024625) (end 78.299625 37.024625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 39.564625) (end 78.164375 39.564625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 42.104625) (end 78.291375 42.104625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 144.145 65.278) (end 142.875 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46888F)) + (segment (start 144.145 64.643) (end 144.145 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468890)) + (via (at 144.145 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468891)) + (via (at 146.685 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468892)) + (via (at 146.685 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468893)) + (via (at 144.145 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468894)) + (via (at 142.875 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468895)) + (via (at 142.875 62.738) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468896)) + (segment (start 149.86 65.278) (end 148.59 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46888F)) + (segment (start 149.86 64.643) (end 149.86 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468890)) + (via (at 149.86 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468891)) + (via (at 152.4 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468892)) + (via (at 152.4 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468893)) + (via (at 149.86 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468894)) + (via (at 148.59 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468895)) + (via (at 148.59 62.8015) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468896)) + (segment (start 138.43 65.278) (end 137.16 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46888F)) + (segment (start 138.43 64.643) (end 138.43 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468890)) + (via (at 138.43 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468891)) + (via (at 140.97 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468892)) + (via (at 140.97 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468893)) + (via (at 138.43 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468894)) + (via (at 137.16 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468895)) + (via (at 137.16 62.8015) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468896)) + (segment (start 132.715 65.278) (end 131.445 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46888F)) + (segment (start 132.715 64.643) (end 132.715 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468890)) + (via (at 135.255 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468892)) + (via (at 135.255 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468893)) + (via (at 132.715 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468894)) + (via (at 131.445 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468895)) + (via (at 131.445 62.8015) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468896)) + (segment (start 161.29 65.278) (end 160.02 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A2D)) + (via (at 163.83 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A2E)) + (via (at 160.02 62.8015) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A2F)) + (via (at 163.83 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A30)) + (via (at 161.29 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A31)) + (via (at 161.29 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A32)) + (segment (start 161.29 64.643) (end 161.29 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A33)) + (via (at 160.02 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A34)) + (via (at 154.305 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A35)) + (via (at 155.575 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A36)) + (via (at 154.305 62.8015) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A37)) + (via (at 158.115 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A38)) + (segment (start 155.575 64.643) (end 155.575 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A39)) + (segment (start 155.575 65.278) (end 154.305 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A3A)) + (via (at 155.575 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A3B)) + (via (at 158.115 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A3C)) + (segment (start 172.72 64.643) (end 172.72 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A3D)) + (segment (start 172.72 65.278) (end 171.45 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A3E)) + (segment (start 178.435 64.643) (end 178.435 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A3F)) + (segment (start 178.435 65.278) (end 177.165 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A40)) + (via (at 172.72 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A41)) + (via (at 172.72 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A42)) + (via (at 175.26 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A43)) + (via (at 178.435 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A44)) + (via (at 177.165 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A45)) + (via (at 171.45 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A46)) + (via (at 178.435 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A47)) + (via (at 180.975 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A48)) + (via (at 175.26 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A49)) + (via (at 177.165 62.8015) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A4A)) + (via (at 180.975 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A4B)) + (via (at 171.45 62.738) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A4C)) + (via (at 165.735 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A4D)) + (via (at 169.545 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A4E)) + (via (at 167.005 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A4F)) + (via (at 165.735 62.8015) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A50)) + (via (at 169.545 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A51)) + (segment (start 167.005 64.643) (end 167.005 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A52)) + (segment (start 167.005 65.278) (end 165.735 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A53)) + (via (at 167.005 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A54)) + (segment (start 131.445 62.8015) (end 182.8165 62.8015) (width 0.8) (layer B.Cu) (net 0)) + (via (at 132.715 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468891)) + (segment (start 132.715 72.898) (end 131.445 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BCD)) + (via (at 135.255 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BCE)) + (via (at 131.445 70.4215) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BCF)) + (via (at 135.255 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD0)) + (via (at 132.715 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD1)) + (via (at 132.715 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD2)) + (segment (start 132.715 72.263) (end 132.715 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BD3)) + (via (at 131.445 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD4)) + (segment (start 155.575 72.263) (end 155.575 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BD5)) + (segment (start 167.005 72.898) (end 165.735 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BD6)) + (via (at 155.575 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD7)) + (via (at 161.29 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD8)) + (via (at 154.305 70.4215) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD9)) + (via (at 171.45 70.358) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDA)) + (via (at 172.72 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDB)) + (via (at 172.72 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDC)) + (via (at 175.26 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDD)) + (via (at 154.305 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDE)) + (via (at 169.545 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDF)) + (via (at 167.005 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE0)) + (via (at 163.83 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE1)) + (via (at 165.735 70.4215) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE2)) + (via (at 158.115 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE3)) + (via (at 169.545 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE4)) + (via (at 178.435 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE5)) + (via (at 163.83 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE6)) + (via (at 165.735 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE7)) + (via (at 177.165 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE8)) + (segment (start 178.435 72.263) (end 178.435 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BE9)) + (segment (start 161.29 72.898) (end 160.02 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEA)) + (segment (start 161.29 72.263) (end 161.29 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEB)) + (segment (start 167.005 72.263) (end 167.005 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEC)) + (segment (start 172.72 72.898) (end 171.45 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BED)) + (segment (start 178.435 72.898) (end 177.165 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEE)) + (segment (start 172.72 72.263) (end 172.72 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEF)) + (segment (start 155.575 72.898) (end 154.305 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BF0)) + (via (at 167.005 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF1)) + (via (at 160.02 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF2)) + (via (at 161.29 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF3)) + (via (at 155.575 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF4)) + (via (at 158.115 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF5)) + (via (at 160.02 70.4215) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF6)) + (via (at 171.45 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF7)) + (via (at 178.435 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF8)) + (via (at 180.975 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF9)) + (via (at 175.26 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BFA)) + (via (at 177.165 70.4215) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BFB)) + (via (at 180.975 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BFC)) + (segment (start 144.145 72.263) (end 144.145 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BFD)) + (segment (start 144.145 72.898) (end 142.875 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BFE)) + (segment (start 149.86 72.263) (end 149.86 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BFF)) + (segment (start 149.86 72.898) (end 148.59 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C00)) + (segment (start 131.445 70.4215) (end 182.8165 70.4215) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C01)) + (via (at 144.145 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C02)) + (via (at 144.145 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C03)) + (via (at 146.685 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C04)) + (via (at 149.86 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C05)) + (via (at 148.59 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C06)) + (via (at 142.875 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C07)) + (via (at 149.86 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C08)) + (via (at 152.4 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C09)) + (via (at 146.685 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0A)) + (via (at 148.59 70.4215) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0B)) + (via (at 152.4 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0C)) + (via (at 142.875 70.358) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0D)) + (via (at 137.16 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0E)) + (via (at 140.97 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0F)) + (via (at 138.43 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C10)) + (via (at 137.16 70.4215) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C11)) + (via (at 140.97 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C12)) + (segment (start 138.43 72.263) (end 138.43 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C13)) + (segment (start 138.43 72.898) (end 137.16 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C14)) + (via (at 138.43 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C15)) + (segment (start 132.715 80.518) (end 131.445 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BCD)) + (via (at 135.255 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BCE)) + (via (at 131.445 78.0415) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BCF)) + (via (at 135.255 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD0)) + (via (at 132.715 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD1)) + (via (at 132.715 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD2)) + (segment (start 132.715 79.883) (end 132.715 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BD3)) + (via (at 131.445 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD4)) + (segment (start 155.575 79.883) (end 155.575 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BD5)) + (segment (start 167.005 80.518) (end 165.735 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BD6)) + (via (at 155.575 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD7)) + (via (at 161.29 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD8)) + (via (at 154.305 78.0415) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD9)) + (via (at 171.45 77.978) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDA)) + (via (at 172.72 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDB)) + (via (at 172.72 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDC)) + (via (at 175.26 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDD)) + (via (at 154.305 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDE)) + (via (at 169.545 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDF)) + (via (at 167.005 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE0)) + (via (at 163.83 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE1)) + (via (at 165.735 78.0415) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE2)) + (via (at 158.115 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE3)) + (via (at 169.545 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE4)) + (via (at 178.435 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE5)) + (via (at 163.83 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE6)) + (via (at 165.735 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE7)) + (via (at 177.165 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE8)) + (segment (start 178.435 79.883) (end 178.435 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BE9)) + (segment (start 161.29 80.518) (end 160.02 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEA)) + (segment (start 161.29 79.883) (end 161.29 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEB)) + (segment (start 167.005 79.883) (end 167.005 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEC)) + (segment (start 172.72 80.518) (end 171.45 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BED)) + (segment (start 178.435 80.518) (end 177.165 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEE)) + (segment (start 172.72 79.883) (end 172.72 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEF)) + (segment (start 155.575 80.518) (end 154.305 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BF0)) + (via (at 167.005 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF1)) + (via (at 160.02 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF2)) + (via (at 161.29 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF3)) + (via (at 155.575 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF4)) + (via (at 158.115 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF5)) + (via (at 160.02 78.0415) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF6)) + (via (at 171.45 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF7)) + (via (at 178.435 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF8)) + (via (at 180.975 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF9)) + (via (at 175.26 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BFA)) + (via (at 177.165 78.0415) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BFB)) + (via (at 180.975 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BFC)) + (segment (start 144.145 79.883) (end 144.145 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BFD)) + (segment (start 144.145 80.518) (end 142.875 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BFE)) + (segment (start 149.86 79.883) (end 149.86 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BFF)) + (segment (start 149.86 80.518) (end 148.59 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C00)) + (segment (start 131.445 78.0415) (end 182.8165 78.0415) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C01)) + (via (at 144.145 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C02)) + (via (at 144.145 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C03)) + (via (at 146.685 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C04)) + (via (at 149.86 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C05)) + (via (at 148.59 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C06)) + (via (at 142.875 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C07)) + (via (at 149.86 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C08)) + (via (at 152.4 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C09)) + (via (at 146.685 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0A)) + (via (at 148.59 78.0415) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0B)) + (via (at 152.4 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0C)) + (via (at 142.875 77.978) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0D)) + (via (at 137.16 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0E)) + (via (at 140.97 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0F)) + (via (at 138.43 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C10)) + (via (at 137.16 78.0415) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C11)) + (via (at 140.97 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C12)) + (segment (start 138.43 79.883) (end 138.43 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C13)) + (segment (start 138.43 80.518) (end 137.16 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C14)) + (via (at 138.43 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C15)) + (segment (start 132.715 88.138) (end 131.445 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BCD)) + (via (at 135.255 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BCE)) + (via (at 131.445 85.6615) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BCF)) + (via (at 135.255 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD0)) + (via (at 132.715 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD1)) + (via (at 132.715 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD2)) + (segment (start 132.715 87.503) (end 132.715 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BD3)) + (via (at 131.445 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD4)) + (segment (start 155.575 87.503) (end 155.575 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BD5)) + (segment (start 167.005 88.138) (end 165.735 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BD6)) + (via (at 155.575 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD7)) + (via (at 161.29 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD8)) + (via (at 154.305 85.6615) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD9)) + (via (at 171.45 85.598) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDA)) + (via (at 172.72 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDB)) + (via (at 172.72 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDC)) + (via (at 175.26 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDD)) + (via (at 154.305 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDE)) + (via (at 169.545 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDF)) + (via (at 167.005 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE0)) + (via (at 163.83 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE1)) + (via (at 165.735 85.6615) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE2)) + (via (at 158.115 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE3)) + (via (at 169.545 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE4)) + (via (at 178.435 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE5)) + (via (at 163.83 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE6)) + (via (at 165.735 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE7)) + (via (at 177.165 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE8)) + (segment (start 178.435 87.503) (end 178.435 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BE9)) + (segment (start 161.29 88.138) (end 160.02 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEA)) + (segment (start 161.29 87.503) (end 161.29 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEB)) + (segment (start 167.005 87.503) (end 167.005 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEC)) + (segment (start 172.72 88.138) (end 171.45 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BED)) + (segment (start 178.435 88.138) (end 177.165 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEE)) + (segment (start 172.72 87.503) (end 172.72 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEF)) + (segment (start 155.575 88.138) (end 154.305 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BF0)) + (via (at 167.005 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF1)) + (via (at 160.02 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF2)) + (via (at 161.29 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF3)) + (via (at 155.575 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF4)) + (via (at 158.115 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF5)) + (via (at 160.02 85.6615) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF6)) + (via (at 171.45 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF7)) + (via (at 178.435 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF8)) + (via (at 180.975 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF9)) + (via (at 175.26 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BFA)) + (via (at 177.165 85.6615) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BFB)) + (via (at 180.975 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BFC)) + (segment (start 144.145 87.503) (end 144.145 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BFD)) + (segment (start 144.145 88.138) (end 142.875 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BFE)) + (segment (start 149.86 87.503) (end 149.86 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BFF)) + (segment (start 149.86 88.138) (end 148.59 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C00)) + (segment (start 131.445 85.6615) (end 182.8165 85.6615) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C01)) + (via (at 144.145 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C02)) + (via (at 144.145 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C03)) + (via (at 146.685 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C04)) + (via (at 149.86 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C05)) + (via (at 148.59 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C06)) + (via (at 142.875 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C07)) + (via (at 149.86 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C08)) + (via (at 152.4 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C09)) + (via (at 146.685 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0A)) + (via (at 148.59 85.6615) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0B)) + (via (at 152.4 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0C)) + (via (at 142.875 85.598) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0D)) + (via (at 137.16 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0E)) + (via (at 140.97 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0F)) + (via (at 138.43 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C10)) + (via (at 137.16 85.6615) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C11)) + (via (at 140.97 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C12)) + (segment (start 138.43 87.503) (end 138.43 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C13)) + (segment (start 138.43 88.138) (end 137.16 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C14)) + (via (at 138.43 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C15)) + (segment (start 135.255 64.643) (end 135.255 68.453) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 135.255 72.263) (end 135.255 76.073) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 135.255 79.883) (end 135.255 83.693) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 140.97 83.693) (end 140.97 79.883) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 140.97 76.073) (end 140.97 72.263) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 140.97 68.453) (end 140.97 64.643) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 146.685 64.643) (end 146.685 68.453) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 146.685 72.263) (end 146.685 76.073) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 146.685 79.883) (end 146.685 83.693) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 152.4 83.693) (end 152.4 79.883) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 152.4 76.073) (end 152.4 72.263) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 152.4 68.453) (end 152.4 64.643) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 158.115 64.643) (end 158.115 68.453) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 158.115 72.263) (end 158.115 76.073) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 158.115 79.883) (end 158.115 83.693) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 163.83 83.693) (end 163.83 79.883) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 163.83 76.073) (end 163.83 72.263) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 163.83 68.453) (end 163.83 64.643) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 169.545 64.643) (end 169.545 68.453) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 169.545 72.263) (end 169.545 76.073) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 169.545 79.883) (end 169.545 83.693) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 175.26 79.883) (end 175.26 83.693) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 175.26 76.073) (end 175.26 72.263) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 175.26 68.453) (end 175.26 64.643) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 180.975 64.643) (end 180.975 68.453) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 180.975 72.263) (end 180.975 76.073) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 180.975 79.883) (end 180.975 83.693) (width 0.8) (layer B.Cu) (net 0)) + (via (at 154.305 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 156.845 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 159.385 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 161.925 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 164.465 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 167.005 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 169.545 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 172.085 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 174.625 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 177.165 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 151.765 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 179.705 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 149.225 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 146.685 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 161.925 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A456)) + (via (at 167.005 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A457)) + (via (at 169.545 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A458)) + (via (at 151.765 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A459)) + (via (at 174.625 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A45A)) + (via (at 179.705 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A45B)) + (via (at 156.845 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A45C)) + (via (at 172.085 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A45D)) + (via (at 149.225 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A45E)) + (via (at 159.385 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A45F)) + (via (at 177.165 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A460)) + (via (at 164.465 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A461)) + (via (at 146.685 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A462)) + (via (at 154.305 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A463)) + (segment (start 184.15 64.643) (end 184.15 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE69)) + (segment (start 184.15 65.278) (end 182.88 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE6A)) + (segment (start 137.16 62.8015) (end 188.5315 62.8015) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE6B)) + (segment (start 184.15 72.263) (end 184.15 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE6C)) + (segment (start 184.15 72.898) (end 182.88 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE6D)) + (segment (start 137.16 70.4215) (end 188.5315 70.4215) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE6E)) + (segment (start 184.15 79.883) (end 184.15 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE6F)) + (segment (start 184.15 80.518) (end 182.88 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE70)) + (segment (start 137.16 78.0415) (end 188.5315 78.0415) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE71)) + (segment (start 184.15 87.503) (end 184.15 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE72)) + (segment (start 184.15 88.138) (end 182.88 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE73)) + (segment (start 137.16 85.6615) (end 188.5315 85.6615) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE74)) + (segment (start 186.69 64.643) (end 186.69 68.453) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE75)) + (segment (start 186.69 72.263) (end 186.69 76.073) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE76)) + (segment (start 186.69 79.883) (end 186.69 83.693) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE77)) + (via (at 184.15 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE79)) + (via (at 182.88 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE7A)) + (via (at 184.15 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE7B)) + (via (at 186.69 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE7C)) + (via (at 182.88 62.8015) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE7D)) + (via (at 186.69 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE7E)) + (via (at 184.15 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE7F)) + (via (at 182.88 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE80)) + (via (at 184.15 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE81)) + (via (at 186.69 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE82)) + (via (at 182.88 70.4215) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE83)) + (via (at 186.69 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE84)) + (via (at 184.15 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE85)) + (via (at 182.88 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE86)) + (via (at 184.15 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE87)) + (via (at 186.69 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE88)) + (via (at 182.88 78.0415) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE89)) + (via (at 186.69 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE8A)) + (via (at 184.15 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE8B)) + (via (at 182.88 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE8C)) + (via (at 184.15 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE8D)) + (via (at 186.69 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE8E)) + (via (at 182.88 85.6615) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE8F)) + (via (at 186.69 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE90)) + (via (at 167.005 51.308) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 169.545 51.308) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 172.085 51.308) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 174.625 51.308) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 188.5315 85.6615) (end 188.5315 85.6615) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46D35C)) + (via (at 188.5315 85.6615) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 188.5315 78.0415) (end 188.5315 78.0415) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46D35E)) + (via (at 188.5315 78.0415) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 188.5315 70.4215) (end 188.5315 70.4215) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46D360)) + (via (at 188.5315 70.4215) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 188.5315 62.8015) (end 188.5315 62.8015) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46D362)) + (via (at 188.5315 62.8015) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 151.765 49.53) (end 151.765 50.8) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 154.305 49.53) (end 154.305 50.8) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 156.845 49.53) (end 156.845 50.8) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 159.385 49.53) (end 159.385 50.8) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 161.925 49.53) (end 161.925 50.8) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 156.845 57.15) (end 156.845 55.88) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 179.705 57.15) (end 179.705 55.88) (width 0.8) (layer B.Cu) (net 0)) + (via (at 151.003 44.196) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 148.463 44.196) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 145.923 44.196) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 143.383 44.196) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 151.003 28.956) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 148.463 28.956) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 145.923 28.956) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 143.383 28.956) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 143.383 28.956) (end 143.383 27.686) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 145.923 28.956) (end 145.923 27.686) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 148.463 28.956) (end 148.463 27.686) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 151.003 28.956) (end 151.003 27.686) (width 0.8) (layer B.Cu) (net 0)) + (via (at 135.636 45.466) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 133.604 45.466) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 138.43 52.07) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 138.43 54.61) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 151.003 44.196) (end 151.003 42.926) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 148.463 44.196) (end 148.463 42.926) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 47.371 94.234) (end 48.768 94.234) (width 0.6) (layer B.Cu) (net 0)) + (segment (start 47.371 95.504) (end 48.768 95.504) (width 0.6) (layer B.Cu) (net 0)) + (segment (start 48.768 92.964) (end 48.26 92.964) (width 0.6) (layer B.Cu) (net 0)) + (segment (start 47.371 92.964) (end 48.26 92.964) (width 0.6) (layer B.Cu) (net 0)) + (segment (start 47.371 91.694) (end 48.768 91.694) (width 0.6) (layer B.Cu) (net 0)) + (segment (start 52.705 94.234) (end 54.102 94.234) (width 0.6) (layer B.Cu) (net 0) (tstamp 5DA197AB)) + (segment (start 52.705 95.504) (end 54.102 95.504) (width 0.6) (layer B.Cu) (net 0) (tstamp 5DA197AC)) + (segment (start 54.102 92.964) (end 53.594 92.964) (width 0.6) (layer B.Cu) (net 0) (tstamp 5DA197AD)) + (segment (start 52.705 92.964) (end 53.594 92.964) (width 0.6) (layer B.Cu) (net 0) (tstamp 5DA197AE)) + (segment (start 52.705 91.694) (end 54.102 91.694) (width 0.6) (layer B.Cu) (net 0) (tstamp 5DA197AF)) + (segment (start 76.2 83.439) (end 76.327 83.312) (width 0.6) (layer B.Cu) (net 0) (tstamp 5DE9571D)) + (segment (start 76.327 80.772) (end 76.327 80.645) (width 0.6) (layer B.Cu) (net 0) (tstamp 5DE9572A)) + (via (at 76.327 88.392) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9572C)) + (via (at 76.327 80.772) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9572D)) + (via (at 76.327 83.312) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9572E)) + (via (at 76.327 85.852) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9572F)) + (via (at 61.087 88.392) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95730)) + (via (at 61.087 85.852) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95733)) + (via (at 61.087 85.852) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95734)) + (via (at 61.087 88.392) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95735)) + (via (at 61.087 83.312) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95736)) + (via (at 61.087 83.312) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95737)) + (via (at 61.087 83.312) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95738)) + (via (at 61.087 80.772) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95739)) + (via (at 61.087 88.392) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9573A)) + (via (at 61.087 88.392) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9573C)) + (via (at 61.087 80.772) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9573E)) + (via (at 61.087 80.772) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95742)) + (via (at 61.087 88.392) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95744)) + (via (at 61.087 83.312) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95745)) + (via (at 61.087 83.312) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95746)) + (via (at 61.087 80.772) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95747)) + (via (at 61.087 88.392) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95748)) + (via (at 61.087 85.852) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95749)) + (via (at 61.087 85.852) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9574A)) + (via (at 61.087 85.852) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9574B)) + (via (at 61.087 85.852) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9574C)) + (via (at 61.087 83.312) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9574E)) + (via (at 61.087 88.392) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9574F)) + (via (at 61.087 85.852) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95750)) + (via (at 61.087 80.772) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95751)) + (via (at 61.087 80.772) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95752)) + (via (at 61.087 80.772) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95753)) + (via (at 61.087 83.312) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95754)) + (segment (start 74.422 80.772) (end 73.232 79.582) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 76.327 80.772) (end 74.422 80.772) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 75.427001 82.412001) (end 74.030001 82.412001) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 76.327 83.312) (end 75.427001 82.412001) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 72.132 80.514) (end 72.132 76.712) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 74.030001 82.412001) (end 72.132 80.514) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 75.427001 84.952001) (end 74.919001 84.952001) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 76.327 85.852) (end 75.427001 84.952001) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 71.032 81.065) (end 71.032 76.923) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 74.919001 84.952001) (end 71.032 81.065) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 73.232 79.121) (end 73.232 77.009) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 73.232 79.582) (end 73.232 79.121) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 73.232 79.121) (end 73.232 77.994) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 73.232 76.51956) (end 73.279 76.47256) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 73.232 77.994) (end 73.232 76.51956) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 75.054208 88.392) (end 69.977 83.314792) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 76.327 88.392) (end 75.054208 88.392) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 69.977 83.314792) (end 69.977 76.835) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 61.087 88.392) (end 63.881 88.392) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 68.832 83.441) (end 68.832 77.087) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 63.881 88.392) (end 68.832 83.441) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 61.087 85.852) (end 64.77 85.852) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 67.732 82.89) (end 67.732 77.048) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 64.77 85.852) (end 67.732 82.89) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 61.087 83.312) (end 64.897 83.312) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 66.632 81.577) (end 66.632 77.005) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 64.897 83.312) (end 66.632 81.577) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 61.087 80.772) (end 64.262 80.772) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 64.262 80.772) (end 65.532 79.502) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 65.532 79.502) (end 65.532 76.962) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 61.976 69.469) (end 62.126 69.619) (width 0.59944) (layer B.Cu) (net 0)) + (via (at 76.327 71.374) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 61.087 71.374) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 95.885 80.772) (end 93.98 80.772) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE9793A)) + (segment (start 93.98 80.772) (end 92.79 79.582) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE9793C)) + (segment (start 80.645 88.392) (end 83.439 88.392) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE97940)) + (segment (start 88.39 83.441) (end 88.39 77.087) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE97941)) + (segment (start 83.439 88.392) (end 88.39 83.441) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE97942)) + (segment (start 92.79 79.121) (end 92.79 77.994) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE97947)) + (segment (start 92.79 77.994) (end 92.79 76.51956) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE9794A)) + (segment (start 92.79 79.582) (end 92.79 79.121) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE9794C)) + (segment (start 84.455 83.312) (end 86.19 81.577) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE9794D)) + (segment (start 83.82 80.772) (end 85.09 79.502) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE9794E)) + (segment (start 95.758 83.439) (end 95.885 83.312) (width 0.6) (layer B.Cu) (net 0) (tstamp 5DE97954)) + (segment (start 95.885 80.772) (end 95.885 80.645) (width 0.6) (layer B.Cu) (net 0) (tstamp 5DE97955)) + (segment (start 80.645 83.312) (end 84.455 83.312) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE97956)) + (segment (start 80.645 80.772) (end 83.82 80.772) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE97958)) + (segment (start 84.328 85.852) (end 87.29 82.89) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE9795A)) + (segment (start 87.29 82.89) (end 87.29 77.048) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE9795B)) + (segment (start 80.645 85.852) (end 84.328 85.852) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE9795C)) + (via (at 95.885 88.392) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9795D)) + (via (at 95.885 80.772) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9795E)) + (via (at 95.885 83.312) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9795F)) + (via (at 95.885 85.852) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97960)) + (via (at 80.645 88.392) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97961)) + (via (at 80.645 85.852) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97962)) + (via (at 80.645 85.852) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97963)) + (via (at 80.645 88.392) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97964)) + (via (at 80.645 83.312) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97965)) + (via (at 80.645 83.312) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97966)) + (via (at 80.645 83.312) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97967)) + (via (at 80.645 80.772) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97968)) + (via (at 80.645 88.392) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97969)) + (via (at 80.645 88.392) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9796A)) + (via (at 80.645 80.772) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9796B)) + (via (at 80.645 80.772) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9796C)) + (via (at 80.645 88.392) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9796D)) + (via (at 80.645 83.312) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9796E)) + (via (at 80.645 83.312) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9796F)) + (via (at 80.645 80.772) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97970)) + (via (at 80.645 88.392) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97971)) + (via (at 80.645 85.852) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97972)) + (via (at 80.645 85.852) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97973)) + (via (at 80.645 85.852) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97974)) + (via (at 80.645 85.852) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97975)) + (via (at 80.645 83.312) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97976)) + (via (at 80.645 88.392) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97977)) + (via (at 80.645 85.852) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97978)) + (via (at 80.645 80.772) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97979)) + (via (at 80.645 80.772) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9797A)) + (via (at 80.645 80.772) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9797B)) + (via (at 80.645 83.312) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9797C)) + (segment (start 84.709 69.723) (end 86.868 69.723) (width 2.54) (layer B.Cu) (net 0)) + (segment (start 86.868 69.723) (end 80.79301 69.723) (width 2.54) (layer B.Cu) (net 0)) + (segment (start 86.868 69.723) (end 95.73699 69.723) (width 2.54) (layer B.Cu) (net 0)) + (segment (start 85.09 77.47) (end 85.09 75.819) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 85.09 79.502) (end 85.09 77.47) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 85.09 77.47) (end 85.09 76.962) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 86.19 81.577) (end 86.19 77.47) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 86.19 77.47) (end 86.19 75.862) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 86.19 77.47) (end 86.19 77.005) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 87.29 77.048) (end 87.29 75.86) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 88.39 77.087) (end 88.39 75.821) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 89.535 77.216) (end 89.535 75.819) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 89.535 77.216) (end 89.535 76.835) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 90.59 81.065) (end 90.59 77.724) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 90.59 77.724) (end 90.59 75.858) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 90.59 77.724) (end 90.59 76.923) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 91.69 77.724) (end 91.69 75.823) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 91.69 77.724) (end 91.69 76.712) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 92.79 77.978) (end 92.79 75.866) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 92.79 79.121) (end 92.79 77.978) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 92.79 77.978) (end 92.79 77.009) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 89.535 83.693) (end 89.535 81.534) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 94.234 88.392) (end 89.535 83.693) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 95.885 88.392) (end 94.234 88.392) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 89.535 81.534) (end 89.535 77.216) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 89.535 83.314792) (end 89.535 81.534) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 95.885 85.852) (end 93.472 85.852) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 90.59 82.97) (end 90.59 81.065) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 93.472 85.852) (end 90.59 82.97) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 95.885 83.312) (end 93.472 83.312) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 91.69 81.53) (end 91.69 80.264) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 93.472 83.312) (end 91.69 81.53) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 91.69 80.264) (end 91.69 77.724) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 91.69 80.514) (end 91.69 80.264) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 194.599874 51.175334) (end 195.865874 51.175334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0C7)) + (segment (start 194.216874 47.875334) (end 194.724874 47.875334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0C9)) + (segment (start 193.962874 54.475334) (end 194.974874 54.475334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0CB)) + (segment (start 201.963874 49.653334) (end 201.963874 58.522324) (width 2.54) (layer B.Cu) (net 0) (tstamp 5E47E0CF)) + (segment (start 193.962874 53.375334) (end 194.763874 53.375334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0D3)) + (segment (start 201.963874 49.653334) (end 201.963874 43.578344) (width 2.54) (layer B.Cu) (net 0) (tstamp 5E47E0D9)) + (segment (start 194.216874 48.975334) (end 195.824874 48.975334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0DA)) + (segment (start 194.216874 47.875334) (end 195.867874 47.875334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0DB)) + (segment (start 194.638874 50.075334) (end 195.826874 50.075334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0E2)) + (segment (start 193.708874 55.575334) (end 194.677874 55.575334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0E3)) + (segment (start 193.692874 55.575334) (end 195.167314 55.575334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0E8)) + (segment (start 194.216874 48.975334) (end 194.681874 48.975334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0EA)) + (segment (start 194.470874 52.320334) (end 195.867874 52.320334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0EE)) + (segment (start 201.963874 47.494334) (end 201.963874 49.653334) (width 2.54) (layer B.Cu) (net 0) (tstamp 5E47E0F1)) + (segment (start 193.962874 54.475334) (end 195.863874 54.475334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0F3)) + (segment (start 193.962874 53.375334) (end 195.828874 53.375334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0F6)) + (segment (start 193.708874 55.575334) (end 195.820874 55.575334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0F7)) + (segment (start 194.470874 52.320334) (end 194.851874 52.320334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0F9)) + (segment (start 156.117583 28.920137) (end 156.117583 29.980797) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 151.765 57.025792) (end 152.273 57.533792) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 154.305 55.753) (end 154.305 57.025792) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 167.64 53.975) (end 164.465 57.15) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 149.225 49.53) (end 149.225 53.34) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 149.225 53.34) (end 147.447 55.118) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 147.447 55.118) (end 145.542 55.118) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 145.542 55.118) (end 144.272 56.388) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 144.272 57.531) (end 140.97 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 137.287 58.801) (end 135.255 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 146.685 49.53) (end 146.685 51.689) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 164.465 49.53) (end 164.465 48.257208) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 164.465 48.257208) (end 163.832792 47.625) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 145.415 47.625) (end 144.653 48.387) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 172.085 57.658) (end 172.085 57.404) (width 0.59944) (layer B.Cu) (net 0)) + (via (at 166.243 30.734) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 168.783 30.734) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 139.827 30.099) (end 140.335 30.607) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 155.49138 30.607) (end 156.117583 29.980797) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 140.335 30.607) (end 155.49138 30.607) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 184.023 25.908) (end 184.023 33.274) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 139.573 36.322) (end 139.573 33.274) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 139.573 33.274) (end 134.493 33.274) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 184.023 33.274) (end 139.573 33.274) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 166.277583 30.699417) (end 166.243 30.734) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 166.277583 28.920137) (end 166.277583 30.699417) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 168.817583 30.699417) (end 168.783 30.734) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 168.817583 28.920137) (end 168.817583 30.699417) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 166.677582 24.710138) (end 166.678862 24.710138) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 166.277583 25.110137) (end 166.677582 24.710138) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 166.678862 24.710138) (end 167.894 23.495) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 187.071 23.495) (end 188.087 24.511) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 167.894 23.495) (end 187.071 23.495) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 188.087 24.511) (end 188.087 45.339) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 188.087 45.339) (end 187.392654 46.033346) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 163.070792 46.033346) (end 163.195 46.033346) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 161.197583 44.160137) (end 163.070792 46.033346) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 187.392654 46.033346) (end 163.195 46.033346) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 166.277583 44.160137) (end 166.277583 42.833583) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 166.277583 42.833583) (end 161.671 38.227) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 161.671 38.227) (end 150.114 38.227) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 150.114 38.227) (end 145.796 42.545) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 142.494 42.545) (end 139.573 45.466) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 145.796 42.545) (end 142.494 42.545) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 162.760238 36.83) (end 168.817583 42.887345) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 148.717 36.83) (end 162.760238 36.83) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 144.653 40.894) (end 148.717 36.83) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 168.817583 44.160137) (end 168.817583 42.887345) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 141.605 40.894) (end 134.493 40.894) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 147.193 35.306) (end 141.605 40.894) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 164.084 35.306) (end 147.193 35.306) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 171.357583 42.579583) (end 164.084 35.306) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 171.357583 44.160137) (end 171.357583 42.579583) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 173.897583 40.928583) (end 173.863 40.894) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 173.897583 44.160137) (end 173.897583 40.928583) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 176.437583 43.399417) (end 178.943 40.894) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 176.437583 44.160137) (end 176.437583 43.399417) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 182.24372 40.894) (end 184.023 40.894) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 178.977583 44.160137) (end 182.24372 40.894) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 158.657583 44.160137) (end 156.845 45.97272) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 156.845 45.97272) (end 141.86028 45.97272) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 141.86028 45.97272) (end 140.589 47.244) (width 0.59944) (layer B.Cu) (net 0)) + (via (at 181.483 30.734) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 181.517583 30.699417) (end 181.483 30.734) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 181.517583 28.920137) (end 181.517583 30.699417) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 181.483 30.734) (end 181.737 30.734) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 181.483 30.734) (end 182.372 31.623) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 153.577583 28.920137) (end 154.327582 28.170138) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 154.327582 28.170138) (end 154.328862 28.170138) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 133.220208 33.274) (end 131.318 33.274) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 134.493 33.274) (end 133.220208 33.274) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 131.318 33.274) (end 131.318 26.67) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 131.318 26.67) (end 134.62 23.368) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 154.375446 23.368) (end 156.117583 25.110137) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 134.62 23.368) (end 154.375446 23.368) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 136.141208 47.244) (end 140.589 47.244) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 135.636 46.738792) (end 136.141208 47.244) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 135.636 45.466) (end 135.636 46.738792) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 166.243 30.734) (end 165.608 30.734) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 165.608 30.734) (end 165.354 30.988) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 168.783 30.734) (end 168.275 30.734) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 168.783 30.734) (end 168.148 30.734) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 168.148 30.734) (end 167.64 31.242) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 167.005 51.308) (end 167.904999 52.207999) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 169.545 51.308) (end 170.444999 52.207999) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 172.085 51.435) (end 172.847 52.197) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 174.625 51.435) (end 175.387 52.197) (width 0.59944) (layer F.Cu) (net 0)) + (via (at 163.703 42.291) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 163.703 42.291) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E47F9DC)) + (via (at 163.703 42.291) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 158.623 23.495) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 158.623 25.075554) (end 158.657583 25.110137) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 158.623 23.241) (end 158.623 25.075554) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 158.623 23.241) (end 157.226 23.241) (width 0.59944) (layer F.Cu) (net 0)) + (via (at 156.083 42.291) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 156.083 44.125554) (end 156.117583 44.160137) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 156.083 42.291) (end 156.083 44.125554) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 156.982999 41.391001) (end 156.982999 41.264001) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 156.083 42.291) (end 156.982999 41.391001) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 156.982999 41.264001) (end 157.099 41.148) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 146.685 57.15) (end 146.685 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 149.225 57.658) (end 152.4 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 149.225 57.15) (end 149.225 57.658) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 158.115 59.560208) (end 158.115 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 152.664999 58.049999) (end 152.664999 58.811999) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 152.664999 58.811999) (end 153.162 59.309) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 153.289 59.436) (end 157.990792 59.436) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 151.765 57.15) (end 152.664999 58.049999) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 154.305 57.15) (end 154.305 58.039) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 161.671 58.547) (end 161.671 58.674) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 154.305 58.422792) (end 154.429208 58.547) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 161.671 58.674) (end 163.83 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 154.429208 58.547) (end 161.671 58.547) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 154.305 57.15) (end 154.305 58.422792) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 159.385 57.15) (end 159.385 55.88) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 161.925 57.15) (end 161.925 55.88) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 169.545 57.15) (end 169.545 55.88) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 142.875 55.499) (end 139.573 58.801) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 139.573 58.801) (end 137.287 58.801) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 146.685 51.689) (end 142.875 55.499) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 142.875 55.499) (end 142.24 56.134) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 144.272 56.388) (end 144.272 57.531) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 167.005 58.293) (end 169.545 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 167.005 57.15) (end 167.005 58.293) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 172.085 57.658) (end 175.26 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 172.085 57.15) (end 172.085 57.658) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 180.850792 59.436) (end 180.975 59.560208) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 174.625 58.422792) (end 175.638208 59.436) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 180.975 59.560208) (end 180.975 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 175.638208 59.436) (end 180.850792 59.436) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 174.625 57.15) (end 174.625 58.422792) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 185.928 58.674) (end 186.69 59.436) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 177.416208 58.547) (end 185.928 58.547) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 186.69 59.436) (end 186.69 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 177.165 57.15) (end 177.165 58.422792) (width 0.59944) (layer B.Cu) (net 0)) + (via (at 149.098 41.402) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 163.703 42.291) (end 162.803001 41.391001) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 162.697999 41.391001) (end 162.803001 41.391001) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 153.543 44.125554) (end 153.577583 44.160137) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 153.543 42.291) (end 153.543 44.125554) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 163.703 44.125554) (end 163.737583 44.160137) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 163.703 42.291) (end 163.703 44.125554) (width 0.59944) (layer B.Cu) (net 0)) + (via (at 151.003 25.146) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 149.098 25.146) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 149.098 25.146) (end 151.003 25.146) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 149.098 25.146) (end 147.825208 25.146) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 149.098 41.402) (end 153.035 41.402) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 153.577583 42.887345) (end 153.577583 44.160137) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 153.577583 41.944583) (end 153.577583 42.887345) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 153.035 41.402) (end 153.577583 41.944583) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 149.098 41.402) (end 149.098 41.275) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 149.098 41.402) (end 149.997999 40.502001) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 149.997999 40.269999) (end 149.997999 40.502001) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 155.067 27.432) (end 156.083 27.432) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 156.083 27.432) (end 155.575 27.432) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 154.328862 28.170138) (end 155.067 27.432) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 160.655 27.432) (end 156.083 27.432) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 161.197583 26.889417) (end 160.655 27.432) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 161.197583 25.110137) (end 161.197583 26.889417) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 163.737583 25.110137) (end 163.737583 26.831583) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 163.737583 26.831583) (end 164.338 27.432) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 164.338 27.432) (end 171.958 27.432) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 164.719 27.432) (end 171.958 27.432) (width 0.59944) (layer B.Cu) (net 0)) + (via (at 171.323 25.146) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 171.323 25.146) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A34)) + (via (at 171.323 25.146) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 173.228 25.146) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 171.323 25.146) (end 173.228 25.146) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 173.228 25.146) (end 174.500792 25.146) (width 0.59944) (layer F.Cu) (net 0)) + (via (at 119.519183 21.911625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A7E)) + (via (at 119.519183 24.451625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A7F)) + (via (at 119.519183 24.451625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A80)) + (via (at 119.519183 21.911625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A81)) + (via (at 119.519183 24.451625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A82)) + (segment (start 97.253711 24.451625) (end 78.172625 24.451625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482A83)) + (segment (start 97.536 21.911625) (end 119.519183 21.911625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482A84)) + (segment (start 96.405183 21.911625) (end 97.536 21.911625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482A85)) + (segment (start 97.536 21.911625) (end 78.037375 21.911625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482A86)) + (segment (start 97.253711 24.451625) (end 119.519183 24.451625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482A87)) + (via (at 119.519183 24.451625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A88)) + (via (at 119.519183 24.451625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A89)) + (via (at 119.519183 21.911625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A8A)) + (via (at 119.519183 21.911625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A8B)) + (via (at 119.519183 21.911625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A8C)) + (via (at 119.519183 24.451625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A8D)) + (via (at 119.519183 24.451625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A8E)) + (via (at 119.519183 21.911625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A8F)) + (via (at 119.519183 21.911625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A90)) + (segment (start 78.613 21.911625) (end 59.114375 21.911625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482ABF)) + (segment (start 78.613 24.451625) (end 59.114375 24.451625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482ABF)) + (segment (start 78.613 26.864625) (end 59.114375 26.864625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482ABF)) + (segment (start 78.613 29.404625) (end 59.114375 29.404625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482ABF)) + (segment (start 78.613 31.944625) (end 59.114375 31.944625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482ABF)) + (segment (start 78.613 34.484625) (end 59.114375 34.484625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482ABF)) + (segment (start 78.74 37.024625) (end 59.241375 37.024625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482ABF)) + (segment (start 78.74 39.564625) (end 59.241375 39.564625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482ABF)) + (segment (start 78.74 42.104625) (end 59.241375 42.104625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482ABF)) + (via (at 177.165 51.308) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 179.705 51.308) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 179.705 49.53) (end 179.705 51.435) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 177.165 49.53) (end 177.165 51.435) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 177.165 51.435) (end 177.165 51.943) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 167.005 49.53) (end 167.005 51.308) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 169.545 49.53) (end 169.545 51.308) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 172.085 49.53) (end 172.085 51.308) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 174.625 49.53) (end 174.625 51.308) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 179.705 51.308) (end 179.705 51.562) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 177.165 51.308) (end 177.165 52.580792) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 179.705 51.308) (end 179.705 52.451) (width 0.59944) (layer F.Cu) (net 0)) + (via (at 182.499 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 184.15 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 184.15 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 184.15 53.34) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 184.15 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 180.721 54.102) (end 182.499 55.88) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 180.594 53.975) (end 180.721 54.102) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 167.64 53.975) (end 180.594 53.975) (width 0.59944) (layer B.Cu) (net 0)) + (via (at 182.372 53.34) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 182.372 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 182.499 55.88) (end 182.499 57.152792) (width 0.59944) (layer F.Cu) (net 0)) + (via (at 182.372 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 163.832792 47.625) (end 163.449 47.625) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 163.449 47.625) (end 145.415 47.625) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 181.737 47.625) (end 182.372 48.26) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 163.449 47.625) (end 181.737 47.625) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 182.372 48.26) (end 184.15 48.26) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 182.372 50.8) (end 184.15 50.8) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 182.372 53.34) (end 184.15 53.34) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 182.499 55.88) (end 184.15 55.88) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 184.15 50.8) (end 185.166 50.8) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 184.15 53.34) (end 185.293 53.34) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 145.415 47.625) (end 138.43 54.61) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 131.318 47.498) (end 131.318 46.609) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 138.43 54.61) (end 131.318 47.498) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 131.318 46.609) (end 131.318 33.274) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 137.530001 51.170001) (end 133.604 47.244) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 138.43 52.07) (end 137.530001 51.170001) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 133.604 45.466) (end 133.604 47.244) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 180.467 31.623) (end 180.477999 31.633999) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 152.677584 26.010136) (end 152.677584 26.011416) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 148.59 32.258) (end 172.085 32.258) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 180.583001 31.633999) (end 181.483 30.734) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 139.065 31.623) (end 147.955 31.623) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 137.795 30.353) (end 139.065 31.623) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 172.72 31.623) (end 180.467 31.623) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 172.085 32.258) (end 172.72 31.623) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 137.795 27.559) (end 137.795 30.353) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 180.477999 31.633999) (end 180.583001 31.633999) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 153.577583 25.110137) (end 152.677584 26.010136) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 138.684 26.67) (end 137.795 27.559) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 147.955 31.623) (end 148.59 32.258) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 152.677584 26.011416) (end 152.019 26.67) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 152.019 26.67) (end 138.684 26.67) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 169.291 26.543) (end 177.421792 26.543) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 168.817583 26.069583) (end 169.291 26.543) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 168.817583 25.110137) (end 168.817583 26.069583) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 176.437583 28.920137) (end 175.133 27.615554) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 174.949446 27.432) (end 175.133 27.615554) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 172.974 27.432) (end 174.949446 27.432) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 171.958 27.432) (end 172.974 27.432) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 172.974 27.432) (end 173.736 27.432) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 178.977583 28.098791) (end 177.421792 26.543) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 178.977583 28.920137) (end 178.977583 28.098791) (width 0.59944) (layer B.Cu) (net 0)) + +) diff --git a/MCUME_teensy/pcb_t4/mcumev4minkeys7789.pro b/MCUME_teensy/pcb_t4/mcumev4minkeys7789.pro new file mode 100644 index 0000000..152769c --- /dev/null +++ b/MCUME_teensy/pcb_t4/mcumev4minkeys7789.pro @@ -0,0 +1,33 @@ +update=22/05/2015 07:44:53 +version=1 +last_client=kicad +[general] +version=1 +RootSch= +BoardNm= +[pcbnew] +version=1 +LastNetListRead= +UseCmpFile=1 +PadDrill=0.600000000000 +PadDrillOvalY=0.600000000000 +PadSizeH=1.500000000000 +PadSizeV=1.500000000000 +PcbTextSizeV=1.500000000000 +PcbTextSizeH=1.500000000000 +PcbTextThickness=0.300000000000 +ModuleTextSizeV=1.000000000000 +ModuleTextSizeH=1.000000000000 +ModuleTextSizeThickness=0.150000000000 +SolderMaskClearance=0.000000000000 +SolderMaskMinWidth=0.000000000000 +DrawSegmentWidth=0.200000000000 +BoardOutlineThickness=0.100000000000 +ModuleOutlineThickness=0.150000000000 +[cvpcb] +version=1 +NetIExt=net +[eeschema] +version=1 +LibDir= +[eeschema/libraries] diff --git a/MCUME_teensy/pcb_t4/mcumev4minkeys9341.kicad_pcb b/MCUME_teensy/pcb_t4/mcumev4minkeys9341.kicad_pcb new file mode 100644 index 0000000..f202b0f --- /dev/null +++ b/MCUME_teensy/pcb_t4/mcumev4minkeys9341.kicad_pcb @@ -0,0 +1,1348 @@ +(kicad_pcb (version 20171130) (host pcbnew "(5.0.1-3-g963ef8bb5)") + + (general + (thickness 1.6) + (drawings 12) + (tracks 1118) + (zones 0) + (modules 1) + (nets 1) + ) + + (page A4) + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.59944) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (segment_width 0.2) + (edge_width 0.15) + (via_size 1.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.15) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.051) + (solder_mask_min_width 0.25) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes false) + (usegerberadvancedattributes false) + (creategerberjobfile false) + (excludeedgelayer true) + (linewidth 0.150000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.59944) + (via_dia 1.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + ) + + (net_class neti "" + (clearance 0.2) + (trace_width 0.59944) + (via_dia 3) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + ) + + (module Connector_Card:microSD_HC_Hirose_DM3D-SF (layer B.Cu) (tedit 5B82D16A) (tstamp 5DE970AC) + (at 68.707 72.644 180) + (descr "Micro SD, SMD, right-angle, push-pull (https://media.digikey.com/PDF/Data%20Sheets/Hirose%20PDFs/DM3D-SF.pdf)") + (tags "Micro SD") + (attr smd) + (fp_text reference REF** (at -0.025 7.625 180) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value microSD_HC_Hirose_DM3D-SF (at -0.025 -6.975 180) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_arc (start 5.475 -5.475) (end 5.475 -5.725) (angle -90) (layer B.Fab) (width 0.1)) + (fp_arc (start 4.725 -4.425) (end 4.725 -3.925) (angle -90) (layer B.Fab) (width 0.1)) + (fp_arc (start -5.525 -5.475) (end -5.275 -5.475) (angle -90) (layer B.Fab) (width 0.1)) + (fp_arc (start -4.775 -4.425) (end -5.275 -4.425) (angle -90) (layer B.Fab) (width 0.1)) + (fp_arc (start -5.025 -9.575) (end -5.025 -10.075) (angle -90) (layer B.Fab) (width 0.1)) + (fp_arc (start 4.975 -9.575) (end 5.475 -9.575) (angle -90) (layer B.Fab) (width 0.1)) + (fp_line (start 6.325 5.785) (end 6.435 5.785) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.525 5.725) (end -1.975 5.725) (layer Dwgs.User) (width 0.1)) + (fp_line (start 6.375 -5.725) (end 6.375 5.725) (layer B.Fab) (width 0.1)) + (fp_line (start 3.575 -0.475) (end 3.575 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start 3.075 -0.475) (end 3.575 0.975) (layer Dwgs.User) (width 0.1)) + (fp_line (start 2.575 -0.475) (end 3.275 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start 2.075 -0.475) (end 2.775 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start 1.575 -0.475) (end 2.275 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start 1.075 -0.475) (end 1.775 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start 0.575 -0.475) (end 1.275 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start 0.075 -0.475) (end 0.775 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -0.425 -0.475) (end 0.275 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -0.925 -0.475) (end -0.225 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -1.425 -0.475) (end -0.725 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -1.925 -0.475) (end -1.225 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -2.425 -0.475) (end -1.725 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -2.925 -0.475) (end -2.225 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -3.425 -0.475) (end -2.725 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -4.425 -0.475) (end -3.725 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -6.375 -5.725) (end -6.375 5.725) (layer B.Fab) (width 0.1)) + (fp_line (start -4.925 -0.475) (end 3.575 -0.475) (layer Dwgs.User) (width 0.1)) + (fp_line (start 0.525 3.875) (end -1.975 3.875) (layer Dwgs.User) (width 0.1)) + (fp_line (start -4.925 1.525) (end 3.575 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -6.92 6.72) (end 6.88 6.72) (layer B.CrtYd) (width 0.05)) + (fp_line (start 6.88 6.72) (end 6.88 -6.28) (layer B.CrtYd) (width 0.05)) + (fp_line (start 6.88 -6.28) (end -6.92 -6.28) (layer B.CrtYd) (width 0.05)) + (fp_line (start -6.92 -6.28) (end -6.92 6.72) (layer B.CrtYd) (width 0.05)) + (fp_line (start -4.925 1.525) (end -4.925 -0.475) (layer Dwgs.User) (width 0.1)) + (fp_line (start -4.925 -0.475) (end -4.225 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -4.225 1.525) (end -3.725 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -3.925 -0.475) (end -3.225 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -3.225 1.525) (end -2.725 1.525) (layer Dwgs.User) (width 0.1)) + (fp_line (start -6.375 5.725) (end 6.375 5.725) (layer B.Fab) (width 0.1)) + (fp_line (start -1.975 5.725) (end -1.975 3.875) (layer Dwgs.User) (width 0.1)) + (fp_line (start 0.525 3.875) (end 0.525 5.725) (layer Dwgs.User) (width 0.1)) + (fp_line (start -1.925 3.875) (end -1.525 5.725) (layer Dwgs.User) (width 0.1)) + (fp_line (start -1.025 5.725) (end -1.525 3.875) (layer Dwgs.User) (width 0.1)) + (fp_line (start -1.025 3.875) (end -0.525 5.725) (layer Dwgs.User) (width 0.1)) + (fp_line (start -0.025 5.725) (end -0.525 3.875) (layer Dwgs.User) (width 0.1)) + (fp_line (start -0.025 3.875) (end 0.475 5.725) (layer Dwgs.User) (width 0.1)) + (fp_line (start -5.525 6.975) (end 4.175 6.975) (layer B.Fab) (width 0.1)) + (fp_line (start 4.175 5.725) (end 4.175 6.975) (layer B.Fab) (width 0.1)) + (fp_line (start -5.525 5.725) (end -5.525 6.975) (layer B.Fab) (width 0.1)) + (fp_line (start -4.775 -3.925) (end 4.725 -3.925) (layer B.Fab) (width 0.1)) + (fp_line (start -6.375 -5.725) (end -5.525 -5.725) (layer B.Fab) (width 0.1)) + (fp_line (start -5.275 -5.475) (end -5.275 -4.425) (layer B.Fab) (width 0.1)) + (fp_line (start 5.225 -5.475) (end 5.225 -4.425) (layer B.Fab) (width 0.1)) + (fp_line (start 5.475 -5.725) (end 6.375 -5.725) (layer B.Fab) (width 0.1)) + (fp_line (start -5.525 -5.725) (end -5.525 -9.575) (layer B.Fab) (width 0.1)) + (fp_line (start -5.025 -10.075) (end 4.975 -10.075) (layer B.Fab) (width 0.1)) + (fp_line (start 5.475 -9.575) (end 5.475 -5.725) (layer B.Fab) (width 0.1)) + (fp_line (start -6.435 4.625) (end -6.435 5.785) (layer B.SilkS) (width 0.12)) + (fp_line (start -6.435 5.785) (end 4.825 5.785) (layer B.SilkS) (width 0.12)) + (fp_line (start 6.435 5.785) (end 6.435 3.975) (layer B.SilkS) (width 0.12)) + (fp_line (start -6.435 1.375) (end -6.435 -4.225) (layer B.SilkS) (width 0.12)) + (fp_line (start 6.435 2.075) (end 6.435 -4.225) (layer B.SilkS) (width 0.12)) + (fp_text user KEEPOUT (at -0.725 4.8 180) (layer Cmts.User) + (effects (font (size 0.4 0.4) (thickness 0.06))) + ) + (fp_text user %R (at -0.025 -1.475 180) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.1)) (justify mirror)) + ) + (fp_text user KEEPOUT (at -0.275 0.525 180) (layer Cmts.User) + (effects (font (size 1 1) (thickness 0.1))) + ) + (pad 10 smd rect (at 5.575 5.45 180) (size 1 1.55) (layers B.Cu B.Paste B.Mask)) + (pad 11 smd rect (at 5.625 -5.225 180) (size 1.5 1.5) (layers B.Cu B.Paste B.Mask)) + (pad 1 smd rect (at 3.175 -5.35 180) (size 0.7 1.75) (layers B.Cu B.Paste B.Mask)) + (pad 2 smd rect (at 2.075 -5.35 180) (size 0.7 1.75) (layers B.Cu B.Paste B.Mask)) + (pad 3 smd rect (at 0.975 -5.35 180) (size 0.7 1.75) (layers B.Cu B.Paste B.Mask)) + (pad 4 smd rect (at -0.125 -5.35 180) (size 0.7 1.75) (layers B.Cu B.Paste B.Mask)) + (pad 5 smd rect (at -1.225 -5.35 180) (size 0.7 1.75) (layers B.Cu B.Paste B.Mask)) + (pad 6 smd rect (at -2.325 -5.35 180) (size 0.7 1.75) (layers B.Cu B.Paste B.Mask)) + (pad 7 smd rect (at -3.425 -5.35 180) (size 0.7 1.75) (layers B.Cu B.Paste B.Mask)) + (pad 11 smd rect (at 5.975 3.025 180) (size 0.8 1.4) (layers B.Cu B.Paste B.Mask)) + (pad 9 smd rect (at -5.65 3.875 180) (size 1.45 1) (layers B.Cu B.Paste B.Mask)) + (pad 11 smd rect (at -5.975 2.375 180) (size 0.8 1.5) (layers B.Cu B.Paste B.Mask)) + (pad 11 smd rect (at -5.725 -5.225 180) (size 1.3 1.5) (layers B.Cu B.Paste B.Mask)) + (pad 8 smd rect (at -4.525 -5.35 180) (size 0.7 1.75) (layers B.Cu B.Paste B.Mask)) + (model ${KISYS3DMOD}/Connector_Card.3dshapes/microSD_HC_Hirose_DM3D-SF.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (gr_line (start 129.921 90.551) (end 129.921 22.225) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 189.738 90.551) (end 129.921 90.551) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 189.738 22.225) (end 189.738 90.551) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 130.048 22.225) (end 189.738 22.225) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 79.248 68.199) (end 97.409 68.199) (layer Edge.Cuts) (width 0.15) (tstamp 5DE979D2)) + (gr_line (start 79.248 89.916) (end 97.155 89.916) (layer Edge.Cuts) (width 0.15) (tstamp 5DE979D1)) + (gr_line (start 79.248 68.199) (end 79.248 89.789) (layer Edge.Cuts) (width 0.15) (tstamp 5DE9797E)) + (gr_line (start 97.282 68.326) (end 97.282 89.916) (layer Edge.Cuts) (width 0.15) (tstamp 5DE9797D)) + (gr_line (start 59.69 68.199) (end 77.851 68.199) (layer Edge.Cuts) (width 0.15) (tstamp 5DE97775)) + (gr_line (start 59.69 89.916) (end 77.597 89.916) (layer Edge.Cuts) (width 0.15) (tstamp 5DE97775)) + (gr_line (start 59.69 68.199) (end 59.69 89.789) (layer Edge.Cuts) (width 0.15) (tstamp 5DE95758)) + (gr_line (start 77.724 68.199) (end 77.724 89.789) (layer Edge.Cuts) (width 0.15) (tstamp 5DE95757)) + + (via (at 176.437583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D07)) + (via (at 186.597583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D08)) + (via (at 156.117583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1A)) + (via (at 173.897583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1B)) + (via (at 176.437583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1C)) + (via (at 178.977583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1D)) + (via (at 173.897583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1E)) + (via (at 186.597583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1F)) + (via (at 178.977583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D20)) + (via (at 181.517583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D21)) + (via (at 184.057583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D22)) + (via (at 176.437583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D23)) + (via (at 181.517583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D24)) + (via (at 186.597583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D25)) + (via (at 186.597583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D26)) + (via (at 184.057583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D27)) + (via (at 184.057583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D28)) + (via (at 176.437583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D29)) + (via (at 178.977583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2A)) + (via (at 158.657583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2B)) + (via (at 158.657583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2C)) + (via (at 171.357583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2D)) + (via (at 181.517583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2E)) + (via (at 178.977583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2F)) + (via (at 184.057583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D30)) + (via (at 181.517583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D31)) + (via (at 173.897583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D32)) + (via (at 173.897583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D33)) + (via (at 171.357583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D34)) + (via (at 171.357583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D35)) + (via (at 168.817583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D36)) + (via (at 168.817583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D37)) + (via (at 166.277583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D38)) + (via (at 166.277583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D39)) + (via (at 163.737583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3A)) + (via (at 163.737583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3B)) + (via (at 161.197583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3C)) + (via (at 161.197583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3D)) + (via (at 158.657583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3E)) + (via (at 158.657583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3F)) + (via (at 156.117583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D40)) + (via (at 158.657583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D41)) + (via (at 156.117583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D42)) + (via (at 163.737583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D43)) + (via (at 153.577583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D44)) + (via (at 153.577583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D45)) + (via (at 161.197583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D46)) + (via (at 153.577583 28.920137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D47)) + (via (at 153.577583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D48)) + (via (at 153.577583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D49)) + (via (at 153.577583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4A)) + (via (at 156.117583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4B)) + (via (at 176.437583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4C)) + (via (at 156.117583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4D)) + (via (at 186.597583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4F)) + (via (at 184.057583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D50)) + (via (at 181.517583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D51)) + (via (at 153.577583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D52)) + (via (at 153.577583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D53)) + (via (at 156.117583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D54)) + (via (at 156.117583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D55)) + (via (at 173.897583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D56)) + (via (at 166.277583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D57)) + (via (at 158.657583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D58)) + (via (at 158.657583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D59)) + (via (at 161.197583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5A)) + (via (at 161.197583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5B)) + (via (at 163.737583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5C)) + (via (at 163.737583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5D)) + (via (at 166.277583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5E)) + (via (at 166.277583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5F)) + (via (at 168.817583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D60)) + (via (at 168.817583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D61)) + (via (at 171.357583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D62)) + (via (at 171.357583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D63)) + (via (at 173.897583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D64)) + (via (at 173.897583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D65)) + (via (at 176.437583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D66)) + (via (at 184.057583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D67)) + (via (at 186.597583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D68)) + (via (at 176.437583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D69)) + (via (at 156.117583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6A)) + (via (at 161.197583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6B)) + (via (at 153.577583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6C)) + (via (at 176.437583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6D)) + (via (at 153.577583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6E)) + (via (at 173.897583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6F)) + (via (at 158.657583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D71)) + (via (at 176.437583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D72)) + (via (at 171.357583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D73)) + (via (at 168.817583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D74)) + (via (at 166.277583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D75)) + (via (at 163.737583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D76)) + (via (at 161.197583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D77)) + (via (at 171.357583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D78)) + (via (at 178.977583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D79)) + (via (at 168.817583 44.160137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7A)) + (via (at 181.517583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7B)) + (via (at 186.597583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7C)) + (via (at 153.577583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7D)) + (via (at 153.577583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7E)) + (via (at 176.437583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7F)) + (via (at 178.977583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D80)) + (via (at 178.977583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D81)) + (via (at 181.517583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D82)) + (via (at 181.517583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D83)) + (via (at 184.057583 28.920137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D84)) + (via (at 168.817583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D85)) + (via (at 171.357583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D86)) + (via (at 178.977583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D87)) + (via (at 161.197583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D88)) + (via (at 163.737583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D89)) + (via (at 184.057583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8A)) + (via (at 163.737583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8B)) + (via (at 186.597583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8C)) + (via (at 166.277583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8D)) + (via (at 166.277583 28.920137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8E)) + (via (at 168.817583 28.920137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8F)) + (via (at 153.577583 25.110137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9A)) + (via (at 158.657583 25.110137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9B)) + (via (at 158.657583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9C)) + (via (at 153.577583 25.110137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9D)) + (via (at 153.577583 25.110137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9E)) + (via (at 153.577583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9F)) + (via (at 153.577583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA0)) + (via (at 156.117583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA1)) + (via (at 168.817583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA2)) + (via (at 153.577583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA3)) + (via (at 156.117583 25.110137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA4)) + (via (at 156.117583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA5)) + (via (at 156.117583 25.110137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA6)) + (via (at 153.577583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA7)) + (via (at 158.657583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA8)) + (via (at 158.657583 25.110137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA9)) + (via (at 163.737583 25.110137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAA)) + (via (at 166.277583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAB)) + (via (at 158.657583 25.110137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAC)) + (via (at 163.737583 25.110137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAD)) + (via (at 163.737583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAE)) + (via (at 166.277583 25.110137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAF)) + (via (at 156.117583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB0)) + (via (at 153.577583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB1)) + (via (at 168.817583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB2)) + (via (at 166.277583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB3)) + (via (at 163.737583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB4)) + (via (at 161.197583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB5)) + (via (at 166.277583 25.110137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB6)) + (via (at 166.277583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB7)) + (via (at 163.737583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB8)) + (via (at 168.817583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB9)) + (via (at 163.737583 25.110137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBA)) + (via (at 153.577583 25.110137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBB)) + (via (at 153.577583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBC)) + (via (at 161.197583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBD)) + (via (at 158.657583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBE)) + (via (at 161.197583 25.110137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBF)) + (via (at 168.817583 25.110137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC0)) + (via (at 168.817583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC1)) + (via (at 161.197583 25.110137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC2)) + (via (at 161.197583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC3)) + (via (at 166.277583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC4)) + (via (at 156.117583 25.110137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC5)) + (via (at 156.117583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC6)) + (via (at 158.657583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC7)) + (via (at 161.197583 25.110137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC8)) + (via (at 163.737583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC9)) + (via (at 166.277583 25.110137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FCA)) + (via (at 153.577583 25.110137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FCB)) + (via (at 161.197583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FCC)) + (via (at 168.817583 25.110137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0661A3)) + (via (at 168.817583 25.110137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 184.023 33.274) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 184.023 40.894) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 178.943 40.894) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 173.863 40.894) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 178.943 33.274) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 173.863 33.274) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 184.057583 33.239417) (end 184.023 33.274) (width 1) (layer B.Cu) (net 0)) + (segment (start 144.687583 33.239417) (end 144.653 33.274) (width 1) (layer B.Cu) (net 0) (tstamp 5E0772AE)) + (via (at 144.653 33.274) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0772B0)) + (segment (start 134.527583 33.112417) (end 134.493 33.147) (width 1) (layer B.Cu) (net 0) (tstamp 5E0772AE)) + (via (at 134.493 33.274) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0772B0)) + (via (at 134.493 40.894) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0772B1)) + (via (at 144.653 40.894) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0772B1)) + (via (at 139.573 28.956) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E07763C)) + (via (at 139.573 36.322) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E07763D)) + (segment (start 139.607583 37.811417) (end 139.573 37.846) (width 1) (layer B.Cu) (net 0) (tstamp 5E07763B)) + (via (at 139.573 37.846) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E07763C)) + (via (at 139.573 45.466) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E07763D)) + (segment (start 134.62 33.274) (end 134.493 33.147) (width 1) (layer B.Cu) (net 0)) + (segment (start 184.023 25.908) (end 184.023 25.908) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 139.573 29.083) (end 139.573 29.591) (width 0.8) (layer B.Cu) (net 0)) + (via (at 184.023 25.908) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 186.563 25.908) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 186.563 28.885554) (end 186.597583 28.920137) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 186.563 25.908) (end 186.563 28.885554) (width 0.8) (layer B.Cu) (net 0)) + (via (at 119.519183 42.104625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FCC)) + (via (at 119.519183 37.024625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FCD)) + (via (at 119.519183 37.024625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FCE)) + (via (at 119.519183 42.104625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FCF)) + (via (at 119.519183 42.104625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD0)) + (via (at 119.519183 42.104625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD1)) + (via (at 119.519183 42.104625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD2)) + (via (at 119.519183 39.564625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD3)) + (via (at 119.519183 26.864625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD4)) + (via (at 119.519183 42.104625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD5)) + (via (at 119.519183 39.564625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD6)) + (via (at 119.519183 39.564625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD7)) + (via (at 119.519183 39.564625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD8)) + (via (at 119.519183 42.104625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD9)) + (via (at 119.519183 37.024625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDA)) + (via (at 119.519183 37.024625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDB)) + (via (at 119.519183 31.944625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDC)) + (via (at 119.519183 29.404625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDD)) + (via (at 119.519183 37.024625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDE)) + (via (at 119.519183 31.944625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDF)) + (via (at 119.519183 31.944625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE0)) + (via (at 119.519183 29.404625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE1)) + (via (at 119.519183 39.564625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE2)) + (via (at 119.519183 42.104625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE3)) + (via (at 119.519183 26.864625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE4)) + (via (at 119.519183 29.404625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE5)) + (via (at 119.519183 31.944625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE6)) + (via (at 119.519183 34.484625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE7)) + (via (at 119.519183 29.404625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE8)) + (via (at 119.519183 29.404625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE9)) + (via (at 119.519183 31.944625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEA)) + (via (at 119.519183 26.864625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEB)) + (via (at 119.519183 31.944625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEC)) + (via (at 119.519183 42.104625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FED)) + (via (at 119.519183 42.104625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEE)) + (via (at 119.519183 34.484625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEF)) + (via (at 119.519183 37.024625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF0)) + (via (at 119.519183 34.484625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF1)) + (via (at 119.519183 26.864625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF2)) + (via (at 119.519183 26.864625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF3)) + (via (at 119.519183 34.484625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF4)) + (via (at 119.519183 34.484625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF5)) + (via (at 119.519183 29.404625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF6)) + (via (at 119.519183 39.564625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF7)) + (via (at 119.519183 39.564625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF8)) + (via (at 119.519183 37.024625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF9)) + (via (at 119.519183 34.484625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFA)) + (via (at 119.519183 31.944625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFB)) + (via (at 119.519183 29.404625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFC)) + (via (at 119.519183 42.104625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFD)) + (via (at 119.519183 34.484625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFE)) + (via (at 119.519183 26.864625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFF)) + (via (at 119.519183 26.864625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5000)) + (segment (start 97.253711 29.404625) (end 119.519183 29.404625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 31.944625) (end 119.519183 31.944625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 34.484625) (end 119.519183 34.484625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 37.024625) (end 119.519183 37.024625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 39.564625) (end 119.519183 39.564625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 42.104625) (end 119.519183 42.104625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 97.536 26.864625) (end 78.037375 26.864625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 26.864625) (end 97.536 26.864625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 97.536 26.864625) (end 119.519183 26.864625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 97.253711 29.404625) (end 78.172625 29.404625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 31.944625) (end 78.164375 31.944625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 34.484625) (end 78.299625 34.484625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 37.024625) (end 78.299625 37.024625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 39.564625) (end 78.164375 39.564625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 96.405183 42.104625) (end 78.291375 42.104625) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 144.145 65.278) (end 142.875 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46888F)) + (segment (start 144.145 64.643) (end 144.145 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468890)) + (via (at 144.145 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468891)) + (via (at 146.685 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468892)) + (via (at 146.685 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468893)) + (via (at 144.145 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468894)) + (via (at 142.875 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468895)) + (via (at 142.875 62.738) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468896)) + (segment (start 149.86 65.278) (end 148.59 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46888F)) + (segment (start 149.86 64.643) (end 149.86 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468890)) + (via (at 149.86 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468891)) + (via (at 152.4 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468892)) + (via (at 152.4 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468893)) + (via (at 149.86 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468894)) + (via (at 148.59 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468895)) + (via (at 148.59 62.8015) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468896)) + (segment (start 138.43 65.278) (end 137.16 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46888F)) + (segment (start 138.43 64.643) (end 138.43 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468890)) + (via (at 138.43 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468891)) + (via (at 140.97 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468892)) + (via (at 140.97 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468893)) + (via (at 138.43 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468894)) + (via (at 137.16 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468895)) + (via (at 137.16 62.8015) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468896)) + (segment (start 132.715 65.278) (end 131.445 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46888F)) + (segment (start 132.715 64.643) (end 132.715 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468890)) + (via (at 135.255 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468892)) + (via (at 135.255 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468893)) + (via (at 132.715 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468894)) + (via (at 131.445 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468895)) + (via (at 131.445 62.8015) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468896)) + (segment (start 161.29 65.278) (end 160.02 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A2D)) + (via (at 163.83 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A2E)) + (via (at 160.02 62.8015) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A2F)) + (via (at 163.83 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A30)) + (via (at 161.29 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A31)) + (via (at 161.29 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A32)) + (segment (start 161.29 64.643) (end 161.29 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A33)) + (via (at 160.02 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A34)) + (via (at 154.305 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A35)) + (via (at 155.575 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A36)) + (via (at 154.305 62.8015) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A37)) + (via (at 158.115 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A38)) + (segment (start 155.575 64.643) (end 155.575 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A39)) + (segment (start 155.575 65.278) (end 154.305 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A3A)) + (via (at 155.575 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A3B)) + (via (at 158.115 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A3C)) + (segment (start 172.72 64.643) (end 172.72 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A3D)) + (segment (start 172.72 65.278) (end 171.45 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A3E)) + (segment (start 178.435 64.643) (end 178.435 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A3F)) + (segment (start 178.435 65.278) (end 177.165 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A40)) + (via (at 172.72 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A41)) + (via (at 172.72 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A42)) + (via (at 175.26 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A43)) + (via (at 178.435 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A44)) + (via (at 177.165 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A45)) + (via (at 171.45 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A46)) + (via (at 178.435 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A47)) + (via (at 180.975 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A48)) + (via (at 175.26 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A49)) + (via (at 177.165 62.8015) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A4A)) + (via (at 180.975 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A4B)) + (via (at 171.45 62.738) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A4C)) + (via (at 165.735 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A4D)) + (via (at 169.545 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A4E)) + (via (at 167.005 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A4F)) + (via (at 165.735 62.8015) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A50)) + (via (at 169.545 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A51)) + (segment (start 167.005 64.643) (end 167.005 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A52)) + (segment (start 167.005 65.278) (end 165.735 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468A53)) + (via (at 167.005 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468A54)) + (segment (start 131.445 62.8015) (end 182.8165 62.8015) (width 0.8) (layer B.Cu) (net 0)) + (via (at 132.715 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468891)) + (segment (start 132.715 72.898) (end 131.445 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BCD)) + (via (at 135.255 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BCE)) + (via (at 131.445 70.4215) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BCF)) + (via (at 135.255 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD0)) + (via (at 132.715 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD1)) + (via (at 132.715 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD2)) + (segment (start 132.715 72.263) (end 132.715 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BD3)) + (via (at 131.445 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD4)) + (segment (start 155.575 72.263) (end 155.575 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BD5)) + (segment (start 167.005 72.898) (end 165.735 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BD6)) + (via (at 155.575 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD7)) + (via (at 161.29 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD8)) + (via (at 154.305 70.4215) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD9)) + (via (at 171.45 70.358) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDA)) + (via (at 172.72 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDB)) + (via (at 172.72 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDC)) + (via (at 175.26 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDD)) + (via (at 154.305 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDE)) + (via (at 169.545 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDF)) + (via (at 167.005 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE0)) + (via (at 163.83 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE1)) + (via (at 165.735 70.4215) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE2)) + (via (at 158.115 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE3)) + (via (at 169.545 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE4)) + (via (at 178.435 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE5)) + (via (at 163.83 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE6)) + (via (at 165.735 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE7)) + (via (at 177.165 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE8)) + (segment (start 178.435 72.263) (end 178.435 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BE9)) + (segment (start 161.29 72.898) (end 160.02 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEA)) + (segment (start 161.29 72.263) (end 161.29 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEB)) + (segment (start 167.005 72.263) (end 167.005 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEC)) + (segment (start 172.72 72.898) (end 171.45 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BED)) + (segment (start 178.435 72.898) (end 177.165 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEE)) + (segment (start 172.72 72.263) (end 172.72 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEF)) + (segment (start 155.575 72.898) (end 154.305 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BF0)) + (via (at 167.005 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF1)) + (via (at 160.02 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF2)) + (via (at 161.29 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF3)) + (via (at 155.575 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF4)) + (via (at 158.115 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF5)) + (via (at 160.02 70.4215) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF6)) + (via (at 171.45 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF7)) + (via (at 178.435 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF8)) + (via (at 180.975 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF9)) + (via (at 175.26 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BFA)) + (via (at 177.165 70.4215) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BFB)) + (via (at 180.975 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BFC)) + (segment (start 144.145 72.263) (end 144.145 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BFD)) + (segment (start 144.145 72.898) (end 142.875 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BFE)) + (segment (start 149.86 72.263) (end 149.86 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BFF)) + (segment (start 149.86 72.898) (end 148.59 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C00)) + (segment (start 131.445 70.4215) (end 182.8165 70.4215) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C01)) + (via (at 144.145 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C02)) + (via (at 144.145 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C03)) + (via (at 146.685 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C04)) + (via (at 149.86 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C05)) + (via (at 148.59 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C06)) + (via (at 142.875 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C07)) + (via (at 149.86 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C08)) + (via (at 152.4 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C09)) + (via (at 146.685 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0A)) + (via (at 148.59 70.4215) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0B)) + (via (at 152.4 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0C)) + (via (at 142.875 70.358) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0D)) + (via (at 137.16 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0E)) + (via (at 140.97 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0F)) + (via (at 138.43 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C10)) + (via (at 137.16 70.4215) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C11)) + (via (at 140.97 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C12)) + (segment (start 138.43 72.263) (end 138.43 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C13)) + (segment (start 138.43 72.898) (end 137.16 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C14)) + (via (at 138.43 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C15)) + (segment (start 132.715 80.518) (end 131.445 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BCD)) + (via (at 135.255 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BCE)) + (via (at 131.445 78.0415) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BCF)) + (via (at 135.255 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD0)) + (via (at 132.715 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD1)) + (via (at 132.715 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD2)) + (segment (start 132.715 79.883) (end 132.715 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BD3)) + (via (at 131.445 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD4)) + (segment (start 155.575 79.883) (end 155.575 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BD5)) + (segment (start 167.005 80.518) (end 165.735 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BD6)) + (via (at 155.575 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD7)) + (via (at 161.29 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD8)) + (via (at 154.305 78.0415) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD9)) + (via (at 171.45 77.978) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDA)) + (via (at 172.72 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDB)) + (via (at 172.72 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDC)) + (via (at 175.26 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDD)) + (via (at 154.305 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDE)) + (via (at 169.545 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDF)) + (via (at 167.005 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE0)) + (via (at 163.83 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE1)) + (via (at 165.735 78.0415) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE2)) + (via (at 158.115 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE3)) + (via (at 169.545 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE4)) + (via (at 178.435 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE5)) + (via (at 163.83 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE6)) + (via (at 165.735 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE7)) + (via (at 177.165 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE8)) + (segment (start 178.435 79.883) (end 178.435 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BE9)) + (segment (start 161.29 80.518) (end 160.02 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEA)) + (segment (start 161.29 79.883) (end 161.29 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEB)) + (segment (start 167.005 79.883) (end 167.005 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEC)) + (segment (start 172.72 80.518) (end 171.45 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BED)) + (segment (start 178.435 80.518) (end 177.165 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEE)) + (segment (start 172.72 79.883) (end 172.72 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEF)) + (segment (start 155.575 80.518) (end 154.305 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BF0)) + (via (at 167.005 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF1)) + (via (at 160.02 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF2)) + (via (at 161.29 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF3)) + (via (at 155.575 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF4)) + (via (at 158.115 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF5)) + (via (at 160.02 78.0415) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF6)) + (via (at 171.45 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF7)) + (via (at 178.435 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF8)) + (via (at 180.975 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF9)) + (via (at 175.26 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BFA)) + (via (at 177.165 78.0415) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BFB)) + (via (at 180.975 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BFC)) + (segment (start 144.145 79.883) (end 144.145 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BFD)) + (segment (start 144.145 80.518) (end 142.875 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BFE)) + (segment (start 149.86 79.883) (end 149.86 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BFF)) + (segment (start 149.86 80.518) (end 148.59 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C00)) + (segment (start 131.445 78.0415) (end 182.8165 78.0415) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C01)) + (via (at 144.145 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C02)) + (via (at 144.145 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C03)) + (via (at 146.685 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C04)) + (via (at 149.86 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C05)) + (via (at 148.59 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C06)) + (via (at 142.875 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C07)) + (via (at 149.86 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C08)) + (via (at 152.4 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C09)) + (via (at 146.685 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0A)) + (via (at 148.59 78.0415) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0B)) + (via (at 152.4 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0C)) + (via (at 142.875 77.978) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0D)) + (via (at 137.16 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0E)) + (via (at 140.97 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0F)) + (via (at 138.43 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C10)) + (via (at 137.16 78.0415) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C11)) + (via (at 140.97 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C12)) + (segment (start 138.43 79.883) (end 138.43 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C13)) + (segment (start 138.43 80.518) (end 137.16 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C14)) + (via (at 138.43 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C15)) + (segment (start 132.715 88.138) (end 131.445 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BCD)) + (via (at 135.255 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BCE)) + (via (at 131.445 85.6615) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BCF)) + (via (at 135.255 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD0)) + (via (at 132.715 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD1)) + (via (at 132.715 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD2)) + (segment (start 132.715 87.503) (end 132.715 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BD3)) + (via (at 131.445 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD4)) + (segment (start 155.575 87.503) (end 155.575 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BD5)) + (segment (start 167.005 88.138) (end 165.735 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BD6)) + (via (at 155.575 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD7)) + (via (at 161.29 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD8)) + (via (at 154.305 85.6615) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BD9)) + (via (at 171.45 85.598) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDA)) + (via (at 172.72 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDB)) + (via (at 172.72 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDC)) + (via (at 175.26 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDD)) + (via (at 154.305 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDE)) + (via (at 169.545 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BDF)) + (via (at 167.005 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE0)) + (via (at 163.83 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE1)) + (via (at 165.735 85.6615) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE2)) + (via (at 158.115 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE3)) + (via (at 169.545 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE4)) + (via (at 178.435 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE5)) + (via (at 163.83 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE6)) + (via (at 165.735 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE7)) + (via (at 177.165 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BE8)) + (segment (start 178.435 87.503) (end 178.435 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BE9)) + (segment (start 161.29 88.138) (end 160.02 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEA)) + (segment (start 161.29 87.503) (end 161.29 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEB)) + (segment (start 167.005 87.503) (end 167.005 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEC)) + (segment (start 172.72 88.138) (end 171.45 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BED)) + (segment (start 178.435 88.138) (end 177.165 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEE)) + (segment (start 172.72 87.503) (end 172.72 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BEF)) + (segment (start 155.575 88.138) (end 154.305 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BF0)) + (via (at 167.005 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF1)) + (via (at 160.02 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF2)) + (via (at 161.29 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF3)) + (via (at 155.575 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF4)) + (via (at 158.115 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF5)) + (via (at 160.02 85.6615) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF6)) + (via (at 171.45 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF7)) + (via (at 178.435 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF8)) + (via (at 180.975 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BF9)) + (via (at 175.26 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BFA)) + (via (at 177.165 85.6615) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BFB)) + (via (at 180.975 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468BFC)) + (segment (start 144.145 87.503) (end 144.145 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BFD)) + (segment (start 144.145 88.138) (end 142.875 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BFE)) + (segment (start 149.86 87.503) (end 149.86 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468BFF)) + (segment (start 149.86 88.138) (end 148.59 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C00)) + (segment (start 131.445 85.6615) (end 182.8165 85.6615) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C01)) + (via (at 144.145 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C02)) + (via (at 144.145 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C03)) + (via (at 146.685 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C04)) + (via (at 149.86 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C05)) + (via (at 148.59 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C06)) + (via (at 142.875 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C07)) + (via (at 149.86 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C08)) + (via (at 152.4 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C09)) + (via (at 146.685 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0A)) + (via (at 148.59 85.6615) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0B)) + (via (at 152.4 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0C)) + (via (at 142.875 85.598) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0D)) + (via (at 137.16 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0E)) + (via (at 140.97 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C0F)) + (via (at 138.43 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C10)) + (via (at 137.16 85.6615) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C11)) + (via (at 140.97 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C12)) + (segment (start 138.43 87.503) (end 138.43 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C13)) + (segment (start 138.43 88.138) (end 137.16 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E468C14)) + (via (at 138.43 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E468C15)) + (segment (start 135.255 64.643) (end 135.255 68.453) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 135.255 72.263) (end 135.255 76.073) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 135.255 79.883) (end 135.255 83.693) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 140.97 83.693) (end 140.97 79.883) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 140.97 76.073) (end 140.97 72.263) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 140.97 68.453) (end 140.97 64.643) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 146.685 64.643) (end 146.685 68.453) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 146.685 72.263) (end 146.685 76.073) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 146.685 79.883) (end 146.685 83.693) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 152.4 83.693) (end 152.4 79.883) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 152.4 76.073) (end 152.4 72.263) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 152.4 68.453) (end 152.4 64.643) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 158.115 64.643) (end 158.115 68.453) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 158.115 72.263) (end 158.115 76.073) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 158.115 79.883) (end 158.115 83.693) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 163.83 83.693) (end 163.83 79.883) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 163.83 76.073) (end 163.83 72.263) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 163.83 68.453) (end 163.83 64.643) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 169.545 64.643) (end 169.545 68.453) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 169.545 72.263) (end 169.545 76.073) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 169.545 79.883) (end 169.545 83.693) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 175.26 79.883) (end 175.26 83.693) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 175.26 76.073) (end 175.26 72.263) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 175.26 68.453) (end 175.26 64.643) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 180.975 64.643) (end 180.975 68.453) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 180.975 72.263) (end 180.975 76.073) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 180.975 79.883) (end 180.975 83.693) (width 0.8) (layer B.Cu) (net 0)) + (via (at 154.305 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 156.845 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 159.385 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 161.925 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 164.465 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 167.005 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 169.545 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 172.085 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 174.625 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 177.165 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 151.765 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 179.705 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 149.225 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 146.685 57.15) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 161.925 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A456)) + (via (at 167.005 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A457)) + (via (at 169.545 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A458)) + (via (at 151.765 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A459)) + (via (at 174.625 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A45A)) + (via (at 179.705 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A45B)) + (via (at 156.845 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A45C)) + (via (at 172.085 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A45D)) + (via (at 149.225 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A45E)) + (via (at 159.385 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A45F)) + (via (at 177.165 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A460)) + (via (at 164.465 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A461)) + (via (at 146.685 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A462)) + (via (at 154.305 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46A463)) + (segment (start 184.15 64.643) (end 184.15 65.278) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE69)) + (segment (start 184.15 65.278) (end 182.88 66.548) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE6A)) + (segment (start 137.16 62.8015) (end 188.5315 62.8015) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE6B)) + (segment (start 184.15 72.263) (end 184.15 72.898) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE6C)) + (segment (start 184.15 72.898) (end 182.88 74.168) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE6D)) + (segment (start 137.16 70.4215) (end 188.5315 70.4215) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE6E)) + (segment (start 184.15 79.883) (end 184.15 80.518) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE6F)) + (segment (start 184.15 80.518) (end 182.88 81.788) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE70)) + (segment (start 137.16 78.0415) (end 188.5315 78.0415) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE71)) + (segment (start 184.15 87.503) (end 184.15 88.138) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE72)) + (segment (start 184.15 88.138) (end 182.88 89.408) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE73)) + (segment (start 137.16 85.6615) (end 188.5315 85.6615) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE74)) + (segment (start 186.69 64.643) (end 186.69 68.453) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE75)) + (segment (start 186.69 72.263) (end 186.69 76.073) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE76)) + (segment (start 186.69 79.883) (end 186.69 83.693) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46CE77)) + (via (at 184.15 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE79)) + (via (at 182.88 66.548) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE7A)) + (via (at 184.15 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE7B)) + (via (at 186.69 64.643) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE7C)) + (via (at 182.88 62.8015) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE7D)) + (via (at 186.69 60.833) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE7E)) + (via (at 184.15 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE7F)) + (via (at 182.88 74.168) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE80)) + (via (at 184.15 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE81)) + (via (at 186.69 72.263) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE82)) + (via (at 182.88 70.4215) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE83)) + (via (at 186.69 68.453) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE84)) + (via (at 184.15 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE85)) + (via (at 182.88 81.788) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE86)) + (via (at 184.15 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE87)) + (via (at 186.69 79.883) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE88)) + (via (at 182.88 78.0415) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE89)) + (via (at 186.69 76.073) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE8A)) + (via (at 184.15 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE8B)) + (via (at 182.88 89.408) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE8C)) + (via (at 184.15 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE8D)) + (via (at 186.69 87.503) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE8E)) + (via (at 182.88 85.6615) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE8F)) + (via (at 186.69 83.693) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E46CE90)) + (via (at 167.005 51.308) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 169.545 51.308) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 172.085 51.308) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 174.625 51.308) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 188.5315 85.6615) (end 188.5315 85.6615) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46D35C)) + (via (at 188.5315 85.6615) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 188.5315 78.0415) (end 188.5315 78.0415) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46D35E)) + (via (at 188.5315 78.0415) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 188.5315 70.4215) (end 188.5315 70.4215) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46D360)) + (via (at 188.5315 70.4215) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 188.5315 62.8015) (end 188.5315 62.8015) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E46D362)) + (via (at 188.5315 62.8015) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 151.765 49.53) (end 151.765 50.8) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 154.305 49.53) (end 154.305 50.8) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 156.845 49.53) (end 156.845 50.8) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 159.385 49.53) (end 159.385 50.8) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 161.925 49.53) (end 161.925 50.8) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 156.845 57.15) (end 156.845 55.88) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 179.705 57.15) (end 179.705 55.88) (width 0.8) (layer B.Cu) (net 0)) + (via (at 151.003 44.196) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 148.463 44.196) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 145.923 44.196) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 143.383 44.196) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 151.003 28.956) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 148.463 28.956) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 145.923 28.956) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 143.383 28.956) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 143.383 28.956) (end 143.383 27.686) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 145.923 28.956) (end 145.923 27.686) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 148.463 28.956) (end 148.463 27.686) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 151.003 28.956) (end 151.003 27.686) (width 0.8) (layer B.Cu) (net 0)) + (via (at 135.636 45.466) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 133.604 45.466) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 138.43 52.07) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 138.43 54.61) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 151.003 44.196) (end 151.003 42.926) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 148.463 44.196) (end 148.463 42.926) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 47.371 94.234) (end 48.768 94.234) (width 0.6) (layer B.Cu) (net 0)) + (segment (start 47.371 95.504) (end 48.768 95.504) (width 0.6) (layer B.Cu) (net 0)) + (segment (start 48.768 92.964) (end 48.26 92.964) (width 0.6) (layer B.Cu) (net 0)) + (segment (start 47.371 92.964) (end 48.26 92.964) (width 0.6) (layer B.Cu) (net 0)) + (segment (start 47.371 91.694) (end 48.768 91.694) (width 0.6) (layer B.Cu) (net 0)) + (segment (start 52.705 94.234) (end 54.102 94.234) (width 0.6) (layer B.Cu) (net 0) (tstamp 5DA197AB)) + (segment (start 52.705 95.504) (end 54.102 95.504) (width 0.6) (layer B.Cu) (net 0) (tstamp 5DA197AC)) + (segment (start 54.102 92.964) (end 53.594 92.964) (width 0.6) (layer B.Cu) (net 0) (tstamp 5DA197AD)) + (segment (start 52.705 92.964) (end 53.594 92.964) (width 0.6) (layer B.Cu) (net 0) (tstamp 5DA197AE)) + (segment (start 52.705 91.694) (end 54.102 91.694) (width 0.6) (layer B.Cu) (net 0) (tstamp 5DA197AF)) + (segment (start 76.2 83.439) (end 76.327 83.312) (width 0.6) (layer B.Cu) (net 0) (tstamp 5DE9571D)) + (segment (start 76.327 80.772) (end 76.327 80.645) (width 0.6) (layer B.Cu) (net 0) (tstamp 5DE9572A)) + (via (at 76.327 88.392) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9572C)) + (via (at 76.327 80.772) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9572D)) + (via (at 76.327 83.312) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9572E)) + (via (at 76.327 85.852) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9572F)) + (via (at 61.087 88.392) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95730)) + (via (at 61.087 85.852) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95733)) + (via (at 61.087 85.852) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95734)) + (via (at 61.087 88.392) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95735)) + (via (at 61.087 83.312) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95736)) + (via (at 61.087 83.312) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95737)) + (via (at 61.087 83.312) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95738)) + (via (at 61.087 80.772) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95739)) + (via (at 61.087 88.392) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9573A)) + (via (at 61.087 88.392) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9573C)) + (via (at 61.087 80.772) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9573E)) + (via (at 61.087 80.772) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95742)) + (via (at 61.087 88.392) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95744)) + (via (at 61.087 83.312) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95745)) + (via (at 61.087 83.312) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95746)) + (via (at 61.087 80.772) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95747)) + (via (at 61.087 88.392) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95748)) + (via (at 61.087 85.852) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95749)) + (via (at 61.087 85.852) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9574A)) + (via (at 61.087 85.852) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9574B)) + (via (at 61.087 85.852) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9574C)) + (via (at 61.087 83.312) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9574E)) + (via (at 61.087 88.392) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9574F)) + (via (at 61.087 85.852) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95750)) + (via (at 61.087 80.772) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95751)) + (via (at 61.087 80.772) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95752)) + (via (at 61.087 80.772) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95753)) + (via (at 61.087 83.312) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE95754)) + (segment (start 74.422 80.772) (end 73.232 79.582) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 76.327 80.772) (end 74.422 80.772) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 75.427001 82.412001) (end 74.030001 82.412001) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 76.327 83.312) (end 75.427001 82.412001) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 72.132 80.514) (end 72.132 76.712) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 74.030001 82.412001) (end 72.132 80.514) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 75.427001 84.952001) (end 74.919001 84.952001) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 76.327 85.852) (end 75.427001 84.952001) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 71.032 81.065) (end 71.032 76.923) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 74.919001 84.952001) (end 71.032 81.065) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 73.232 79.121) (end 73.232 77.009) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 73.232 79.582) (end 73.232 79.121) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 73.232 79.121) (end 73.232 77.994) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 73.232 76.51956) (end 73.279 76.47256) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 73.232 77.994) (end 73.232 76.51956) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 75.054208 88.392) (end 69.977 83.314792) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 76.327 88.392) (end 75.054208 88.392) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 69.977 83.314792) (end 69.977 76.835) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 61.087 88.392) (end 63.881 88.392) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 68.832 83.441) (end 68.832 77.087) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 63.881 88.392) (end 68.832 83.441) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 61.087 85.852) (end 64.77 85.852) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 67.732 82.89) (end 67.732 77.048) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 64.77 85.852) (end 67.732 82.89) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 61.087 83.312) (end 64.897 83.312) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 66.632 81.577) (end 66.632 77.005) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 64.897 83.312) (end 66.632 81.577) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 61.087 80.772) (end 64.262 80.772) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 64.262 80.772) (end 65.532 79.502) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 65.532 79.502) (end 65.532 76.962) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 61.976 69.469) (end 62.126 69.619) (width 0.59944) (layer B.Cu) (net 0)) + (via (at 76.327 71.374) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 61.087 71.374) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 95.885 80.772) (end 93.98 80.772) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE9793A)) + (segment (start 93.98 80.772) (end 92.79 79.582) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE9793C)) + (segment (start 80.645 88.392) (end 83.439 88.392) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE97940)) + (segment (start 88.39 83.441) (end 88.39 77.087) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE97941)) + (segment (start 83.439 88.392) (end 88.39 83.441) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE97942)) + (segment (start 92.79 79.121) (end 92.79 77.994) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE97947)) + (segment (start 92.79 77.994) (end 92.79 76.51956) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE9794A)) + (segment (start 92.79 79.582) (end 92.79 79.121) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE9794C)) + (segment (start 84.455 83.312) (end 86.19 81.577) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE9794D)) + (segment (start 83.82 80.772) (end 85.09 79.502) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE9794E)) + (segment (start 95.758 83.439) (end 95.885 83.312) (width 0.6) (layer B.Cu) (net 0) (tstamp 5DE97954)) + (segment (start 95.885 80.772) (end 95.885 80.645) (width 0.6) (layer B.Cu) (net 0) (tstamp 5DE97955)) + (segment (start 80.645 83.312) (end 84.455 83.312) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE97956)) + (segment (start 80.645 80.772) (end 83.82 80.772) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE97958)) + (segment (start 84.328 85.852) (end 87.29 82.89) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE9795A)) + (segment (start 87.29 82.89) (end 87.29 77.048) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE9795B)) + (segment (start 80.645 85.852) (end 84.328 85.852) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5DE9795C)) + (via (at 95.885 88.392) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9795D)) + (via (at 95.885 80.772) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9795E)) + (via (at 95.885 83.312) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9795F)) + (via (at 95.885 85.852) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97960)) + (via (at 80.645 88.392) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97961)) + (via (at 80.645 85.852) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97962)) + (via (at 80.645 85.852) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97963)) + (via (at 80.645 88.392) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97964)) + (via (at 80.645 83.312) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97965)) + (via (at 80.645 83.312) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97966)) + (via (at 80.645 83.312) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97967)) + (via (at 80.645 80.772) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97968)) + (via (at 80.645 88.392) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97969)) + (via (at 80.645 88.392) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9796A)) + (via (at 80.645 80.772) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9796B)) + (via (at 80.645 80.772) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9796C)) + (via (at 80.645 88.392) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9796D)) + (via (at 80.645 83.312) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9796E)) + (via (at 80.645 83.312) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9796F)) + (via (at 80.645 80.772) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97970)) + (via (at 80.645 88.392) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97971)) + (via (at 80.645 85.852) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97972)) + (via (at 80.645 85.852) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97973)) + (via (at 80.645 85.852) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97974)) + (via (at 80.645 85.852) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97975)) + (via (at 80.645 83.312) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97976)) + (via (at 80.645 88.392) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97977)) + (via (at 80.645 85.852) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97978)) + (via (at 80.645 80.772) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE97979)) + (via (at 80.645 80.772) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9797A)) + (via (at 80.645 80.772) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9797B)) + (via (at 80.645 83.312) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DE9797C)) + (segment (start 84.709 69.723) (end 86.868 69.723) (width 2.54) (layer B.Cu) (net 0)) + (segment (start 86.868 69.723) (end 80.79301 69.723) (width 2.54) (layer B.Cu) (net 0)) + (segment (start 86.868 69.723) (end 95.73699 69.723) (width 2.54) (layer B.Cu) (net 0)) + (segment (start 85.09 77.47) (end 85.09 75.819) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 85.09 79.502) (end 85.09 77.47) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 85.09 77.47) (end 85.09 76.962) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 86.19 81.577) (end 86.19 77.47) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 86.19 77.47) (end 86.19 75.862) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 86.19 77.47) (end 86.19 77.005) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 87.29 77.048) (end 87.29 75.86) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 88.39 77.087) (end 88.39 75.821) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 89.535 77.216) (end 89.535 75.819) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 89.535 77.216) (end 89.535 76.835) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 90.59 81.065) (end 90.59 77.724) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 90.59 77.724) (end 90.59 75.858) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 90.59 77.724) (end 90.59 76.923) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 91.69 77.724) (end 91.69 75.823) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 91.69 77.724) (end 91.69 76.712) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 92.79 77.978) (end 92.79 75.866) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 92.79 79.121) (end 92.79 77.978) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 92.79 77.978) (end 92.79 77.009) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 89.535 83.693) (end 89.535 81.534) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 94.234 88.392) (end 89.535 83.693) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 95.885 88.392) (end 94.234 88.392) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 89.535 81.534) (end 89.535 77.216) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 89.535 83.314792) (end 89.535 81.534) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 95.885 85.852) (end 93.472 85.852) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 90.59 82.97) (end 90.59 81.065) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 93.472 85.852) (end 90.59 82.97) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 95.885 83.312) (end 93.472 83.312) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 91.69 81.53) (end 91.69 80.264) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 93.472 83.312) (end 91.69 81.53) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 91.69 80.264) (end 91.69 77.724) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 91.69 80.514) (end 91.69 80.264) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 194.599874 51.175334) (end 195.865874 51.175334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0C7)) + (segment (start 194.216874 47.875334) (end 194.724874 47.875334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0C9)) + (segment (start 193.962874 54.475334) (end 194.974874 54.475334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0CB)) + (segment (start 201.963874 49.653334) (end 201.963874 58.522324) (width 2.54) (layer B.Cu) (net 0) (tstamp 5E47E0CF)) + (segment (start 193.962874 53.375334) (end 194.763874 53.375334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0D3)) + (segment (start 201.963874 49.653334) (end 201.963874 43.578344) (width 2.54) (layer B.Cu) (net 0) (tstamp 5E47E0D9)) + (segment (start 194.216874 48.975334) (end 195.824874 48.975334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0DA)) + (segment (start 194.216874 47.875334) (end 195.867874 47.875334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0DB)) + (segment (start 194.638874 50.075334) (end 195.826874 50.075334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0E2)) + (segment (start 193.708874 55.575334) (end 194.677874 55.575334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0E3)) + (segment (start 193.692874 55.575334) (end 195.167314 55.575334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0E8)) + (segment (start 194.216874 48.975334) (end 194.681874 48.975334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0EA)) + (segment (start 194.470874 52.320334) (end 195.867874 52.320334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0EE)) + (segment (start 201.963874 47.494334) (end 201.963874 49.653334) (width 2.54) (layer B.Cu) (net 0) (tstamp 5E47E0F1)) + (segment (start 193.962874 54.475334) (end 195.863874 54.475334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0F3)) + (segment (start 193.962874 53.375334) (end 195.828874 53.375334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0F6)) + (segment (start 193.708874 55.575334) (end 195.820874 55.575334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0F7)) + (segment (start 194.470874 52.320334) (end 194.851874 52.320334) (width 0.59944) (layer B.Cu) (net 0) (tstamp 5E47E0F9)) + (segment (start 156.117583 28.920137) (end 156.117583 29.980797) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 151.765 57.025792) (end 152.273 57.533792) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 154.305 55.753) (end 154.305 57.025792) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 167.64 53.975) (end 164.465 57.15) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 149.225 49.53) (end 149.225 53.34) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 149.225 53.34) (end 147.447 55.118) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 147.447 55.118) (end 145.542 55.118) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 145.542 55.118) (end 144.272 56.388) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 144.272 57.531) (end 140.97 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 137.287 58.801) (end 135.255 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 146.685 49.53) (end 146.685 51.689) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 164.465 49.53) (end 164.465 48.257208) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 164.465 48.257208) (end 163.832792 47.625) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 145.415 47.625) (end 144.653 48.387) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 172.085 57.658) (end 172.085 57.404) (width 0.59944) (layer B.Cu) (net 0)) + (via (at 166.243 30.734) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 168.783 30.734) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 139.827 30.099) (end 140.335 30.607) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 155.49138 30.607) (end 156.117583 29.980797) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 140.335 30.607) (end 155.49138 30.607) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 184.023 25.908) (end 184.023 33.274) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 139.573 36.322) (end 139.573 33.274) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 139.573 33.274) (end 134.493 33.274) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 184.023 33.274) (end 139.573 33.274) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 166.277583 30.699417) (end 166.243 30.734) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 166.277583 28.920137) (end 166.277583 30.699417) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 168.817583 30.699417) (end 168.783 30.734) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 168.817583 28.920137) (end 168.817583 30.699417) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 166.677582 24.710138) (end 166.678862 24.710138) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 166.277583 25.110137) (end 166.677582 24.710138) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 187.071 23.495) (end 188.087 24.511) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 188.087 24.511) (end 188.087 45.339) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 188.087 45.339) (end 187.392654 46.033346) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 163.070792 46.033346) (end 163.195 46.033346) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 161.197583 44.160137) (end 163.070792 46.033346) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 187.392654 46.033346) (end 163.195 46.033346) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 166.277583 44.160137) (end 166.277583 42.833583) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 166.277583 42.833583) (end 161.671 38.227) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 161.671 38.227) (end 150.114 38.227) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 150.114 38.227) (end 145.796 42.545) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 142.494 42.545) (end 139.573 45.466) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 145.796 42.545) (end 142.494 42.545) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 162.760238 36.83) (end 168.817583 42.887345) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 148.717 36.83) (end 162.760238 36.83) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 144.653 40.894) (end 148.717 36.83) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 168.817583 44.160137) (end 168.817583 42.887345) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 141.605 40.894) (end 134.493 40.894) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 147.193 35.306) (end 141.605 40.894) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 164.084 35.306) (end 147.193 35.306) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 171.357583 42.579583) (end 164.084 35.306) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 171.357583 44.160137) (end 171.357583 42.579583) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 173.897583 40.928583) (end 173.863 40.894) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 173.897583 44.160137) (end 173.897583 40.928583) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 176.437583 43.399417) (end 178.943 40.894) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 176.437583 44.160137) (end 176.437583 43.399417) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 182.24372 40.894) (end 184.023 40.894) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 178.977583 44.160137) (end 182.24372 40.894) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 158.657583 44.160137) (end 156.845 45.97272) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 156.845 45.97272) (end 141.86028 45.97272) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 141.86028 45.97272) (end 140.589 47.244) (width 0.59944) (layer B.Cu) (net 0)) + (via (at 181.483 30.734) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 181.517583 30.699417) (end 181.483 30.734) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 181.517583 28.920137) (end 181.517583 30.699417) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 181.483 30.734) (end 181.737 30.734) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 181.483 30.734) (end 182.372 31.623) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 153.577583 28.920137) (end 154.327582 28.170138) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 154.327582 28.170138) (end 154.328862 28.170138) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 133.220208 33.274) (end 131.318 33.274) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 134.493 33.274) (end 133.220208 33.274) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 131.318 33.274) (end 131.318 26.67) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 131.318 26.67) (end 134.62 23.368) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 154.375446 23.368) (end 156.117583 25.110137) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 134.62 23.368) (end 154.375446 23.368) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 136.141208 47.244) (end 140.589 47.244) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 135.636 46.738792) (end 136.141208 47.244) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 135.636 45.466) (end 135.636 46.738792) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 166.243 30.734) (end 165.608 30.734) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 165.608 30.734) (end 165.354 30.988) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 168.783 30.734) (end 168.275 30.734) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 168.783 30.734) (end 168.148 30.734) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 168.148 30.734) (end 167.64 31.242) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 167.005 51.308) (end 167.904999 52.207999) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 169.545 51.308) (end 170.444999 52.207999) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 172.085 51.435) (end 172.847 52.197) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 174.625 51.435) (end 175.387 52.197) (width 0.59944) (layer F.Cu) (net 0)) + (via (at 163.703 42.291) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 163.703 42.291) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E47F9DC)) + (via (at 163.703 42.291) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 158.623 25.075554) (end 158.657583 25.110137) (width 0.59944) (layer B.Cu) (net 0)) + (via (at 156.083 42.291) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 156.083 44.125554) (end 156.117583 44.160137) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 156.083 42.291) (end 156.083 44.125554) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 156.982999 41.391001) (end 156.982999 41.264001) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 156.083 42.291) (end 156.982999 41.391001) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 156.982999 41.264001) (end 157.099 41.148) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 146.685 57.15) (end 146.685 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 149.225 57.658) (end 152.4 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 149.225 57.15) (end 149.225 57.658) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 158.115 59.560208) (end 158.115 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 152.664999 58.049999) (end 152.664999 58.811999) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 152.664999 58.811999) (end 153.162 59.309) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 153.289 59.436) (end 157.990792 59.436) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 151.765 57.15) (end 152.664999 58.049999) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 154.305 57.15) (end 154.305 58.039) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 161.671 58.547) (end 161.671 58.674) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 154.305 58.422792) (end 154.429208 58.547) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 161.671 58.674) (end 163.83 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 154.429208 58.547) (end 161.671 58.547) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 154.305 57.15) (end 154.305 58.422792) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 159.385 57.15) (end 159.385 55.88) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 161.925 57.15) (end 161.925 55.88) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 169.545 57.15) (end 169.545 55.88) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 142.875 55.499) (end 139.573 58.801) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 139.573 58.801) (end 137.287 58.801) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 146.685 51.689) (end 142.875 55.499) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 142.875 55.499) (end 142.24 56.134) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 144.272 56.388) (end 144.272 57.531) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 167.005 58.293) (end 169.545 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 167.005 57.15) (end 167.005 58.293) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 172.085 57.658) (end 175.26 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 172.085 57.15) (end 172.085 57.658) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 180.850792 59.436) (end 180.975 59.560208) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 174.625 58.422792) (end 175.638208 59.436) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 180.975 59.560208) (end 180.975 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 175.638208 59.436) (end 180.850792 59.436) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 174.625 57.15) (end 174.625 58.422792) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 185.928 58.674) (end 186.69 59.436) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 177.416208 58.547) (end 185.928 58.547) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 186.69 59.436) (end 186.69 60.833) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 177.165 57.15) (end 177.165 58.422792) (width 0.59944) (layer B.Cu) (net 0)) + (via (at 149.098 41.402) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 163.703 42.291) (end 162.803001 41.391001) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 162.697999 41.391001) (end 162.803001 41.391001) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 153.543 44.125554) (end 153.577583 44.160137) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 153.543 42.291) (end 153.543 44.125554) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 163.703 44.125554) (end 163.737583 44.160137) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 163.703 42.291) (end 163.703 44.125554) (width 0.59944) (layer B.Cu) (net 0)) + (via (at 151.003 25.146) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 149.098 25.146) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 149.098 25.146) (end 151.003 25.146) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 149.098 25.146) (end 147.825208 25.146) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 149.098 41.402) (end 153.035 41.402) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 153.577583 42.887345) (end 153.577583 44.160137) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 153.577583 41.944583) (end 153.577583 42.887345) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 153.035 41.402) (end 153.577583 41.944583) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 149.098 41.402) (end 149.098 41.275) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 149.098 41.402) (end 149.997999 40.502001) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 149.997999 40.269999) (end 149.997999 40.502001) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 155.067 27.432) (end 156.083 27.432) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 156.083 27.432) (end 155.575 27.432) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 154.328862 28.170138) (end 155.067 27.432) (width 0.59944) (layer B.Cu) (net 0)) + (via (at 171.323 25.146) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 171.323 25.146) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A34)) + (via (at 171.323 25.146) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 173.228 25.146) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 171.323 25.146) (end 173.228 25.146) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 173.228 25.146) (end 174.500792 25.146) (width 0.59944) (layer F.Cu) (net 0)) + (via (at 119.519183 21.911625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A7E)) + (via (at 119.519183 24.451625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A7F)) + (via (at 119.519183 24.451625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A80)) + (via (at 119.519183 21.911625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A81)) + (via (at 119.519183 24.451625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A82)) + (segment (start 97.253711 24.451625) (end 78.172625 24.451625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482A83)) + (segment (start 97.536 21.911625) (end 119.519183 21.911625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482A84)) + (segment (start 96.405183 21.911625) (end 97.536 21.911625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482A85)) + (segment (start 97.536 21.911625) (end 78.037375 21.911625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482A86)) + (segment (start 97.253711 24.451625) (end 119.519183 24.451625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482A87)) + (via (at 119.519183 24.451625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A88)) + (via (at 119.519183 24.451625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A89)) + (via (at 119.519183 21.911625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A8A)) + (via (at 119.519183 21.911625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A8B)) + (via (at 119.519183 21.911625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A8C)) + (via (at 119.519183 24.451625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A8D)) + (via (at 119.519183 24.451625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A8E)) + (via (at 119.519183 21.911625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A8F)) + (via (at 119.519183 21.911625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E482A90)) + (segment (start 78.613 21.911625) (end 59.114375 21.911625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482ABF)) + (segment (start 78.613 24.451625) (end 59.114375 24.451625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482ABF)) + (segment (start 78.613 26.864625) (end 59.114375 26.864625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482ABF)) + (segment (start 78.613 29.404625) (end 59.114375 29.404625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482ABF)) + (segment (start 78.613 31.944625) (end 59.114375 31.944625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482ABF)) + (segment (start 78.613 34.484625) (end 59.114375 34.484625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482ABF)) + (segment (start 78.74 37.024625) (end 59.241375 37.024625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482ABF)) + (segment (start 78.74 39.564625) (end 59.241375 39.564625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482ABF)) + (segment (start 78.74 42.104625) (end 59.241375 42.104625) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E482ABF)) + (via (at 177.165 51.308) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 179.705 51.308) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 179.705 49.53) (end 179.705 51.435) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 177.165 49.53) (end 177.165 51.435) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 177.165 51.435) (end 177.165 51.943) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 167.005 49.53) (end 167.005 51.308) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 169.545 49.53) (end 169.545 51.308) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 172.085 49.53) (end 172.085 51.308) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 174.625 49.53) (end 174.625 51.308) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 179.705 51.308) (end 179.705 51.562) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 177.165 51.308) (end 177.165 52.580792) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 179.705 51.308) (end 179.705 52.451) (width 0.59944) (layer F.Cu) (net 0)) + (via (at 182.499 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 184.15 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 184.15 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 184.15 53.34) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 184.15 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 180.721 54.102) (end 182.499 55.88) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 180.594 53.975) (end 180.721 54.102) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 167.64 53.975) (end 180.594 53.975) (width 0.59944) (layer B.Cu) (net 0)) + (via (at 182.372 53.34) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 182.372 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 182.499 55.88) (end 182.499 57.152792) (width 0.59944) (layer F.Cu) (net 0)) + (via (at 182.372 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 163.832792 47.625) (end 163.449 47.625) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 163.449 47.625) (end 145.415 47.625) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 181.737 47.625) (end 182.372 48.26) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 163.449 47.625) (end 181.737 47.625) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 182.372 48.26) (end 184.15 48.26) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 182.372 50.8) (end 184.15 50.8) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 182.372 53.34) (end 184.15 53.34) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 182.499 55.88) (end 184.15 55.88) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 184.15 50.8) (end 185.166 50.8) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 184.15 53.34) (end 185.293 53.34) (width 0.59944) (layer F.Cu) (net 0)) + (segment (start 145.415 47.625) (end 138.43 54.61) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 131.318 47.498) (end 131.318 46.609) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 138.43 54.61) (end 131.318 47.498) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 131.318 46.609) (end 131.318 33.274) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 137.530001 51.170001) (end 133.604 47.244) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 138.43 52.07) (end 137.530001 51.170001) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 133.604 45.466) (end 133.604 47.244) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 157.22472 26.543) (end 157.09772 26.543) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 152.14472 26.543) (end 152.019 26.543) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 152.019 26.543) (end 157.09772 26.543) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 153.577583 25.110137) (end 152.14472 26.543) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 151.638 26.543) (end 152.019 26.543) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 180.477999 31.633999) (end 180.583001 31.633999) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 172.72 31.623) (end 180.467 31.623) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 180.583001 31.633999) (end 181.483 30.734) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 148.59 32.258) (end 172.085 32.258) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 172.085 32.258) (end 172.72 31.623) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 147.955 31.623) (end 148.59 32.258) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 180.467 31.623) (end 180.477999 31.633999) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 139.065 31.623) (end 147.955 31.623) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 137.795 30.353) (end 139.065 31.623) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 137.795 27.559) (end 137.795 30.353) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 138.811 26.543) (end 137.795 27.559) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 152.14472 26.543) (end 138.811 26.543) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 161.197583 25.110137) (end 159.76472 26.543) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 159.76472 26.543) (end 157.09772 26.543) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 166.49572 27.432) (end 168.817583 25.110137) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 156.083 27.432) (end 166.49572 27.432) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 159.557582 24.210138) (end 159.558862 24.210138) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 158.657583 25.110137) (end 159.557582 24.210138) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 159.558862 24.210138) (end 160.401 23.368) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 160.401 23.368) (end 178.054 23.368) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 178.977583 24.291583) (end 178.977583 28.920137) (width 0.59944) (layer B.Cu) (net 0)) + (segment (start 178.054 23.368) (end 178.977583 24.291583) (width 0.59944) (layer B.Cu) (net 0)) + +) diff --git a/MCUME_teensy/pcb_t4/mcumev4minkeys9341.pro b/MCUME_teensy/pcb_t4/mcumev4minkeys9341.pro new file mode 100644 index 0000000..152769c --- /dev/null +++ b/MCUME_teensy/pcb_t4/mcumev4minkeys9341.pro @@ -0,0 +1,33 @@ +update=22/05/2015 07:44:53 +version=1 +last_client=kicad +[general] +version=1 +RootSch= +BoardNm= +[pcbnew] +version=1 +LastNetListRead= +UseCmpFile=1 +PadDrill=0.600000000000 +PadDrillOvalY=0.600000000000 +PadSizeH=1.500000000000 +PadSizeV=1.500000000000 +PcbTextSizeV=1.500000000000 +PcbTextSizeH=1.500000000000 +PcbTextThickness=0.300000000000 +ModuleTextSizeV=1.000000000000 +ModuleTextSizeH=1.000000000000 +ModuleTextSizeThickness=0.150000000000 +SolderMaskClearance=0.000000000000 +SolderMaskMinWidth=0.000000000000 +DrawSegmentWidth=0.200000000000 +BoardOutlineThickness=0.100000000000 +ModuleOutlineThickness=0.150000000000 +[cvpcb] +version=1 +NetIExt=net +[eeschema] +version=1 +LibDir= +[eeschema/libraries] diff --git a/MCUME_teensy/pinout.txt b/MCUME_teensy/pinout.txt index ba1c553..4e39125 100644 --- a/MCUME_teensy/pinout.txt +++ b/MCUME_teensy/pinout.txt @@ -4,17 +4,17 @@ Teensy 4.0 (2x14 pins) or Teensy 3.6 (2x24 pins inc bottom part) GND X VIn (NC) (NC) 00 Ang (NC) (NC) 01 X 3.3v - VGA Blue (OPT2) 02 X 23 DISPLAY - CS (also RST for ST7789!) - Key USER1 (OPT1) 03 X 22 VGA Hsync (OPT2) - Key USER2 (OPT1) 04 X 21 VGA Red (OPT2) - VGA Red (OPT2) 05 20 VGA Red (OPT2) - VGA Green (OPT2) 06 19 I2C CLK (OPT1) - VGA Green (OPT2) 07 18 I2C DAT (OPT1) - VGA Green (OPT2) 08 X 17 JOY2 Fire + JOY1 Fire 02 X X 23 RST for ST7789 DISPLAY + Key USER1 (OPT1) 03 X X 22 DISPLAY - CS + Key USER2 (OPT1) 04 X 21 + JOY1 Left 05 X 20 + JOY1 Right 06 X 19 I2C CLK (OPT1) + JOY1 Down 07 X 18 I2C DAT (OPT1) + EXT SD CS 08 X 17 JOY2 Fire DISPLAY - DC 09 X X 16 JOY2 AnalogY-A2 Audio MSQL for T4 (OPT0) 10 X 15 JOY2 AnalogX-A1 - DISPLAY - MOSI 11 X 14 VGA Blue (OPT2) - MISO (Touch) for T3.6 (OPT2) 12 X 13 DISPLAY - SCK + DISPLAY/EXT SD - MOSI 11 X X 14 JOY1 Up + MISO (Touch for T3.6 or EXT SD) 12 X 13 DISPLAY/EXT SD - SCK @@ -23,21 +23,51 @@ Teensy 4.0 (2x14 pins) or Teensy 3.6 (2x24 pins inc bottom part) (NC) 25 DAC0 Audio L for T3.6 (OPT0) (NC) 26 39 Key USER4 (OPT1) (NC) 27 38 T_CS (Touch) for T3.6 (OPT2) - (NC) 28 37 T_IRQ (Touch) for T3.6 (OPT2) - VGA Vsync (OPT2) 29 36 - 30 35 - 31 34 + (NC) 28 37 PSRAM_CLK (OPT3) / T_IRQ (Touch) for T3.6 (OPT2) + 29 36 PSRAM_CS (OPT3) + 30 35 PSRAM_MOSI (OPT3) + 31 34 PSRAM_MISO (OPT3) 32 33 Key USER3 (OPT1) -Display: ILI9341/ST7789 (SPI connected, MISO not connected) -Storage: SD build-in (external SD requires extra CS) -(X) mandatory pins to connect for the minimum set-up +Teensy 3.6 old layout with VGA (2x24 pins inc bottom part) +---------------------------------------------------------- + (NC) GND VIn (NC) + (NC) 00 Ang (NC) + (NC) 01 3.3v (NC) + VGA Blue (OPT) 02 X 23 Key RESET + I2C CLK (OPT) 03 22 VGA Hsync (OPT) + I2C DAT (OPT) 04 21 VGA Red (OPT) + VGA Red (OPT) 05 20 VGA Red (OPT) + VGA Green (OPT) 06 19 JOY1 Left (OPT) + VGA Green (OPT) 07 18 JOY1 Right (OPT) + VGA Green (OPT) 08 17 JOY1 Down (OPT) + ILI DC 09 X 16 JOY1 Up (OPT) + ILI CS 10 X 15 (NC) + ILI SDI+T_DIN-SPI MOSI 11 X 14 VGA Blue (OPT) + ILI SDO+T_DO-SPI MISO 12 X X 13 ILI SCK+T_CLK-SPI SCK + ILI VCC 3.3v X X GND ILI GND + (NC) 24 DAC1 Audio R (OPT) + (NC) 25 DAC0 Audio L (OPT) + (NC) 26 39 Key USER4 (OPT) + (NC) 27 X 38 ILI T_CS (Touch screen) + (NC) 28 X 37 ILI T_IRQ (Touch screen) + VGA Vsync (OPT) 29 36 JOY2 Fire + JOY1 Key FIRE(OPT) 30 X 35 Key USER1 + JOY2 AnalogX-A12 31 X 34 Key USER2 (OPT) + JOY2 AnalogY-A13 32 X 33 Key USER3 (OPT) + + + +Display: ILI9341/ST7789 (on main SPI, MISO not connected, RST optional or to 3.3v) +Storage: SD build-in (or external SD requires extra CS + main SPI 11,12 and 13) + +(X) mandatory pins to connect for the minimum set-up (note that single joystick as JOY1 or JOY2 is possible via SWAP option) (OPT0) audio output (OPT1) keys required to play 'better' as for e.g. computer (I2C keyboard, 2 extra joystick buttons) -(OPT2) for VGA output and ILI touch screen (for T3.6 only). ILI touch on same SPI as DISPLAY - +(OPT2) for VGA output and ILI touch screen (for T3.6 only). ILI touch on main SPI as DISPLAY +(OPT3) for PSRAM on T4.0 only (with EXT SD only!!!) The keys (all) are using internal pull-up so just connect the other side to the GND The Analog joypad also needs VCC and GND connections ! diff --git a/MCUME_teensy/teensy5200/emuapi.cpp b/MCUME_teensy/teensy5200/emuapi.cpp index 576f2d5..e205cd3 100644 --- a/MCUME_teensy/teensy5200/emuapi.cpp +++ b/MCUME_teensy/teensy5200/emuapi.cpp @@ -1373,7 +1373,7 @@ void emu_init(void) emu_InitJoysticks(); -#ifdef TEENSYBOY +#ifdef SWAP_JOYSTICK joySwapped = true; #else joySwapped = false; diff --git a/MCUME_teensy/teensy5200/iopins.h b/MCUME_teensy/teensy5200/iopins.h index eead4a9..28b6b83 100644 --- a/MCUME_teensy/teensy5200/iopins.h +++ b/MCUME_teensy/teensy5200/iopins.h @@ -2,31 +2,17 @@ #define IOPINS_H #include "platform_config.h" -#include "tft_t_dma_config.h" #ifndef OLD_LAYOUT -#ifdef ST7789 -// ST7789 #define TFT_SCLK 13 #define TFT_MOSI 11 #define TFT_MISO 12 #define TFT_TOUCH_CS 255 #define TFT_TOUCH_INT 255 #define TFT_DC 9 -#define TFT_CS 255 -#define TFT_RST 23 -#else -// ILI9341 -#define TFT_SCLK 13 -#define TFT_MOSI 11 -#define TFT_MISO 12 -#define TFT_TOUCH_CS 255 //38 -#define TFT_TOUCH_INT 255 //37 -#define TFT_DC 9 -#define TFT_CS 23 -#define TFT_RST 255 -#endif +#define TFT_CS 22 // 255 for LORES ST7789 (NO CS) +#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V // PSRAM #define PSRAM_CS 36 @@ -38,10 +24,10 @@ #define SD_SCLK 13 #define SD_MOSI 12 #define SD_MISO 11 -#ifdef TEENSYBOY -#define SD_CS BUILTIN_SDCARD +#ifdef EXTERNAL_SD +#define SD_CS 8 #else -#define SD_CS 5 +#define SD_CS BUILTIN_SDCARD #endif // I2C keyboard @@ -54,17 +40,15 @@ #define PIN_JOY2_BTN 17 #define PIN_KEY_USER1 3 //34 #define PIN_KEY_USER2 4 //35 -//#define PIN_KEY_USER3 255 -//#define PIN_KEY_USER4 255 +//#define PIN_KEY_USER3 33 +//#define PIN_KEY_USER4 39 -#ifdef TEENSYBOY // Second joystick #define PIN_JOY1_BTN 2 #define PIN_JOY1_1 14 // UP #define PIN_JOY1_2 7 // DOWN #define PIN_JOY1_3 6 // RIGHT #define PIN_JOY1_4 5 // LEFT -#endif #else // OLD LAYOUT!!!! diff --git a/MCUME_teensy/teensy5200/platform_config.h b/MCUME_teensy/teensy5200/platform_config.h index 4186a21..c6ccb01 100644 --- a/MCUME_teensy/teensy5200/platform_config.h +++ b/MCUME_teensy/teensy5200/platform_config.h @@ -1,14 +1,20 @@ #ifndef _PLATFORM_CONFIG_H_ #define _PLATFORM_CONFIG_H_ -//#define OLD_LAYOUT 1 -//#define TEENSYBOY 1 +//#define OLD_LAYOUT 1 -//#define HAS_PSRAM 1 +#define ILI9341 1 +//#define ST7789 1 +//#define SWAP_JOYSTICK 1 +//#define LOHRES 1 +//#define ROTATE_SCREEN 1 +#define EXTERNAL_SD 1 -//#define USE_SDFAT 1 -//#define SD_FAT_TYPE 1 -//#define USE_SDFS 1 -//#define SDFSDEV "1:" +#define HAS_PSRAM 1 + +//#define USE_SDFAT 1 +//#define SD_FAT_TYPE 1 +//#define USE_SDFS 1 +//#define SDFSDEV "1:" #endif diff --git a/MCUME_teensy/teensy5200/tft_t_dma.cpp b/MCUME_teensy/teensy5200/tft_t_dma.cpp index 5013b73..5c2f93d 100644 --- a/MCUME_teensy/teensy5200/tft_t_dma.cpp +++ b/MCUME_teensy/teensy5200/tft_t_dma.cpp @@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = { #endif }; - static void dmaInterrupt() { dmatx.clearInterrupt(); curTransfer++; @@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { int dx=0; int dy=0; - #ifdef ST7789 + if (TFT_REALWIDTH == TFT_REALHEIGHT) + { #ifdef ROTATE_SCREEN - if (!flipped) { - dy += 80; - } + if (!flipped) { + dy += 80; + } #else - if (flipped) { - dx += 80; + if (flipped) { + dx += 80; + } +#endif } -#endif -#endif +#endif + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1+dx); + digitalWrite(_dc, 1); + SPI.transfer16(x2+dx); + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1+dy); + digitalWrite(_dc, 1); + SPI.transfer16(y2+dy); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + return; + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); @@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { } + + void TFT_T_DMA::begin(void) { SPI.setMOSI(_mosi); SPI.setMISO(_miso); @@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) { SPI.begin(); // Initialize display - if (_rst < 255) { // toggle RST low to reset + if (_rst != 0xff) { pinMode(_rst, OUTPUT); digitalWrite(_rst, HIGH); - delay(5); + delay(100); digitalWrite(_rst, LOW); - delay(20); + delay(100); digitalWrite(_rst, HIGH); - delay(120); + delay(200); } - + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); const uint8_t *addr = init_commands; digitalWrite(_cs, 0); @@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) { SPI.transfer(ILI9341_DISPON); digitalWrite(_dc, 1); digitalWrite(_cs, 1); - SPI.endTransaction(); #endif #ifdef ST7789 uint8_t numCommands, numArgs; @@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) { if(ms) { ms = *addr++; // Read post-command delay time (ms) if(ms == 255) ms = 500; // If 255, delay for 500 ms - SPI.endTransaction(); - digitalWrite(_dc, 1); digitalWrite(_cs, 1); + SPI.endTransaction(); delay(ms); - //beginSPITransaction(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); } } + digitalWrite(_cs, 1); #endif setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + SPI.endTransaction(); + + cancelled = false; - cancelled = false; #ifdef FLIP_SCREEN flipscreen(true); #else flipscreen(false); -#endif +#endif +#ifdef ST7789 + if (TFT_REALWIDTH != TFT_REALHEIGHT) + { + flipscreen(true); + } +#endif }; @@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) { #endif dmatx = dmasettings[0]; digitalWrite(_cs, 0); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); digitalWrite(_dc, 0); SPI.transfer(TFT_RAMWR); digitalWrite(_dc, 1); @@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { No DMA functions ***********************************************************************************************/ void TFT_T_DMA::fillScreenNoDma(uint16_t color) { - setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + //digitalWrite(_dc, 0); + //SPI.transfer(TFT_RAMWR); int i,j; for (j=0; j> 1; @@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t else SPI.transfer16(bgcolor); } bits = *charpt++; - digitalWrite(_dc, 1); + //digitalWrite(_dc, 1); if (bits&0x01) SPI.transfer16(fgcolor); else SPI.transfer16(bgcolor); bits = bits >> 1; @@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t SPI.endTransaction(); } - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); -} - - -void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { - setArea(x,y,x+w-1,y+h-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); - int i; - for (i=0; i<(w*h); i++) - { - digitalWrite(_dc, 1); - SPI.transfer16(color); - } -#ifdef ILI9341 - digitalWrite(_dc, 0); - SPI.transfer(ILI9341_SLPOUT); - digitalWrite(_dc, 1); -#endif + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); digitalWrite(_cs, 1); SPI.endTransaction(); - - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); } + + + /*********************************************************************************************** DMA functions ***********************************************************************************************/ diff --git a/MCUME_teensy/teensy5200/tft_t_dma.h b/MCUME_teensy/teensy5200/tft_t_dma.h index 1fd938f..6de7661 100644 --- a/MCUME_teensy/teensy5200/tft_t_dma.h +++ b/MCUME_teensy/teensy5200/tft_t_dma.h @@ -21,18 +21,15 @@ #define B16(rgb) ((rgb<<3)&0xf8) -#define TFT_HEIGHT 240 - -#ifdef ILI9341 -#define TFT_WIDTH 320 -#define TFT_REALWIDTH 320 -#define TFT_REALHEIGHT 240 -#endif -#ifdef ST7789 -#define TFT_WIDTH 240 +#ifdef LOHRES +#define TFT_WIDTH 240 #define TFT_REALWIDTH 240 -#define TFT_REALHEIGHT 240 +#else +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 #endif +#define TFT_HEIGHT 240 +#define TFT_REALHEIGHT 240 #define LINES_PER_BLOCK 64 #define NR_OF_BLOCK 4 diff --git a/MCUME_teensy/teensy5200/tft_t_dma_config.h b/MCUME_teensy/teensy5200/tft_t_dma_config.h index 7ee0925..d8200a2 100644 --- a/MCUME_teensy/teensy5200/tft_t_dma_config.h +++ b/MCUME_teensy/teensy5200/tft_t_dma_config.h @@ -1,11 +1,7 @@ #include "platform_config.h" -#ifdef TEENSYBOY -#define ST7789 1 -#define ROTATE_SCREEN 1 -#else -#define ILI9341 1 -#endif +//#define ST7789 1 +//#define ILI9341 1 #define TFT_LINEARINT 1 #define LINEARINT_HACK 1 diff --git a/MCUME_teensy/teensy64/emuapi.cpp b/MCUME_teensy/teensy64/emuapi.cpp index d8f2c28..ac2d42e 100644 --- a/MCUME_teensy/teensy64/emuapi.cpp +++ b/MCUME_teensy/teensy64/emuapi.cpp @@ -1372,7 +1372,7 @@ void emu_init(void) emu_InitJoysticks(); -#ifdef TEENSYBOY +#ifdef SWAP_JOYSTICK joySwapped = true; #else joySwapped = false; diff --git a/MCUME_teensy/teensy64/iopins.h b/MCUME_teensy/teensy64/iopins.h index eead4a9..28b6b83 100644 --- a/MCUME_teensy/teensy64/iopins.h +++ b/MCUME_teensy/teensy64/iopins.h @@ -2,31 +2,17 @@ #define IOPINS_H #include "platform_config.h" -#include "tft_t_dma_config.h" #ifndef OLD_LAYOUT -#ifdef ST7789 -// ST7789 #define TFT_SCLK 13 #define TFT_MOSI 11 #define TFT_MISO 12 #define TFT_TOUCH_CS 255 #define TFT_TOUCH_INT 255 #define TFT_DC 9 -#define TFT_CS 255 -#define TFT_RST 23 -#else -// ILI9341 -#define TFT_SCLK 13 -#define TFT_MOSI 11 -#define TFT_MISO 12 -#define TFT_TOUCH_CS 255 //38 -#define TFT_TOUCH_INT 255 //37 -#define TFT_DC 9 -#define TFT_CS 23 -#define TFT_RST 255 -#endif +#define TFT_CS 22 // 255 for LORES ST7789 (NO CS) +#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V // PSRAM #define PSRAM_CS 36 @@ -38,10 +24,10 @@ #define SD_SCLK 13 #define SD_MOSI 12 #define SD_MISO 11 -#ifdef TEENSYBOY -#define SD_CS BUILTIN_SDCARD +#ifdef EXTERNAL_SD +#define SD_CS 8 #else -#define SD_CS 5 +#define SD_CS BUILTIN_SDCARD #endif // I2C keyboard @@ -54,17 +40,15 @@ #define PIN_JOY2_BTN 17 #define PIN_KEY_USER1 3 //34 #define PIN_KEY_USER2 4 //35 -//#define PIN_KEY_USER3 255 -//#define PIN_KEY_USER4 255 +//#define PIN_KEY_USER3 33 +//#define PIN_KEY_USER4 39 -#ifdef TEENSYBOY // Second joystick #define PIN_JOY1_BTN 2 #define PIN_JOY1_1 14 // UP #define PIN_JOY1_2 7 // DOWN #define PIN_JOY1_3 6 // RIGHT #define PIN_JOY1_4 5 // LEFT -#endif #else // OLD LAYOUT!!!! diff --git a/MCUME_teensy/teensy64/platform_config.h b/MCUME_teensy/teensy64/platform_config.h index 4186a21..c6ccb01 100644 --- a/MCUME_teensy/teensy64/platform_config.h +++ b/MCUME_teensy/teensy64/platform_config.h @@ -1,14 +1,20 @@ #ifndef _PLATFORM_CONFIG_H_ #define _PLATFORM_CONFIG_H_ -//#define OLD_LAYOUT 1 -//#define TEENSYBOY 1 +//#define OLD_LAYOUT 1 -//#define HAS_PSRAM 1 +#define ILI9341 1 +//#define ST7789 1 +//#define SWAP_JOYSTICK 1 +//#define LOHRES 1 +//#define ROTATE_SCREEN 1 +#define EXTERNAL_SD 1 -//#define USE_SDFAT 1 -//#define SD_FAT_TYPE 1 -//#define USE_SDFS 1 -//#define SDFSDEV "1:" +#define HAS_PSRAM 1 + +//#define USE_SDFAT 1 +//#define SD_FAT_TYPE 1 +//#define USE_SDFS 1 +//#define SDFSDEV "1:" #endif diff --git a/MCUME_teensy/teensy64/tft_t_dma.cpp b/MCUME_teensy/teensy64/tft_t_dma.cpp index 5013b73..5c2f93d 100644 --- a/MCUME_teensy/teensy64/tft_t_dma.cpp +++ b/MCUME_teensy/teensy64/tft_t_dma.cpp @@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = { #endif }; - static void dmaInterrupt() { dmatx.clearInterrupt(); curTransfer++; @@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { int dx=0; int dy=0; - #ifdef ST7789 + if (TFT_REALWIDTH == TFT_REALHEIGHT) + { #ifdef ROTATE_SCREEN - if (!flipped) { - dy += 80; - } + if (!flipped) { + dy += 80; + } #else - if (flipped) { - dx += 80; + if (flipped) { + dx += 80; + } +#endif } -#endif -#endif +#endif + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1+dx); + digitalWrite(_dc, 1); + SPI.transfer16(x2+dx); + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1+dy); + digitalWrite(_dc, 1); + SPI.transfer16(y2+dy); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + return; + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); @@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { } + + void TFT_T_DMA::begin(void) { SPI.setMOSI(_mosi); SPI.setMISO(_miso); @@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) { SPI.begin(); // Initialize display - if (_rst < 255) { // toggle RST low to reset + if (_rst != 0xff) { pinMode(_rst, OUTPUT); digitalWrite(_rst, HIGH); - delay(5); + delay(100); digitalWrite(_rst, LOW); - delay(20); + delay(100); digitalWrite(_rst, HIGH); - delay(120); + delay(200); } - + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); const uint8_t *addr = init_commands; digitalWrite(_cs, 0); @@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) { SPI.transfer(ILI9341_DISPON); digitalWrite(_dc, 1); digitalWrite(_cs, 1); - SPI.endTransaction(); #endif #ifdef ST7789 uint8_t numCommands, numArgs; @@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) { if(ms) { ms = *addr++; // Read post-command delay time (ms) if(ms == 255) ms = 500; // If 255, delay for 500 ms - SPI.endTransaction(); - digitalWrite(_dc, 1); digitalWrite(_cs, 1); + SPI.endTransaction(); delay(ms); - //beginSPITransaction(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); } } + digitalWrite(_cs, 1); #endif setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + SPI.endTransaction(); + + cancelled = false; - cancelled = false; #ifdef FLIP_SCREEN flipscreen(true); #else flipscreen(false); -#endif +#endif +#ifdef ST7789 + if (TFT_REALWIDTH != TFT_REALHEIGHT) + { + flipscreen(true); + } +#endif }; @@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) { #endif dmatx = dmasettings[0]; digitalWrite(_cs, 0); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); digitalWrite(_dc, 0); SPI.transfer(TFT_RAMWR); digitalWrite(_dc, 1); @@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { No DMA functions ***********************************************************************************************/ void TFT_T_DMA::fillScreenNoDma(uint16_t color) { - setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + //digitalWrite(_dc, 0); + //SPI.transfer(TFT_RAMWR); int i,j; for (j=0; j> 1; @@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t else SPI.transfer16(bgcolor); } bits = *charpt++; - digitalWrite(_dc, 1); + //digitalWrite(_dc, 1); if (bits&0x01) SPI.transfer16(fgcolor); else SPI.transfer16(bgcolor); bits = bits >> 1; @@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t SPI.endTransaction(); } - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); -} - - -void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { - setArea(x,y,x+w-1,y+h-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); - int i; - for (i=0; i<(w*h); i++) - { - digitalWrite(_dc, 1); - SPI.transfer16(color); - } -#ifdef ILI9341 - digitalWrite(_dc, 0); - SPI.transfer(ILI9341_SLPOUT); - digitalWrite(_dc, 1); -#endif + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); digitalWrite(_cs, 1); SPI.endTransaction(); - - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); } + + + /*********************************************************************************************** DMA functions ***********************************************************************************************/ diff --git a/MCUME_teensy/teensy64/tft_t_dma.h b/MCUME_teensy/teensy64/tft_t_dma.h index 1fd938f..cc47f28 100644 --- a/MCUME_teensy/teensy64/tft_t_dma.h +++ b/MCUME_teensy/teensy64/tft_t_dma.h @@ -21,18 +21,16 @@ #define B16(rgb) ((rgb<<3)&0xf8) -#define TFT_HEIGHT 240 - -#ifdef ILI9341 -#define TFT_WIDTH 320 -#define TFT_REALWIDTH 320 -#define TFT_REALHEIGHT 240 -#endif -#ifdef ST7789 -#define TFT_WIDTH 240 +#ifdef LOHRES +#define TFT_WIDTH 240 #define TFT_REALWIDTH 240 -#define TFT_REALHEIGHT 240 +#else +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 #endif +#define TFT_HEIGHT 240 +#define TFT_REALHEIGHT 240 + #define LINES_PER_BLOCK 64 #define NR_OF_BLOCK 4 diff --git a/MCUME_teensy/teensy64/tft_t_dma_config.h b/MCUME_teensy/teensy64/tft_t_dma_config.h index 7ee0925..d8200a2 100644 --- a/MCUME_teensy/teensy64/tft_t_dma_config.h +++ b/MCUME_teensy/teensy64/tft_t_dma_config.h @@ -1,11 +1,7 @@ #include "platform_config.h" -#ifdef TEENSYBOY -#define ST7789 1 -#define ROTATE_SCREEN 1 -#else -#define ILI9341 1 -#endif +//#define ST7789 1 +//#define ILI9341 1 #define TFT_LINEARINT 1 #define LINEARINT_HACK 1 diff --git a/MCUME_teensy/teensy800/emuapi.cpp b/MCUME_teensy/teensy800/emuapi.cpp index 576f2d5..e205cd3 100644 --- a/MCUME_teensy/teensy800/emuapi.cpp +++ b/MCUME_teensy/teensy800/emuapi.cpp @@ -1373,7 +1373,7 @@ void emu_init(void) emu_InitJoysticks(); -#ifdef TEENSYBOY +#ifdef SWAP_JOYSTICK joySwapped = true; #else joySwapped = false; diff --git a/MCUME_teensy/teensy800/iopins.h b/MCUME_teensy/teensy800/iopins.h index eead4a9..28b6b83 100644 --- a/MCUME_teensy/teensy800/iopins.h +++ b/MCUME_teensy/teensy800/iopins.h @@ -2,31 +2,17 @@ #define IOPINS_H #include "platform_config.h" -#include "tft_t_dma_config.h" #ifndef OLD_LAYOUT -#ifdef ST7789 -// ST7789 #define TFT_SCLK 13 #define TFT_MOSI 11 #define TFT_MISO 12 #define TFT_TOUCH_CS 255 #define TFT_TOUCH_INT 255 #define TFT_DC 9 -#define TFT_CS 255 -#define TFT_RST 23 -#else -// ILI9341 -#define TFT_SCLK 13 -#define TFT_MOSI 11 -#define TFT_MISO 12 -#define TFT_TOUCH_CS 255 //38 -#define TFT_TOUCH_INT 255 //37 -#define TFT_DC 9 -#define TFT_CS 23 -#define TFT_RST 255 -#endif +#define TFT_CS 22 // 255 for LORES ST7789 (NO CS) +#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V // PSRAM #define PSRAM_CS 36 @@ -38,10 +24,10 @@ #define SD_SCLK 13 #define SD_MOSI 12 #define SD_MISO 11 -#ifdef TEENSYBOY -#define SD_CS BUILTIN_SDCARD +#ifdef EXTERNAL_SD +#define SD_CS 8 #else -#define SD_CS 5 +#define SD_CS BUILTIN_SDCARD #endif // I2C keyboard @@ -54,17 +40,15 @@ #define PIN_JOY2_BTN 17 #define PIN_KEY_USER1 3 //34 #define PIN_KEY_USER2 4 //35 -//#define PIN_KEY_USER3 255 -//#define PIN_KEY_USER4 255 +//#define PIN_KEY_USER3 33 +//#define PIN_KEY_USER4 39 -#ifdef TEENSYBOY // Second joystick #define PIN_JOY1_BTN 2 #define PIN_JOY1_1 14 // UP #define PIN_JOY1_2 7 // DOWN #define PIN_JOY1_3 6 // RIGHT #define PIN_JOY1_4 5 // LEFT -#endif #else // OLD LAYOUT!!!! diff --git a/MCUME_teensy/teensy800/platform_config.h b/MCUME_teensy/teensy800/platform_config.h index 4186a21..c6ccb01 100644 --- a/MCUME_teensy/teensy800/platform_config.h +++ b/MCUME_teensy/teensy800/platform_config.h @@ -1,14 +1,20 @@ #ifndef _PLATFORM_CONFIG_H_ #define _PLATFORM_CONFIG_H_ -//#define OLD_LAYOUT 1 -//#define TEENSYBOY 1 +//#define OLD_LAYOUT 1 -//#define HAS_PSRAM 1 +#define ILI9341 1 +//#define ST7789 1 +//#define SWAP_JOYSTICK 1 +//#define LOHRES 1 +//#define ROTATE_SCREEN 1 +#define EXTERNAL_SD 1 -//#define USE_SDFAT 1 -//#define SD_FAT_TYPE 1 -//#define USE_SDFS 1 -//#define SDFSDEV "1:" +#define HAS_PSRAM 1 + +//#define USE_SDFAT 1 +//#define SD_FAT_TYPE 1 +//#define USE_SDFS 1 +//#define SDFSDEV "1:" #endif diff --git a/MCUME_teensy/teensy800/tft_t_dma.cpp b/MCUME_teensy/teensy800/tft_t_dma.cpp index 5013b73..5c2f93d 100644 --- a/MCUME_teensy/teensy800/tft_t_dma.cpp +++ b/MCUME_teensy/teensy800/tft_t_dma.cpp @@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = { #endif }; - static void dmaInterrupt() { dmatx.clearInterrupt(); curTransfer++; @@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { int dx=0; int dy=0; - #ifdef ST7789 + if (TFT_REALWIDTH == TFT_REALHEIGHT) + { #ifdef ROTATE_SCREEN - if (!flipped) { - dy += 80; - } + if (!flipped) { + dy += 80; + } #else - if (flipped) { - dx += 80; + if (flipped) { + dx += 80; + } +#endif } -#endif -#endif +#endif + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1+dx); + digitalWrite(_dc, 1); + SPI.transfer16(x2+dx); + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1+dy); + digitalWrite(_dc, 1); + SPI.transfer16(y2+dy); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + return; + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); @@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { } + + void TFT_T_DMA::begin(void) { SPI.setMOSI(_mosi); SPI.setMISO(_miso); @@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) { SPI.begin(); // Initialize display - if (_rst < 255) { // toggle RST low to reset + if (_rst != 0xff) { pinMode(_rst, OUTPUT); digitalWrite(_rst, HIGH); - delay(5); + delay(100); digitalWrite(_rst, LOW); - delay(20); + delay(100); digitalWrite(_rst, HIGH); - delay(120); + delay(200); } - + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); const uint8_t *addr = init_commands; digitalWrite(_cs, 0); @@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) { SPI.transfer(ILI9341_DISPON); digitalWrite(_dc, 1); digitalWrite(_cs, 1); - SPI.endTransaction(); #endif #ifdef ST7789 uint8_t numCommands, numArgs; @@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) { if(ms) { ms = *addr++; // Read post-command delay time (ms) if(ms == 255) ms = 500; // If 255, delay for 500 ms - SPI.endTransaction(); - digitalWrite(_dc, 1); digitalWrite(_cs, 1); + SPI.endTransaction(); delay(ms); - //beginSPITransaction(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); } } + digitalWrite(_cs, 1); #endif setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + SPI.endTransaction(); + + cancelled = false; - cancelled = false; #ifdef FLIP_SCREEN flipscreen(true); #else flipscreen(false); -#endif +#endif +#ifdef ST7789 + if (TFT_REALWIDTH != TFT_REALHEIGHT) + { + flipscreen(true); + } +#endif }; @@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) { #endif dmatx = dmasettings[0]; digitalWrite(_cs, 0); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); digitalWrite(_dc, 0); SPI.transfer(TFT_RAMWR); digitalWrite(_dc, 1); @@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { No DMA functions ***********************************************************************************************/ void TFT_T_DMA::fillScreenNoDma(uint16_t color) { - setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + //digitalWrite(_dc, 0); + //SPI.transfer(TFT_RAMWR); int i,j; for (j=0; j> 1; @@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t else SPI.transfer16(bgcolor); } bits = *charpt++; - digitalWrite(_dc, 1); + //digitalWrite(_dc, 1); if (bits&0x01) SPI.transfer16(fgcolor); else SPI.transfer16(bgcolor); bits = bits >> 1; @@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t SPI.endTransaction(); } - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); -} - - -void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { - setArea(x,y,x+w-1,y+h-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); - int i; - for (i=0; i<(w*h); i++) - { - digitalWrite(_dc, 1); - SPI.transfer16(color); - } -#ifdef ILI9341 - digitalWrite(_dc, 0); - SPI.transfer(ILI9341_SLPOUT); - digitalWrite(_dc, 1); -#endif + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); digitalWrite(_cs, 1); SPI.endTransaction(); - - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); } + + + /*********************************************************************************************** DMA functions ***********************************************************************************************/ diff --git a/MCUME_teensy/teensy800/tft_t_dma.h b/MCUME_teensy/teensy800/tft_t_dma.h index 1fd938f..6de7661 100644 --- a/MCUME_teensy/teensy800/tft_t_dma.h +++ b/MCUME_teensy/teensy800/tft_t_dma.h @@ -21,18 +21,15 @@ #define B16(rgb) ((rgb<<3)&0xf8) -#define TFT_HEIGHT 240 - -#ifdef ILI9341 -#define TFT_WIDTH 320 -#define TFT_REALWIDTH 320 -#define TFT_REALHEIGHT 240 -#endif -#ifdef ST7789 -#define TFT_WIDTH 240 +#ifdef LOHRES +#define TFT_WIDTH 240 #define TFT_REALWIDTH 240 -#define TFT_REALHEIGHT 240 +#else +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 #endif +#define TFT_HEIGHT 240 +#define TFT_REALHEIGHT 240 #define LINES_PER_BLOCK 64 #define NR_OF_BLOCK 4 diff --git a/MCUME_teensy/teensy800/tft_t_dma_config.h b/MCUME_teensy/teensy800/tft_t_dma_config.h index 7ee0925..d8200a2 100644 --- a/MCUME_teensy/teensy800/tft_t_dma_config.h +++ b/MCUME_teensy/teensy800/tft_t_dma_config.h @@ -1,11 +1,7 @@ #include "platform_config.h" -#ifdef TEENSYBOY -#define ST7789 1 -#define ROTATE_SCREEN 1 -#else -#define ILI9341 1 -#endif +//#define ST7789 1 +//#define ILI9341 1 #define TFT_LINEARINT 1 #define LINEARINT_HACK 1 diff --git a/MCUME_teensy/teensy8086/emuapi.cpp b/MCUME_teensy/teensy8086/emuapi.cpp index a4c9859..4f2ee2e 100644 --- a/MCUME_teensy/teensy8086/emuapi.cpp +++ b/MCUME_teensy/teensy8086/emuapi.cpp @@ -1373,7 +1373,7 @@ void emu_init(void) emu_InitJoysticks(); -#ifdef TEENSYBOY +#ifdef SWAP_JOYSTICK joySwapped = true; #else joySwapped = false; diff --git a/MCUME_teensy/teensy8086/iopins.h b/MCUME_teensy/teensy8086/iopins.h index eead4a9..28b6b83 100644 --- a/MCUME_teensy/teensy8086/iopins.h +++ b/MCUME_teensy/teensy8086/iopins.h @@ -2,31 +2,17 @@ #define IOPINS_H #include "platform_config.h" -#include "tft_t_dma_config.h" #ifndef OLD_LAYOUT -#ifdef ST7789 -// ST7789 #define TFT_SCLK 13 #define TFT_MOSI 11 #define TFT_MISO 12 #define TFT_TOUCH_CS 255 #define TFT_TOUCH_INT 255 #define TFT_DC 9 -#define TFT_CS 255 -#define TFT_RST 23 -#else -// ILI9341 -#define TFT_SCLK 13 -#define TFT_MOSI 11 -#define TFT_MISO 12 -#define TFT_TOUCH_CS 255 //38 -#define TFT_TOUCH_INT 255 //37 -#define TFT_DC 9 -#define TFT_CS 23 -#define TFT_RST 255 -#endif +#define TFT_CS 22 // 255 for LORES ST7789 (NO CS) +#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V // PSRAM #define PSRAM_CS 36 @@ -38,10 +24,10 @@ #define SD_SCLK 13 #define SD_MOSI 12 #define SD_MISO 11 -#ifdef TEENSYBOY -#define SD_CS BUILTIN_SDCARD +#ifdef EXTERNAL_SD +#define SD_CS 8 #else -#define SD_CS 5 +#define SD_CS BUILTIN_SDCARD #endif // I2C keyboard @@ -54,17 +40,15 @@ #define PIN_JOY2_BTN 17 #define PIN_KEY_USER1 3 //34 #define PIN_KEY_USER2 4 //35 -//#define PIN_KEY_USER3 255 -//#define PIN_KEY_USER4 255 +//#define PIN_KEY_USER3 33 +//#define PIN_KEY_USER4 39 -#ifdef TEENSYBOY // Second joystick #define PIN_JOY1_BTN 2 #define PIN_JOY1_1 14 // UP #define PIN_JOY1_2 7 // DOWN #define PIN_JOY1_3 6 // RIGHT #define PIN_JOY1_4 5 // LEFT -#endif #else // OLD LAYOUT!!!! diff --git a/MCUME_teensy/teensy8086/platform_config.h b/MCUME_teensy/teensy8086/platform_config.h index 4186a21..c6ccb01 100644 --- a/MCUME_teensy/teensy8086/platform_config.h +++ b/MCUME_teensy/teensy8086/platform_config.h @@ -1,14 +1,20 @@ #ifndef _PLATFORM_CONFIG_H_ #define _PLATFORM_CONFIG_H_ -//#define OLD_LAYOUT 1 -//#define TEENSYBOY 1 +//#define OLD_LAYOUT 1 -//#define HAS_PSRAM 1 +#define ILI9341 1 +//#define ST7789 1 +//#define SWAP_JOYSTICK 1 +//#define LOHRES 1 +//#define ROTATE_SCREEN 1 +#define EXTERNAL_SD 1 -//#define USE_SDFAT 1 -//#define SD_FAT_TYPE 1 -//#define USE_SDFS 1 -//#define SDFSDEV "1:" +#define HAS_PSRAM 1 + +//#define USE_SDFAT 1 +//#define SD_FAT_TYPE 1 +//#define USE_SDFS 1 +//#define SDFSDEV "1:" #endif diff --git a/MCUME_teensy/teensy8086/tft_t_dma.cpp b/MCUME_teensy/teensy8086/tft_t_dma.cpp index 5013b73..5c2f93d 100644 --- a/MCUME_teensy/teensy8086/tft_t_dma.cpp +++ b/MCUME_teensy/teensy8086/tft_t_dma.cpp @@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = { #endif }; - static void dmaInterrupt() { dmatx.clearInterrupt(); curTransfer++; @@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { int dx=0; int dy=0; - #ifdef ST7789 + if (TFT_REALWIDTH == TFT_REALHEIGHT) + { #ifdef ROTATE_SCREEN - if (!flipped) { - dy += 80; - } + if (!flipped) { + dy += 80; + } #else - if (flipped) { - dx += 80; + if (flipped) { + dx += 80; + } +#endif } -#endif -#endif +#endif + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1+dx); + digitalWrite(_dc, 1); + SPI.transfer16(x2+dx); + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1+dy); + digitalWrite(_dc, 1); + SPI.transfer16(y2+dy); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + return; + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); @@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { } + + void TFT_T_DMA::begin(void) { SPI.setMOSI(_mosi); SPI.setMISO(_miso); @@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) { SPI.begin(); // Initialize display - if (_rst < 255) { // toggle RST low to reset + if (_rst != 0xff) { pinMode(_rst, OUTPUT); digitalWrite(_rst, HIGH); - delay(5); + delay(100); digitalWrite(_rst, LOW); - delay(20); + delay(100); digitalWrite(_rst, HIGH); - delay(120); + delay(200); } - + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); const uint8_t *addr = init_commands; digitalWrite(_cs, 0); @@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) { SPI.transfer(ILI9341_DISPON); digitalWrite(_dc, 1); digitalWrite(_cs, 1); - SPI.endTransaction(); #endif #ifdef ST7789 uint8_t numCommands, numArgs; @@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) { if(ms) { ms = *addr++; // Read post-command delay time (ms) if(ms == 255) ms = 500; // If 255, delay for 500 ms - SPI.endTransaction(); - digitalWrite(_dc, 1); digitalWrite(_cs, 1); + SPI.endTransaction(); delay(ms); - //beginSPITransaction(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); } } + digitalWrite(_cs, 1); #endif setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + SPI.endTransaction(); + + cancelled = false; - cancelled = false; #ifdef FLIP_SCREEN flipscreen(true); #else flipscreen(false); -#endif +#endif +#ifdef ST7789 + if (TFT_REALWIDTH != TFT_REALHEIGHT) + { + flipscreen(true); + } +#endif }; @@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) { #endif dmatx = dmasettings[0]; digitalWrite(_cs, 0); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); digitalWrite(_dc, 0); SPI.transfer(TFT_RAMWR); digitalWrite(_dc, 1); @@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { No DMA functions ***********************************************************************************************/ void TFT_T_DMA::fillScreenNoDma(uint16_t color) { - setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + //digitalWrite(_dc, 0); + //SPI.transfer(TFT_RAMWR); int i,j; for (j=0; j> 1; @@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t else SPI.transfer16(bgcolor); } bits = *charpt++; - digitalWrite(_dc, 1); + //digitalWrite(_dc, 1); if (bits&0x01) SPI.transfer16(fgcolor); else SPI.transfer16(bgcolor); bits = bits >> 1; @@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t SPI.endTransaction(); } - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); -} - - -void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { - setArea(x,y,x+w-1,y+h-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); - int i; - for (i=0; i<(w*h); i++) - { - digitalWrite(_dc, 1); - SPI.transfer16(color); - } -#ifdef ILI9341 - digitalWrite(_dc, 0); - SPI.transfer(ILI9341_SLPOUT); - digitalWrite(_dc, 1); -#endif + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); digitalWrite(_cs, 1); SPI.endTransaction(); - - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); } + + + /*********************************************************************************************** DMA functions ***********************************************************************************************/ diff --git a/MCUME_teensy/teensy8086/tft_t_dma.h b/MCUME_teensy/teensy8086/tft_t_dma.h index c42e479..bfdcd4c 100644 --- a/MCUME_teensy/teensy8086/tft_t_dma.h +++ b/MCUME_teensy/teensy8086/tft_t_dma.h @@ -21,18 +21,15 @@ #define B16(rgb) ((rgb<<3)&0xf8) -#define TFT_HEIGHT 200 - -#ifdef ILI9341 -#define TFT_WIDTH 320 -#define TFT_REALWIDTH 320 -#define TFT_REALHEIGHT 240 -#endif -#ifdef ST7789 -#define TFT_WIDTH 240 +#ifdef LOHRES +#define TFT_WIDTH 240 #define TFT_REALWIDTH 240 -#define TFT_REALHEIGHT 240 +#else +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 #endif +#define TFT_HEIGHT 200 +#define TFT_REALHEIGHT 240 #define LINES_PER_BLOCK 64 #define NR_OF_BLOCK 4 diff --git a/MCUME_teensy/teensy8086/tft_t_dma_config.h b/MCUME_teensy/teensy8086/tft_t_dma_config.h index 7ee0925..d8200a2 100644 --- a/MCUME_teensy/teensy8086/tft_t_dma_config.h +++ b/MCUME_teensy/teensy8086/tft_t_dma_config.h @@ -1,11 +1,7 @@ #include "platform_config.h" -#ifdef TEENSYBOY -#define ST7789 1 -#define ROTATE_SCREEN 1 -#else -#define ILI9341 1 -#endif +//#define ST7789 1 +//#define ILI9341 1 #define TFT_LINEARINT 1 #define LINEARINT_HACK 1 diff --git a/MCUME_teensy/teensy81/emuapi.cpp b/MCUME_teensy/teensy81/emuapi.cpp index 88ffb50..4dfafd6 100644 --- a/MCUME_teensy/teensy81/emuapi.cpp +++ b/MCUME_teensy/teensy81/emuapi.cpp @@ -1380,7 +1380,7 @@ void emu_init(void) emu_InitJoysticks(); -#ifdef TEENSYBOY +#ifdef SWAP_JOYSTICK joySwapped = true; #else joySwapped = false; diff --git a/MCUME_teensy/teensy81/iopins.h b/MCUME_teensy/teensy81/iopins.h index eead4a9..28b6b83 100644 --- a/MCUME_teensy/teensy81/iopins.h +++ b/MCUME_teensy/teensy81/iopins.h @@ -2,31 +2,17 @@ #define IOPINS_H #include "platform_config.h" -#include "tft_t_dma_config.h" #ifndef OLD_LAYOUT -#ifdef ST7789 -// ST7789 #define TFT_SCLK 13 #define TFT_MOSI 11 #define TFT_MISO 12 #define TFT_TOUCH_CS 255 #define TFT_TOUCH_INT 255 #define TFT_DC 9 -#define TFT_CS 255 -#define TFT_RST 23 -#else -// ILI9341 -#define TFT_SCLK 13 -#define TFT_MOSI 11 -#define TFT_MISO 12 -#define TFT_TOUCH_CS 255 //38 -#define TFT_TOUCH_INT 255 //37 -#define TFT_DC 9 -#define TFT_CS 23 -#define TFT_RST 255 -#endif +#define TFT_CS 22 // 255 for LORES ST7789 (NO CS) +#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V // PSRAM #define PSRAM_CS 36 @@ -38,10 +24,10 @@ #define SD_SCLK 13 #define SD_MOSI 12 #define SD_MISO 11 -#ifdef TEENSYBOY -#define SD_CS BUILTIN_SDCARD +#ifdef EXTERNAL_SD +#define SD_CS 8 #else -#define SD_CS 5 +#define SD_CS BUILTIN_SDCARD #endif // I2C keyboard @@ -54,17 +40,15 @@ #define PIN_JOY2_BTN 17 #define PIN_KEY_USER1 3 //34 #define PIN_KEY_USER2 4 //35 -//#define PIN_KEY_USER3 255 -//#define PIN_KEY_USER4 255 +//#define PIN_KEY_USER3 33 +//#define PIN_KEY_USER4 39 -#ifdef TEENSYBOY // Second joystick #define PIN_JOY1_BTN 2 #define PIN_JOY1_1 14 // UP #define PIN_JOY1_2 7 // DOWN #define PIN_JOY1_3 6 // RIGHT #define PIN_JOY1_4 5 // LEFT -#endif #else // OLD LAYOUT!!!! diff --git a/MCUME_teensy/teensy81/platform_config.h b/MCUME_teensy/teensy81/platform_config.h index 4186a21..c6ccb01 100644 --- a/MCUME_teensy/teensy81/platform_config.h +++ b/MCUME_teensy/teensy81/platform_config.h @@ -1,14 +1,20 @@ #ifndef _PLATFORM_CONFIG_H_ #define _PLATFORM_CONFIG_H_ -//#define OLD_LAYOUT 1 -//#define TEENSYBOY 1 +//#define OLD_LAYOUT 1 -//#define HAS_PSRAM 1 +#define ILI9341 1 +//#define ST7789 1 +//#define SWAP_JOYSTICK 1 +//#define LOHRES 1 +//#define ROTATE_SCREEN 1 +#define EXTERNAL_SD 1 -//#define USE_SDFAT 1 -//#define SD_FAT_TYPE 1 -//#define USE_SDFS 1 -//#define SDFSDEV "1:" +#define HAS_PSRAM 1 + +//#define USE_SDFAT 1 +//#define SD_FAT_TYPE 1 +//#define USE_SDFS 1 +//#define SDFSDEV "1:" #endif diff --git a/MCUME_teensy/teensy81/tft_t_dma.cpp b/MCUME_teensy/teensy81/tft_t_dma.cpp index 5013b73..241bc22 100644 --- a/MCUME_teensy/teensy81/tft_t_dma.cpp +++ b/MCUME_teensy/teensy81/tft_t_dma.cpp @@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = { #endif }; - static void dmaInterrupt() { dmatx.clearInterrupt(); curTransfer++; @@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { int dx=0; int dy=0; - #ifdef ST7789 + if (TFT_REALWIDTH == TFT_REALHEIGHT) + { #ifdef ROTATE_SCREEN - if (!flipped) { - dy += 80; - } + if (!flipped) { + dy += 80; + } #else - if (flipped) { - dx += 80; + if (flipped) { + dx += 80; + } +#endif } -#endif -#endif +#endif + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1+dx); + digitalWrite(_dc, 1); + SPI.transfer16(x2+dx); + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1+dy); + digitalWrite(_dc, 1); + SPI.transfer16(y2+dy); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + return; + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); @@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { } + + void TFT_T_DMA::begin(void) { SPI.setMOSI(_mosi); SPI.setMISO(_miso); @@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) { SPI.begin(); // Initialize display - if (_rst < 255) { // toggle RST low to reset + if (_rst != 0xff) { pinMode(_rst, OUTPUT); digitalWrite(_rst, HIGH); - delay(5); + delay(100); digitalWrite(_rst, LOW); - delay(20); + delay(100); digitalWrite(_rst, HIGH); - delay(120); + delay(200); } - + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); const uint8_t *addr = init_commands; digitalWrite(_cs, 0); @@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) { SPI.transfer(ILI9341_DISPON); digitalWrite(_dc, 1); digitalWrite(_cs, 1); - SPI.endTransaction(); #endif #ifdef ST7789 uint8_t numCommands, numArgs; @@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) { if(ms) { ms = *addr++; // Read post-command delay time (ms) if(ms == 255) ms = 500; // If 255, delay for 500 ms - SPI.endTransaction(); - digitalWrite(_dc, 1); digitalWrite(_cs, 1); + SPI.endTransaction(); delay(ms); - //beginSPITransaction(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); } } + digitalWrite(_cs, 1); #endif setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + SPI.endTransaction(); + + cancelled = false; - cancelled = false; #ifdef FLIP_SCREEN flipscreen(true); #else flipscreen(false); -#endif +#endif +#ifdef ST7789 + if (TFT_REALWIDTH != TFT_REALHEIGHT) + { + flipscreen(true); + } +#endif }; @@ -410,7 +443,7 @@ void TFT_T_DMA::startDMA(void) { digitalWrite(_cs, HIGH); SPI.begin(); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); -#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + #if defined(__IMXRT1052__) || defined(__IMXRT1062__) #ifdef TFT_DEBUG PRREG(LPSPI4_CCR); @@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) { #endif dmatx = dmasettings[0]; digitalWrite(_cs, 0); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); digitalWrite(_dc, 0); SPI.transfer(TFT_RAMWR); digitalWrite(_dc, 1); @@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { No DMA functions ***********************************************************************************************/ void TFT_T_DMA::fillScreenNoDma(uint16_t color) { - setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + //digitalWrite(_dc, 0); + //SPI.transfer(TFT_RAMWR); int i,j; for (j=0; j> 1; @@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t else SPI.transfer16(bgcolor); } bits = *charpt++; - digitalWrite(_dc, 1); + //digitalWrite(_dc, 1); if (bits&0x01) SPI.transfer16(fgcolor); else SPI.transfer16(bgcolor); bits = bits >> 1; @@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t SPI.endTransaction(); } - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); -} - - -void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { - setArea(x,y,x+w-1,y+h-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); - int i; - for (i=0; i<(w*h); i++) - { - digitalWrite(_dc, 1); - SPI.transfer16(color); - } -#ifdef ILI9341 - digitalWrite(_dc, 0); - SPI.transfer(ILI9341_SLPOUT); - digitalWrite(_dc, 1); -#endif + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); digitalWrite(_cs, 1); SPI.endTransaction(); - - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); } + + + /*********************************************************************************************** DMA functions ***********************************************************************************************/ diff --git a/MCUME_teensy/teensy81/tft_t_dma.h b/MCUME_teensy/teensy81/tft_t_dma.h index a65f881..f86f7f3 100644 --- a/MCUME_teensy/teensy81/tft_t_dma.h +++ b/MCUME_teensy/teensy81/tft_t_dma.h @@ -21,18 +21,15 @@ #define B16(rgb) ((rgb<<3)&0xf8) -#define TFT_HEIGHT 192 - -#ifdef ILI9341 -#define TFT_WIDTH 320 -#define TFT_REALWIDTH 320 -#define TFT_REALHEIGHT 240 -#endif -#ifdef ST7789 -#define TFT_WIDTH 240 +#ifdef LOHRES +#define TFT_WIDTH 240 #define TFT_REALWIDTH 240 -#define TFT_REALHEIGHT 240 +#else +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 #endif +#define TFT_HEIGHT 192 +#define TFT_REALHEIGHT 240 #define LINES_PER_BLOCK 64 #define NR_OF_BLOCK 4 diff --git a/MCUME_teensy/teensy81/tft_t_dma_config.h b/MCUME_teensy/teensy81/tft_t_dma_config.h index 7ee0925..d8200a2 100644 --- a/MCUME_teensy/teensy81/tft_t_dma_config.h +++ b/MCUME_teensy/teensy81/tft_t_dma_config.h @@ -1,11 +1,7 @@ #include "platform_config.h" -#ifdef TEENSYBOY -#define ST7789 1 -#define ROTATE_SCREEN 1 -#else -#define ILI9341 1 -#endif +//#define ST7789 1 +//#define ILI9341 1 #define TFT_LINEARINT 1 #define LINEARINT_HACK 1 diff --git a/MCUME_teensy/teensycastaway/emuapi.cpp b/MCUME_teensy/teensycastaway/emuapi.cpp index c195bb4..9f3b387 100644 --- a/MCUME_teensy/teensycastaway/emuapi.cpp +++ b/MCUME_teensy/teensycastaway/emuapi.cpp @@ -1410,7 +1410,7 @@ void emu_init(void) emu_InitJoysticks(); -#ifdef TEENSYBOY +#ifdef SWAP_JOYSTICK joySwapped = true; #else joySwapped = false; diff --git a/MCUME_teensy/teensycastaway/iopins.h b/MCUME_teensy/teensycastaway/iopins.h index eead4a9..28b6b83 100644 --- a/MCUME_teensy/teensycastaway/iopins.h +++ b/MCUME_teensy/teensycastaway/iopins.h @@ -2,31 +2,17 @@ #define IOPINS_H #include "platform_config.h" -#include "tft_t_dma_config.h" #ifndef OLD_LAYOUT -#ifdef ST7789 -// ST7789 #define TFT_SCLK 13 #define TFT_MOSI 11 #define TFT_MISO 12 #define TFT_TOUCH_CS 255 #define TFT_TOUCH_INT 255 #define TFT_DC 9 -#define TFT_CS 255 -#define TFT_RST 23 -#else -// ILI9341 -#define TFT_SCLK 13 -#define TFT_MOSI 11 -#define TFT_MISO 12 -#define TFT_TOUCH_CS 255 //38 -#define TFT_TOUCH_INT 255 //37 -#define TFT_DC 9 -#define TFT_CS 23 -#define TFT_RST 255 -#endif +#define TFT_CS 22 // 255 for LORES ST7789 (NO CS) +#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V // PSRAM #define PSRAM_CS 36 @@ -38,10 +24,10 @@ #define SD_SCLK 13 #define SD_MOSI 12 #define SD_MISO 11 -#ifdef TEENSYBOY -#define SD_CS BUILTIN_SDCARD +#ifdef EXTERNAL_SD +#define SD_CS 8 #else -#define SD_CS 5 +#define SD_CS BUILTIN_SDCARD #endif // I2C keyboard @@ -54,17 +40,15 @@ #define PIN_JOY2_BTN 17 #define PIN_KEY_USER1 3 //34 #define PIN_KEY_USER2 4 //35 -//#define PIN_KEY_USER3 255 -//#define PIN_KEY_USER4 255 +//#define PIN_KEY_USER3 33 +//#define PIN_KEY_USER4 39 -#ifdef TEENSYBOY // Second joystick #define PIN_JOY1_BTN 2 #define PIN_JOY1_1 14 // UP #define PIN_JOY1_2 7 // DOWN #define PIN_JOY1_3 6 // RIGHT #define PIN_JOY1_4 5 // LEFT -#endif #else // OLD LAYOUT!!!! diff --git a/MCUME_teensy/teensycastaway/platform_config.h b/MCUME_teensy/teensycastaway/platform_config.h index 89bbe11..c6ccb01 100644 --- a/MCUME_teensy/teensycastaway/platform_config.h +++ b/MCUME_teensy/teensycastaway/platform_config.h @@ -1,14 +1,20 @@ #ifndef _PLATFORM_CONFIG_H_ #define _PLATFORM_CONFIG_H_ -//#define OLD_LAYOUT 1 -//#define TEENSYBOY 1 +//#define OLD_LAYOUT 1 -#define HAS_PSRAM 1 +#define ILI9341 1 +//#define ST7789 1 +//#define SWAP_JOYSTICK 1 +//#define LOHRES 1 +//#define ROTATE_SCREEN 1 +#define EXTERNAL_SD 1 -//#define USE_SDFAT 1 -//#define SD_FAT_TYPE 1 -//#define USE_SDFS 1 -//#define SDFSDEV "1:" +#define HAS_PSRAM 1 + +//#define USE_SDFAT 1 +//#define SD_FAT_TYPE 1 +//#define USE_SDFS 1 +//#define SDFSDEV "1:" #endif diff --git a/MCUME_teensy/teensycastaway/sound.h b/MCUME_teensy/teensycastaway/sound.h index 69dbbfc..7e0529d 100644 --- a/MCUME_teensy/teensycastaway/sound.h +++ b/MCUME_teensy/teensycastaway/sound.h @@ -37,7 +37,7 @@ enum FREQ_44Khz }; -#define MIXBUFFER_SIZE 8192 +#define MIXBUFFER_SIZE 1024 //8192 #define SCREEN_START_CYCLE 96 /* Cycle first normal pixel appears on */ #define SCANLINES_PER_FRAME 313 /* Number of scan lines per frame */ #define CYCLES_PER_LINE 512 /* Cycles per horiztonal line scan */ diff --git a/MCUME_teensy/teensycastaway/tft_t_dma.cpp b/MCUME_teensy/teensycastaway/tft_t_dma.cpp index 5013b73..5c2f93d 100644 --- a/MCUME_teensy/teensycastaway/tft_t_dma.cpp +++ b/MCUME_teensy/teensycastaway/tft_t_dma.cpp @@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = { #endif }; - static void dmaInterrupt() { dmatx.clearInterrupt(); curTransfer++; @@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { int dx=0; int dy=0; - #ifdef ST7789 + if (TFT_REALWIDTH == TFT_REALHEIGHT) + { #ifdef ROTATE_SCREEN - if (!flipped) { - dy += 80; - } + if (!flipped) { + dy += 80; + } #else - if (flipped) { - dx += 80; + if (flipped) { + dx += 80; + } +#endif } -#endif -#endif +#endif + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1+dx); + digitalWrite(_dc, 1); + SPI.transfer16(x2+dx); + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1+dy); + digitalWrite(_dc, 1); + SPI.transfer16(y2+dy); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + return; + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); @@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { } + + void TFT_T_DMA::begin(void) { SPI.setMOSI(_mosi); SPI.setMISO(_miso); @@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) { SPI.begin(); // Initialize display - if (_rst < 255) { // toggle RST low to reset + if (_rst != 0xff) { pinMode(_rst, OUTPUT); digitalWrite(_rst, HIGH); - delay(5); + delay(100); digitalWrite(_rst, LOW); - delay(20); + delay(100); digitalWrite(_rst, HIGH); - delay(120); + delay(200); } - + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); const uint8_t *addr = init_commands; digitalWrite(_cs, 0); @@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) { SPI.transfer(ILI9341_DISPON); digitalWrite(_dc, 1); digitalWrite(_cs, 1); - SPI.endTransaction(); #endif #ifdef ST7789 uint8_t numCommands, numArgs; @@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) { if(ms) { ms = *addr++; // Read post-command delay time (ms) if(ms == 255) ms = 500; // If 255, delay for 500 ms - SPI.endTransaction(); - digitalWrite(_dc, 1); digitalWrite(_cs, 1); + SPI.endTransaction(); delay(ms); - //beginSPITransaction(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); } } + digitalWrite(_cs, 1); #endif setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + SPI.endTransaction(); + + cancelled = false; - cancelled = false; #ifdef FLIP_SCREEN flipscreen(true); #else flipscreen(false); -#endif +#endif +#ifdef ST7789 + if (TFT_REALWIDTH != TFT_REALHEIGHT) + { + flipscreen(true); + } +#endif }; @@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) { #endif dmatx = dmasettings[0]; digitalWrite(_cs, 0); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); digitalWrite(_dc, 0); SPI.transfer(TFT_RAMWR); digitalWrite(_dc, 1); @@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { No DMA functions ***********************************************************************************************/ void TFT_T_DMA::fillScreenNoDma(uint16_t color) { - setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + //digitalWrite(_dc, 0); + //SPI.transfer(TFT_RAMWR); int i,j; for (j=0; j> 1; @@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t else SPI.transfer16(bgcolor); } bits = *charpt++; - digitalWrite(_dc, 1); + //digitalWrite(_dc, 1); if (bits&0x01) SPI.transfer16(fgcolor); else SPI.transfer16(bgcolor); bits = bits >> 1; @@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t SPI.endTransaction(); } - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); -} - - -void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { - setArea(x,y,x+w-1,y+h-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); - int i; - for (i=0; i<(w*h); i++) - { - digitalWrite(_dc, 1); - SPI.transfer16(color); - } -#ifdef ILI9341 - digitalWrite(_dc, 0); - SPI.transfer(ILI9341_SLPOUT); - digitalWrite(_dc, 1); -#endif + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); digitalWrite(_cs, 1); SPI.endTransaction(); - - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); } + + + /*********************************************************************************************** DMA functions ***********************************************************************************************/ diff --git a/MCUME_teensy/teensycastaway/tft_t_dma.h b/MCUME_teensy/teensycastaway/tft_t_dma.h index c42e479..fb80c3e 100644 --- a/MCUME_teensy/teensycastaway/tft_t_dma.h +++ b/MCUME_teensy/teensycastaway/tft_t_dma.h @@ -21,18 +21,16 @@ #define B16(rgb) ((rgb<<3)&0xf8) -#define TFT_HEIGHT 200 - -#ifdef ILI9341 -#define TFT_WIDTH 320 -#define TFT_REALWIDTH 320 -#define TFT_REALHEIGHT 240 -#endif -#ifdef ST7789 -#define TFT_WIDTH 240 +#ifdef LOHRES +#define TFT_WIDTH 240 #define TFT_REALWIDTH 240 -#define TFT_REALHEIGHT 240 +#else +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 #endif +#define TFT_HEIGHT 200 +#define TFT_REALHEIGHT 240 + #define LINES_PER_BLOCK 64 #define NR_OF_BLOCK 4 diff --git a/MCUME_teensy/teensycastaway/tft_t_dma_config.h b/MCUME_teensy/teensycastaway/tft_t_dma_config.h index 7ee0925..d8200a2 100644 --- a/MCUME_teensy/teensycastaway/tft_t_dma_config.h +++ b/MCUME_teensy/teensycastaway/tft_t_dma_config.h @@ -1,11 +1,7 @@ #include "platform_config.h" -#ifdef TEENSYBOY -#define ST7789 1 -#define ROTATE_SCREEN 1 -#else -#define ILI9341 1 -#endif +//#define ST7789 1 +//#define ILI9341 1 #define TFT_LINEARINT 1 #define LINEARINT_HACK 1 diff --git a/MCUME_teensy/teensycolem/emuapi.cpp b/MCUME_teensy/teensycolem/emuapi.cpp index 576f2d5..e205cd3 100644 --- a/MCUME_teensy/teensycolem/emuapi.cpp +++ b/MCUME_teensy/teensycolem/emuapi.cpp @@ -1373,7 +1373,7 @@ void emu_init(void) emu_InitJoysticks(); -#ifdef TEENSYBOY +#ifdef SWAP_JOYSTICK joySwapped = true; #else joySwapped = false; diff --git a/MCUME_teensy/teensycolem/iopins.h b/MCUME_teensy/teensycolem/iopins.h index eead4a9..28b6b83 100644 --- a/MCUME_teensy/teensycolem/iopins.h +++ b/MCUME_teensy/teensycolem/iopins.h @@ -2,31 +2,17 @@ #define IOPINS_H #include "platform_config.h" -#include "tft_t_dma_config.h" #ifndef OLD_LAYOUT -#ifdef ST7789 -// ST7789 #define TFT_SCLK 13 #define TFT_MOSI 11 #define TFT_MISO 12 #define TFT_TOUCH_CS 255 #define TFT_TOUCH_INT 255 #define TFT_DC 9 -#define TFT_CS 255 -#define TFT_RST 23 -#else -// ILI9341 -#define TFT_SCLK 13 -#define TFT_MOSI 11 -#define TFT_MISO 12 -#define TFT_TOUCH_CS 255 //38 -#define TFT_TOUCH_INT 255 //37 -#define TFT_DC 9 -#define TFT_CS 23 -#define TFT_RST 255 -#endif +#define TFT_CS 22 // 255 for LORES ST7789 (NO CS) +#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V // PSRAM #define PSRAM_CS 36 @@ -38,10 +24,10 @@ #define SD_SCLK 13 #define SD_MOSI 12 #define SD_MISO 11 -#ifdef TEENSYBOY -#define SD_CS BUILTIN_SDCARD +#ifdef EXTERNAL_SD +#define SD_CS 8 #else -#define SD_CS 5 +#define SD_CS BUILTIN_SDCARD #endif // I2C keyboard @@ -54,17 +40,15 @@ #define PIN_JOY2_BTN 17 #define PIN_KEY_USER1 3 //34 #define PIN_KEY_USER2 4 //35 -//#define PIN_KEY_USER3 255 -//#define PIN_KEY_USER4 255 +//#define PIN_KEY_USER3 33 +//#define PIN_KEY_USER4 39 -#ifdef TEENSYBOY // Second joystick #define PIN_JOY1_BTN 2 #define PIN_JOY1_1 14 // UP #define PIN_JOY1_2 7 // DOWN #define PIN_JOY1_3 6 // RIGHT #define PIN_JOY1_4 5 // LEFT -#endif #else // OLD LAYOUT!!!! diff --git a/MCUME_teensy/teensycolem/platform_config.h b/MCUME_teensy/teensycolem/platform_config.h index 4186a21..c6ccb01 100644 --- a/MCUME_teensy/teensycolem/platform_config.h +++ b/MCUME_teensy/teensycolem/platform_config.h @@ -1,14 +1,20 @@ #ifndef _PLATFORM_CONFIG_H_ #define _PLATFORM_CONFIG_H_ -//#define OLD_LAYOUT 1 -//#define TEENSYBOY 1 +//#define OLD_LAYOUT 1 -//#define HAS_PSRAM 1 +#define ILI9341 1 +//#define ST7789 1 +//#define SWAP_JOYSTICK 1 +//#define LOHRES 1 +//#define ROTATE_SCREEN 1 +#define EXTERNAL_SD 1 -//#define USE_SDFAT 1 -//#define SD_FAT_TYPE 1 -//#define USE_SDFS 1 -//#define SDFSDEV "1:" +#define HAS_PSRAM 1 + +//#define USE_SDFAT 1 +//#define SD_FAT_TYPE 1 +//#define USE_SDFS 1 +//#define SDFSDEV "1:" #endif diff --git a/MCUME_teensy/teensycolem/tft_t_dma.cpp b/MCUME_teensy/teensycolem/tft_t_dma.cpp index 5013b73..5c2f93d 100644 --- a/MCUME_teensy/teensycolem/tft_t_dma.cpp +++ b/MCUME_teensy/teensycolem/tft_t_dma.cpp @@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = { #endif }; - static void dmaInterrupt() { dmatx.clearInterrupt(); curTransfer++; @@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { int dx=0; int dy=0; - #ifdef ST7789 + if (TFT_REALWIDTH == TFT_REALHEIGHT) + { #ifdef ROTATE_SCREEN - if (!flipped) { - dy += 80; - } + if (!flipped) { + dy += 80; + } #else - if (flipped) { - dx += 80; + if (flipped) { + dx += 80; + } +#endif } -#endif -#endif +#endif + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1+dx); + digitalWrite(_dc, 1); + SPI.transfer16(x2+dx); + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1+dy); + digitalWrite(_dc, 1); + SPI.transfer16(y2+dy); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + return; + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); @@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { } + + void TFT_T_DMA::begin(void) { SPI.setMOSI(_mosi); SPI.setMISO(_miso); @@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) { SPI.begin(); // Initialize display - if (_rst < 255) { // toggle RST low to reset + if (_rst != 0xff) { pinMode(_rst, OUTPUT); digitalWrite(_rst, HIGH); - delay(5); + delay(100); digitalWrite(_rst, LOW); - delay(20); + delay(100); digitalWrite(_rst, HIGH); - delay(120); + delay(200); } - + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); const uint8_t *addr = init_commands; digitalWrite(_cs, 0); @@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) { SPI.transfer(ILI9341_DISPON); digitalWrite(_dc, 1); digitalWrite(_cs, 1); - SPI.endTransaction(); #endif #ifdef ST7789 uint8_t numCommands, numArgs; @@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) { if(ms) { ms = *addr++; // Read post-command delay time (ms) if(ms == 255) ms = 500; // If 255, delay for 500 ms - SPI.endTransaction(); - digitalWrite(_dc, 1); digitalWrite(_cs, 1); + SPI.endTransaction(); delay(ms); - //beginSPITransaction(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); } } + digitalWrite(_cs, 1); #endif setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + SPI.endTransaction(); + + cancelled = false; - cancelled = false; #ifdef FLIP_SCREEN flipscreen(true); #else flipscreen(false); -#endif +#endif +#ifdef ST7789 + if (TFT_REALWIDTH != TFT_REALHEIGHT) + { + flipscreen(true); + } +#endif }; @@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) { #endif dmatx = dmasettings[0]; digitalWrite(_cs, 0); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); digitalWrite(_dc, 0); SPI.transfer(TFT_RAMWR); digitalWrite(_dc, 1); @@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { No DMA functions ***********************************************************************************************/ void TFT_T_DMA::fillScreenNoDma(uint16_t color) { - setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + //digitalWrite(_dc, 0); + //SPI.transfer(TFT_RAMWR); int i,j; for (j=0; j> 1; @@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t else SPI.transfer16(bgcolor); } bits = *charpt++; - digitalWrite(_dc, 1); + //digitalWrite(_dc, 1); if (bits&0x01) SPI.transfer16(fgcolor); else SPI.transfer16(bgcolor); bits = bits >> 1; @@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t SPI.endTransaction(); } - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); -} - - -void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { - setArea(x,y,x+w-1,y+h-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); - int i; - for (i=0; i<(w*h); i++) - { - digitalWrite(_dc, 1); - SPI.transfer16(color); - } -#ifdef ILI9341 - digitalWrite(_dc, 0); - SPI.transfer(ILI9341_SLPOUT); - digitalWrite(_dc, 1); -#endif + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); digitalWrite(_cs, 1); SPI.endTransaction(); - - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); } + + + /*********************************************************************************************** DMA functions ***********************************************************************************************/ diff --git a/MCUME_teensy/teensycolem/tft_t_dma.h b/MCUME_teensy/teensycolem/tft_t_dma.h index fcf006a..da9a593 100644 --- a/MCUME_teensy/teensycolem/tft_t_dma.h +++ b/MCUME_teensy/teensycolem/tft_t_dma.h @@ -21,18 +21,15 @@ #define B16(rgb) ((rgb<<3)&0xf8) -#define TFT_HEIGHT 192 - -#ifdef ILI9341 -#define TFT_WIDTH 256 -#define TFT_REALWIDTH 320 -#define TFT_REALHEIGHT 240 -#endif -#ifdef ST7789 -#define TFT_WIDTH 240 +#ifdef LOHRES +#define TFT_WIDTH 240 #define TFT_REALWIDTH 240 -#define TFT_REALHEIGHT 240 +#else +#define TFT_WIDTH 256 +#define TFT_REALWIDTH 320 #endif +#define TFT_HEIGHT 192 +#define TFT_REALHEIGHT 240 #define LINES_PER_BLOCK 64 #define NR_OF_BLOCK 4 diff --git a/MCUME_teensy/teensycolem/tft_t_dma_config.h b/MCUME_teensy/teensycolem/tft_t_dma_config.h index 7ee0925..d8200a2 100644 --- a/MCUME_teensy/teensycolem/tft_t_dma_config.h +++ b/MCUME_teensy/teensycolem/tft_t_dma_config.h @@ -1,11 +1,7 @@ #include "platform_config.h" -#ifdef TEENSYBOY -#define ST7789 1 -#define ROTATE_SCREEN 1 -#else -#define ILI9341 1 -#endif +//#define ST7789 1 +//#define ILI9341 1 #define TFT_LINEARINT 1 #define LINEARINT_HACK 1 diff --git a/MCUME_teensy/teensygen/emuapi.cpp b/MCUME_teensy/teensygen/emuapi.cpp index 576f2d5..e205cd3 100644 --- a/MCUME_teensy/teensygen/emuapi.cpp +++ b/MCUME_teensy/teensygen/emuapi.cpp @@ -1373,7 +1373,7 @@ void emu_init(void) emu_InitJoysticks(); -#ifdef TEENSYBOY +#ifdef SWAP_JOYSTICK joySwapped = true; #else joySwapped = false; diff --git a/MCUME_teensy/teensygen/iopins.h b/MCUME_teensy/teensygen/iopins.h index eead4a9..28b6b83 100644 --- a/MCUME_teensy/teensygen/iopins.h +++ b/MCUME_teensy/teensygen/iopins.h @@ -2,31 +2,17 @@ #define IOPINS_H #include "platform_config.h" -#include "tft_t_dma_config.h" #ifndef OLD_LAYOUT -#ifdef ST7789 -// ST7789 #define TFT_SCLK 13 #define TFT_MOSI 11 #define TFT_MISO 12 #define TFT_TOUCH_CS 255 #define TFT_TOUCH_INT 255 #define TFT_DC 9 -#define TFT_CS 255 -#define TFT_RST 23 -#else -// ILI9341 -#define TFT_SCLK 13 -#define TFT_MOSI 11 -#define TFT_MISO 12 -#define TFT_TOUCH_CS 255 //38 -#define TFT_TOUCH_INT 255 //37 -#define TFT_DC 9 -#define TFT_CS 23 -#define TFT_RST 255 -#endif +#define TFT_CS 22 // 255 for LORES ST7789 (NO CS) +#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V // PSRAM #define PSRAM_CS 36 @@ -38,10 +24,10 @@ #define SD_SCLK 13 #define SD_MOSI 12 #define SD_MISO 11 -#ifdef TEENSYBOY -#define SD_CS BUILTIN_SDCARD +#ifdef EXTERNAL_SD +#define SD_CS 8 #else -#define SD_CS 5 +#define SD_CS BUILTIN_SDCARD #endif // I2C keyboard @@ -54,17 +40,15 @@ #define PIN_JOY2_BTN 17 #define PIN_KEY_USER1 3 //34 #define PIN_KEY_USER2 4 //35 -//#define PIN_KEY_USER3 255 -//#define PIN_KEY_USER4 255 +//#define PIN_KEY_USER3 33 +//#define PIN_KEY_USER4 39 -#ifdef TEENSYBOY // Second joystick #define PIN_JOY1_BTN 2 #define PIN_JOY1_1 14 // UP #define PIN_JOY1_2 7 // DOWN #define PIN_JOY1_3 6 // RIGHT #define PIN_JOY1_4 5 // LEFT -#endif #else // OLD LAYOUT!!!! diff --git a/MCUME_teensy/teensygen/platform_config.h b/MCUME_teensy/teensygen/platform_config.h index 4e5fef4..c6ccb01 100644 --- a/MCUME_teensy/teensygen/platform_config.h +++ b/MCUME_teensy/teensygen/platform_config.h @@ -1,14 +1,20 @@ #ifndef _PLATFORM_CONFIG_H_ #define _PLATFORM_CONFIG_H_ -//#define OLD_LAYOUT 1 -//#define TEENSYBOY 1 +//#define OLD_LAYOUT 1 -#define HAS_PSRAM 1 +#define ILI9341 1 +//#define ST7789 1 +//#define SWAP_JOYSTICK 1 +//#define LOHRES 1 +//#define ROTATE_SCREEN 1 +#define EXTERNAL_SD 1 -//#define USE_SDFAT 1 -//#define SD_FAT_TYPE 1 -//#define USE_SDFS 1 -//#define SDFSDEV "1:" +#define HAS_PSRAM 1 + +//#define USE_SDFAT 1 +//#define SD_FAT_TYPE 1 +//#define USE_SDFS 1 +//#define SDFSDEV "1:" #endif diff --git a/MCUME_teensy/teensygen/tft_t_dma.cpp b/MCUME_teensy/teensygen/tft_t_dma.cpp index e1aab00..5c2f93d 100644 --- a/MCUME_teensy/teensygen/tft_t_dma.cpp +++ b/MCUME_teensy/teensygen/tft_t_dma.cpp @@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = { #endif }; - static void dmaInterrupt() { dmatx.clearInterrupt(); curTransfer++; @@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { int dx=0; int dy=0; - #ifdef ST7789 + if (TFT_REALWIDTH == TFT_REALHEIGHT) + { #ifdef ROTATE_SCREEN - if (!flipped) { - dy += 80; - } + if (!flipped) { + dy += 80; + } #else - if (flipped) { - dx += 80; + if (flipped) { + dx += 80; + } +#endif } -#endif -#endif +#endif + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1+dx); + digitalWrite(_dc, 1); + SPI.transfer16(x2+dx); + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1+dy); + digitalWrite(_dc, 1); + SPI.transfer16(y2+dy); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + return; + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); @@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { } + + void TFT_T_DMA::begin(void) { SPI.setMOSI(_mosi); SPI.setMISO(_miso); @@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) { SPI.begin(); // Initialize display - if (_rst < 255) { // toggle RST low to reset + if (_rst != 0xff) { pinMode(_rst, OUTPUT); digitalWrite(_rst, HIGH); - delay(5); + delay(100); digitalWrite(_rst, LOW); - delay(20); + delay(100); digitalWrite(_rst, HIGH); - delay(120); + delay(200); } - + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); const uint8_t *addr = init_commands; digitalWrite(_cs, 0); @@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) { SPI.transfer(ILI9341_DISPON); digitalWrite(_dc, 1); digitalWrite(_cs, 1); - SPI.endTransaction(); #endif #ifdef ST7789 uint8_t numCommands, numArgs; @@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) { if(ms) { ms = *addr++; // Read post-command delay time (ms) if(ms == 255) ms = 500; // If 255, delay for 500 ms - SPI.endTransaction(); - digitalWrite(_dc, 1); digitalWrite(_cs, 1); + SPI.endTransaction(); delay(ms); - //beginSPITransaction(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); } } + digitalWrite(_cs, 1); #endif setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + SPI.endTransaction(); + + cancelled = false; - cancelled = false; #ifdef FLIP_SCREEN flipscreen(true); #else flipscreen(false); -#endif +#endif +#ifdef ST7789 + if (TFT_REALWIDTH != TFT_REALHEIGHT) + { + flipscreen(true); + } +#endif }; @@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) { #endif dmatx = dmasettings[0]; digitalWrite(_cs, 0); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); digitalWrite(_dc, 0); SPI.transfer(TFT_RAMWR); digitalWrite(_dc, 1); @@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { No DMA functions ***********************************************************************************************/ void TFT_T_DMA::fillScreenNoDma(uint16_t color) { - setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + //digitalWrite(_dc, 0); + //SPI.transfer(TFT_RAMWR); int i,j; for (j=0; j> 1; @@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t else SPI.transfer16(bgcolor); } bits = *charpt++; - digitalWrite(_dc, 1); + //digitalWrite(_dc, 1); if (bits&0x01) SPI.transfer16(fgcolor); else SPI.transfer16(bgcolor); bits = bits >> 1; @@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t SPI.endTransaction(); } - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); -} - - -void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { - setArea(x,y,x+w-1,y+h-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); - int i; - for (i=0; i<(w*h); i++) - { - digitalWrite(_dc, 1); - SPI.transfer16(color); - } -#ifdef ILI9341 - digitalWrite(_dc, 0); - SPI.transfer(ILI9341_SLPOUT); - digitalWrite(_dc, 1); -#endif + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); digitalWrite(_cs, 1); SPI.endTransaction(); - - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); } + + + /*********************************************************************************************** DMA functions ***********************************************************************************************/ @@ -933,7 +967,7 @@ void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uin void TFT_T_DMA::writeLine(int width, int height, int y, uint8_t *buf, uint16_t *palette16) { uint16_t * block=blocks[y>>6]; - uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; if (width > TFT_WIDTH) { #ifdef TFT_LINEARINT int delta = (width/(width-TFT_WIDTH))-1; diff --git a/MCUME_teensy/teensygen/tft_t_dma.h b/MCUME_teensy/teensygen/tft_t_dma.h index a34efd6..a745cf6 100644 --- a/MCUME_teensy/teensygen/tft_t_dma.h +++ b/MCUME_teensy/teensygen/tft_t_dma.h @@ -22,18 +22,15 @@ #define PAL_COLOR_MASK 0xff -#define TFT_HEIGHT 240 - -#ifdef ILI9341 -#define TFT_WIDTH 320 -#define TFT_REALWIDTH 320 -#define TFT_REALHEIGHT 240 -#endif -#ifdef ST7789 -#define TFT_WIDTH 240 +#ifdef LOHRES +#define TFT_WIDTH 240 #define TFT_REALWIDTH 240 -#define TFT_REALHEIGHT 240 +#else +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 #endif +#define TFT_HEIGHT 240 +#define TFT_REALHEIGHT 240 #define LINES_PER_BLOCK 64 #define NR_OF_BLOCK 4 diff --git a/MCUME_teensy/teensygen/tft_t_dma_config.h b/MCUME_teensy/teensygen/tft_t_dma_config.h index 7ee0925..d8200a2 100644 --- a/MCUME_teensy/teensygen/tft_t_dma_config.h +++ b/MCUME_teensy/teensygen/tft_t_dma_config.h @@ -1,11 +1,7 @@ #include "platform_config.h" -#ifdef TEENSYBOY -#define ST7789 1 -#define ROTATE_SCREEN 1 -#else -#define ILI9341 1 -#endif +//#define ST7789 1 +//#define ILI9341 1 #define TFT_LINEARINT 1 #define LINEARINT_HACK 1 diff --git a/MCUME_teensy/teensygnuboy/emuapi.cpp b/MCUME_teensy/teensygnuboy/emuapi.cpp index 576f2d5..e205cd3 100644 --- a/MCUME_teensy/teensygnuboy/emuapi.cpp +++ b/MCUME_teensy/teensygnuboy/emuapi.cpp @@ -1373,7 +1373,7 @@ void emu_init(void) emu_InitJoysticks(); -#ifdef TEENSYBOY +#ifdef SWAP_JOYSTICK joySwapped = true; #else joySwapped = false; diff --git a/MCUME_teensy/teensygnuboy/iopins.h b/MCUME_teensy/teensygnuboy/iopins.h index eead4a9..28b6b83 100644 --- a/MCUME_teensy/teensygnuboy/iopins.h +++ b/MCUME_teensy/teensygnuboy/iopins.h @@ -2,31 +2,17 @@ #define IOPINS_H #include "platform_config.h" -#include "tft_t_dma_config.h" #ifndef OLD_LAYOUT -#ifdef ST7789 -// ST7789 #define TFT_SCLK 13 #define TFT_MOSI 11 #define TFT_MISO 12 #define TFT_TOUCH_CS 255 #define TFT_TOUCH_INT 255 #define TFT_DC 9 -#define TFT_CS 255 -#define TFT_RST 23 -#else -// ILI9341 -#define TFT_SCLK 13 -#define TFT_MOSI 11 -#define TFT_MISO 12 -#define TFT_TOUCH_CS 255 //38 -#define TFT_TOUCH_INT 255 //37 -#define TFT_DC 9 -#define TFT_CS 23 -#define TFT_RST 255 -#endif +#define TFT_CS 22 // 255 for LORES ST7789 (NO CS) +#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V // PSRAM #define PSRAM_CS 36 @@ -38,10 +24,10 @@ #define SD_SCLK 13 #define SD_MOSI 12 #define SD_MISO 11 -#ifdef TEENSYBOY -#define SD_CS BUILTIN_SDCARD +#ifdef EXTERNAL_SD +#define SD_CS 8 #else -#define SD_CS 5 +#define SD_CS BUILTIN_SDCARD #endif // I2C keyboard @@ -54,17 +40,15 @@ #define PIN_JOY2_BTN 17 #define PIN_KEY_USER1 3 //34 #define PIN_KEY_USER2 4 //35 -//#define PIN_KEY_USER3 255 -//#define PIN_KEY_USER4 255 +//#define PIN_KEY_USER3 33 +//#define PIN_KEY_USER4 39 -#ifdef TEENSYBOY // Second joystick #define PIN_JOY1_BTN 2 #define PIN_JOY1_1 14 // UP #define PIN_JOY1_2 7 // DOWN #define PIN_JOY1_3 6 // RIGHT #define PIN_JOY1_4 5 // LEFT -#endif #else // OLD LAYOUT!!!! diff --git a/MCUME_teensy/teensygnuboy/platform_config.h b/MCUME_teensy/teensygnuboy/platform_config.h index 89bbe11..c6ccb01 100644 --- a/MCUME_teensy/teensygnuboy/platform_config.h +++ b/MCUME_teensy/teensygnuboy/platform_config.h @@ -1,14 +1,20 @@ #ifndef _PLATFORM_CONFIG_H_ #define _PLATFORM_CONFIG_H_ -//#define OLD_LAYOUT 1 -//#define TEENSYBOY 1 +//#define OLD_LAYOUT 1 -#define HAS_PSRAM 1 +#define ILI9341 1 +//#define ST7789 1 +//#define SWAP_JOYSTICK 1 +//#define LOHRES 1 +//#define ROTATE_SCREEN 1 +#define EXTERNAL_SD 1 -//#define USE_SDFAT 1 -//#define SD_FAT_TYPE 1 -//#define USE_SDFS 1 -//#define SDFSDEV "1:" +#define HAS_PSRAM 1 + +//#define USE_SDFAT 1 +//#define SD_FAT_TYPE 1 +//#define USE_SDFS 1 +//#define SDFSDEV "1:" #endif diff --git a/MCUME_teensy/teensygnuboy/tft_t_dma.cpp b/MCUME_teensy/teensygnuboy/tft_t_dma.cpp index 5013b73..5c2f93d 100644 --- a/MCUME_teensy/teensygnuboy/tft_t_dma.cpp +++ b/MCUME_teensy/teensygnuboy/tft_t_dma.cpp @@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = { #endif }; - static void dmaInterrupt() { dmatx.clearInterrupt(); curTransfer++; @@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { int dx=0; int dy=0; - #ifdef ST7789 + if (TFT_REALWIDTH == TFT_REALHEIGHT) + { #ifdef ROTATE_SCREEN - if (!flipped) { - dy += 80; - } + if (!flipped) { + dy += 80; + } #else - if (flipped) { - dx += 80; + if (flipped) { + dx += 80; + } +#endif } -#endif -#endif +#endif + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1+dx); + digitalWrite(_dc, 1); + SPI.transfer16(x2+dx); + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1+dy); + digitalWrite(_dc, 1); + SPI.transfer16(y2+dy); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + return; + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); @@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { } + + void TFT_T_DMA::begin(void) { SPI.setMOSI(_mosi); SPI.setMISO(_miso); @@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) { SPI.begin(); // Initialize display - if (_rst < 255) { // toggle RST low to reset + if (_rst != 0xff) { pinMode(_rst, OUTPUT); digitalWrite(_rst, HIGH); - delay(5); + delay(100); digitalWrite(_rst, LOW); - delay(20); + delay(100); digitalWrite(_rst, HIGH); - delay(120); + delay(200); } - + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); const uint8_t *addr = init_commands; digitalWrite(_cs, 0); @@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) { SPI.transfer(ILI9341_DISPON); digitalWrite(_dc, 1); digitalWrite(_cs, 1); - SPI.endTransaction(); #endif #ifdef ST7789 uint8_t numCommands, numArgs; @@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) { if(ms) { ms = *addr++; // Read post-command delay time (ms) if(ms == 255) ms = 500; // If 255, delay for 500 ms - SPI.endTransaction(); - digitalWrite(_dc, 1); digitalWrite(_cs, 1); + SPI.endTransaction(); delay(ms); - //beginSPITransaction(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); } } + digitalWrite(_cs, 1); #endif setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + SPI.endTransaction(); + + cancelled = false; - cancelled = false; #ifdef FLIP_SCREEN flipscreen(true); #else flipscreen(false); -#endif +#endif +#ifdef ST7789 + if (TFT_REALWIDTH != TFT_REALHEIGHT) + { + flipscreen(true); + } +#endif }; @@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) { #endif dmatx = dmasettings[0]; digitalWrite(_cs, 0); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); digitalWrite(_dc, 0); SPI.transfer(TFT_RAMWR); digitalWrite(_dc, 1); @@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { No DMA functions ***********************************************************************************************/ void TFT_T_DMA::fillScreenNoDma(uint16_t color) { - setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + //digitalWrite(_dc, 0); + //SPI.transfer(TFT_RAMWR); int i,j; for (j=0; j> 1; @@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t else SPI.transfer16(bgcolor); } bits = *charpt++; - digitalWrite(_dc, 1); + //digitalWrite(_dc, 1); if (bits&0x01) SPI.transfer16(fgcolor); else SPI.transfer16(bgcolor); bits = bits >> 1; @@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t SPI.endTransaction(); } - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); -} - - -void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { - setArea(x,y,x+w-1,y+h-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); - int i; - for (i=0; i<(w*h); i++) - { - digitalWrite(_dc, 1); - SPI.transfer16(color); - } -#ifdef ILI9341 - digitalWrite(_dc, 0); - SPI.transfer(ILI9341_SLPOUT); - digitalWrite(_dc, 1); -#endif + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); digitalWrite(_cs, 1); SPI.endTransaction(); - - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); } + + + /*********************************************************************************************** DMA functions ***********************************************************************************************/ diff --git a/MCUME_teensy/teensygnuboy/tft_t_dma.h b/MCUME_teensy/teensygnuboy/tft_t_dma.h index 4d8b7e4..6d01544 100644 --- a/MCUME_teensy/teensygnuboy/tft_t_dma.h +++ b/MCUME_teensy/teensygnuboy/tft_t_dma.h @@ -22,18 +22,15 @@ #define PAL_COLOR_MASK 0xff -#define TFT_HEIGHT 144 - -#ifdef ILI9341 -#define TFT_WIDTH 320 -#define TFT_REALWIDTH 320 -#define TFT_REALHEIGHT 240 -#endif -#ifdef ST7789 -#define TFT_WIDTH 240 +#ifdef LOHRES +#define TFT_WIDTH 240 #define TFT_REALWIDTH 240 -#define TFT_REALHEIGHT 240 +#else +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 #endif +#define TFT_HEIGHT 144 +#define TFT_REALHEIGHT 240 #define LINES_PER_BLOCK 64 #define NR_OF_BLOCK 4 diff --git a/MCUME_teensy/teensygnuboy/tft_t_dma_config.h b/MCUME_teensy/teensygnuboy/tft_t_dma_config.h index 7d12a66..0a712da 100644 --- a/MCUME_teensy/teensygnuboy/tft_t_dma_config.h +++ b/MCUME_teensy/teensygnuboy/tft_t_dma_config.h @@ -1,11 +1,7 @@ #include "platform_config.h" -#ifdef TEENSYBOY -#define ST7789 1 -#define ROTATE_SCREEN 1 -#else -#define ILI9341 1 -#endif +//#define ST7789 1 +//#define ILI9341 1 #define TFT_LINEARINT 1 #define LINEARINT_HACK 1 diff --git a/MCUME_teensy/teensylogo/emuapi.cpp b/MCUME_teensy/teensylogo/emuapi.cpp index 4dfc4e5..f922015 100644 --- a/MCUME_teensy/teensylogo/emuapi.cpp +++ b/MCUME_teensy/teensylogo/emuapi.cpp @@ -1373,7 +1373,7 @@ void emu_init(void) emu_InitJoysticks(); -#ifdef TEENSYBOY +#ifdef SWAP_JOYSTICK joySwapped = true; #else joySwapped = false; diff --git a/MCUME_teensy/teensylogo/iopins.h b/MCUME_teensy/teensylogo/iopins.h index eead4a9..28b6b83 100644 --- a/MCUME_teensy/teensylogo/iopins.h +++ b/MCUME_teensy/teensylogo/iopins.h @@ -2,31 +2,17 @@ #define IOPINS_H #include "platform_config.h" -#include "tft_t_dma_config.h" #ifndef OLD_LAYOUT -#ifdef ST7789 -// ST7789 #define TFT_SCLK 13 #define TFT_MOSI 11 #define TFT_MISO 12 #define TFT_TOUCH_CS 255 #define TFT_TOUCH_INT 255 #define TFT_DC 9 -#define TFT_CS 255 -#define TFT_RST 23 -#else -// ILI9341 -#define TFT_SCLK 13 -#define TFT_MOSI 11 -#define TFT_MISO 12 -#define TFT_TOUCH_CS 255 //38 -#define TFT_TOUCH_INT 255 //37 -#define TFT_DC 9 -#define TFT_CS 23 -#define TFT_RST 255 -#endif +#define TFT_CS 22 // 255 for LORES ST7789 (NO CS) +#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V // PSRAM #define PSRAM_CS 36 @@ -38,10 +24,10 @@ #define SD_SCLK 13 #define SD_MOSI 12 #define SD_MISO 11 -#ifdef TEENSYBOY -#define SD_CS BUILTIN_SDCARD +#ifdef EXTERNAL_SD +#define SD_CS 8 #else -#define SD_CS 5 +#define SD_CS BUILTIN_SDCARD #endif // I2C keyboard @@ -54,17 +40,15 @@ #define PIN_JOY2_BTN 17 #define PIN_KEY_USER1 3 //34 #define PIN_KEY_USER2 4 //35 -//#define PIN_KEY_USER3 255 -//#define PIN_KEY_USER4 255 +//#define PIN_KEY_USER3 33 +//#define PIN_KEY_USER4 39 -#ifdef TEENSYBOY // Second joystick #define PIN_JOY1_BTN 2 #define PIN_JOY1_1 14 // UP #define PIN_JOY1_2 7 // DOWN #define PIN_JOY1_3 6 // RIGHT #define PIN_JOY1_4 5 // LEFT -#endif #else // OLD LAYOUT!!!! diff --git a/MCUME_teensy/teensylogo/platform_config.h b/MCUME_teensy/teensylogo/platform_config.h index 4186a21..c6ccb01 100644 --- a/MCUME_teensy/teensylogo/platform_config.h +++ b/MCUME_teensy/teensylogo/platform_config.h @@ -1,14 +1,20 @@ #ifndef _PLATFORM_CONFIG_H_ #define _PLATFORM_CONFIG_H_ -//#define OLD_LAYOUT 1 -//#define TEENSYBOY 1 +//#define OLD_LAYOUT 1 -//#define HAS_PSRAM 1 +#define ILI9341 1 +//#define ST7789 1 +//#define SWAP_JOYSTICK 1 +//#define LOHRES 1 +//#define ROTATE_SCREEN 1 +#define EXTERNAL_SD 1 -//#define USE_SDFAT 1 -//#define SD_FAT_TYPE 1 -//#define USE_SDFS 1 -//#define SDFSDEV "1:" +#define HAS_PSRAM 1 + +//#define USE_SDFAT 1 +//#define SD_FAT_TYPE 1 +//#define USE_SDFS 1 +//#define SDFSDEV "1:" #endif diff --git a/MCUME_teensy/teensylogo/teensylogo.ino b/MCUME_teensy/teensylogo/teensylogo.ino index b8c1339..c074b1a 100644 --- a/MCUME_teensy/teensylogo/teensylogo.ino +++ b/MCUME_teensy/teensylogo/teensylogo.ino @@ -8,18 +8,19 @@ extern "C" { #include "mcume.h" - TFT_T_DMA tft = TFT_T_DMA(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO, TFT_TOUCH_CS, TFT_TOUCH_INT); static int xOffLogo=0; static int swipeAngle=0; void setup() { //emu_sndInit(); - tft.begin(); //emu_sndPlaySound(0, 255, 4000); - emu_init(); + //delay(5000); + //toggleMenu(false); + //tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + //tft.startDMA(); } static uint8_t col=0x00; diff --git a/MCUME_teensy/teensylogo/tft_t_dma.cpp b/MCUME_teensy/teensylogo/tft_t_dma.cpp index 5013b73..5c2f93d 100644 --- a/MCUME_teensy/teensylogo/tft_t_dma.cpp +++ b/MCUME_teensy/teensylogo/tft_t_dma.cpp @@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = { #endif }; - static void dmaInterrupt() { dmatx.clearInterrupt(); curTransfer++; @@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { int dx=0; int dy=0; - #ifdef ST7789 + if (TFT_REALWIDTH == TFT_REALHEIGHT) + { #ifdef ROTATE_SCREEN - if (!flipped) { - dy += 80; - } + if (!flipped) { + dy += 80; + } #else - if (flipped) { - dx += 80; + if (flipped) { + dx += 80; + } +#endif } -#endif -#endif +#endif + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1+dx); + digitalWrite(_dc, 1); + SPI.transfer16(x2+dx); + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1+dy); + digitalWrite(_dc, 1); + SPI.transfer16(y2+dy); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + return; + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); @@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { } + + void TFT_T_DMA::begin(void) { SPI.setMOSI(_mosi); SPI.setMISO(_miso); @@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) { SPI.begin(); // Initialize display - if (_rst < 255) { // toggle RST low to reset + if (_rst != 0xff) { pinMode(_rst, OUTPUT); digitalWrite(_rst, HIGH); - delay(5); + delay(100); digitalWrite(_rst, LOW); - delay(20); + delay(100); digitalWrite(_rst, HIGH); - delay(120); + delay(200); } - + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); const uint8_t *addr = init_commands; digitalWrite(_cs, 0); @@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) { SPI.transfer(ILI9341_DISPON); digitalWrite(_dc, 1); digitalWrite(_cs, 1); - SPI.endTransaction(); #endif #ifdef ST7789 uint8_t numCommands, numArgs; @@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) { if(ms) { ms = *addr++; // Read post-command delay time (ms) if(ms == 255) ms = 500; // If 255, delay for 500 ms - SPI.endTransaction(); - digitalWrite(_dc, 1); digitalWrite(_cs, 1); + SPI.endTransaction(); delay(ms); - //beginSPITransaction(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); } } + digitalWrite(_cs, 1); #endif setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + SPI.endTransaction(); + + cancelled = false; - cancelled = false; #ifdef FLIP_SCREEN flipscreen(true); #else flipscreen(false); -#endif +#endif +#ifdef ST7789 + if (TFT_REALWIDTH != TFT_REALHEIGHT) + { + flipscreen(true); + } +#endif }; @@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) { #endif dmatx = dmasettings[0]; digitalWrite(_cs, 0); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); digitalWrite(_dc, 0); SPI.transfer(TFT_RAMWR); digitalWrite(_dc, 1); @@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { No DMA functions ***********************************************************************************************/ void TFT_T_DMA::fillScreenNoDma(uint16_t color) { - setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + //digitalWrite(_dc, 0); + //SPI.transfer(TFT_RAMWR); int i,j; for (j=0; j> 1; @@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t else SPI.transfer16(bgcolor); } bits = *charpt++; - digitalWrite(_dc, 1); + //digitalWrite(_dc, 1); if (bits&0x01) SPI.transfer16(fgcolor); else SPI.transfer16(bgcolor); bits = bits >> 1; @@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t SPI.endTransaction(); } - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); -} - - -void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { - setArea(x,y,x+w-1,y+h-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); - int i; - for (i=0; i<(w*h); i++) - { - digitalWrite(_dc, 1); - SPI.transfer16(color); - } -#ifdef ILI9341 - digitalWrite(_dc, 0); - SPI.transfer(ILI9341_SLPOUT); - digitalWrite(_dc, 1); -#endif + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); digitalWrite(_cs, 1); SPI.endTransaction(); - - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); } + + + /*********************************************************************************************** DMA functions ***********************************************************************************************/ diff --git a/MCUME_teensy/teensylogo/tft_t_dma.h b/MCUME_teensy/teensylogo/tft_t_dma.h index af7b91e..cc47f28 100644 --- a/MCUME_teensy/teensylogo/tft_t_dma.h +++ b/MCUME_teensy/teensylogo/tft_t_dma.h @@ -21,18 +21,16 @@ #define B16(rgb) ((rgb<<3)&0xf8) -#define TFT_HEIGHT 240 - -#ifdef ILI9341 -#define TFT_WIDTH 320 -#define TFT_REALWIDTH 320 -#define TFT_REALHEIGHT 240 -#endif -#ifdef ST7789 +#ifdef LOHRES #define TFT_WIDTH 240 #define TFT_REALWIDTH 240 -#define TFT_REALHEIGHT 240 +#else +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 #endif +#define TFT_HEIGHT 240 +#define TFT_REALHEIGHT 240 + #define LINES_PER_BLOCK 64 #define NR_OF_BLOCK 4 diff --git a/MCUME_teensy/teensylogo/tft_t_dma_config.h b/MCUME_teensy/teensylogo/tft_t_dma_config.h index 7ee0925..d8200a2 100644 --- a/MCUME_teensy/teensylogo/tft_t_dma_config.h +++ b/MCUME_teensy/teensylogo/tft_t_dma_config.h @@ -1,11 +1,7 @@ #include "platform_config.h" -#ifdef TEENSYBOY -#define ST7789 1 -#define ROTATE_SCREEN 1 -#else -#define ILI9341 1 -#endif +//#define ST7789 1 +//#define ILI9341 1 #define TFT_LINEARINT 1 #define LINEARINT_HACK 1 diff --git a/MCUME_teensy/teensynofrendo/emuapi.cpp b/MCUME_teensy/teensynofrendo/emuapi.cpp index 576f2d5..e205cd3 100644 --- a/MCUME_teensy/teensynofrendo/emuapi.cpp +++ b/MCUME_teensy/teensynofrendo/emuapi.cpp @@ -1373,7 +1373,7 @@ void emu_init(void) emu_InitJoysticks(); -#ifdef TEENSYBOY +#ifdef SWAP_JOYSTICK joySwapped = true; #else joySwapped = false; diff --git a/MCUME_teensy/teensynofrendo/iopins.h b/MCUME_teensy/teensynofrendo/iopins.h index eead4a9..28b6b83 100644 --- a/MCUME_teensy/teensynofrendo/iopins.h +++ b/MCUME_teensy/teensynofrendo/iopins.h @@ -2,31 +2,17 @@ #define IOPINS_H #include "platform_config.h" -#include "tft_t_dma_config.h" #ifndef OLD_LAYOUT -#ifdef ST7789 -// ST7789 #define TFT_SCLK 13 #define TFT_MOSI 11 #define TFT_MISO 12 #define TFT_TOUCH_CS 255 #define TFT_TOUCH_INT 255 #define TFT_DC 9 -#define TFT_CS 255 -#define TFT_RST 23 -#else -// ILI9341 -#define TFT_SCLK 13 -#define TFT_MOSI 11 -#define TFT_MISO 12 -#define TFT_TOUCH_CS 255 //38 -#define TFT_TOUCH_INT 255 //37 -#define TFT_DC 9 -#define TFT_CS 23 -#define TFT_RST 255 -#endif +#define TFT_CS 22 // 255 for LORES ST7789 (NO CS) +#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V // PSRAM #define PSRAM_CS 36 @@ -38,10 +24,10 @@ #define SD_SCLK 13 #define SD_MOSI 12 #define SD_MISO 11 -#ifdef TEENSYBOY -#define SD_CS BUILTIN_SDCARD +#ifdef EXTERNAL_SD +#define SD_CS 8 #else -#define SD_CS 5 +#define SD_CS BUILTIN_SDCARD #endif // I2C keyboard @@ -54,17 +40,15 @@ #define PIN_JOY2_BTN 17 #define PIN_KEY_USER1 3 //34 #define PIN_KEY_USER2 4 //35 -//#define PIN_KEY_USER3 255 -//#define PIN_KEY_USER4 255 +//#define PIN_KEY_USER3 33 +//#define PIN_KEY_USER4 39 -#ifdef TEENSYBOY // Second joystick #define PIN_JOY1_BTN 2 #define PIN_JOY1_1 14 // UP #define PIN_JOY1_2 7 // DOWN #define PIN_JOY1_3 6 // RIGHT #define PIN_JOY1_4 5 // LEFT -#endif #else // OLD LAYOUT!!!! diff --git a/MCUME_teensy/teensynofrendo/platform_config.h b/MCUME_teensy/teensynofrendo/platform_config.h index 4186a21..c6ccb01 100644 --- a/MCUME_teensy/teensynofrendo/platform_config.h +++ b/MCUME_teensy/teensynofrendo/platform_config.h @@ -1,14 +1,20 @@ #ifndef _PLATFORM_CONFIG_H_ #define _PLATFORM_CONFIG_H_ -//#define OLD_LAYOUT 1 -//#define TEENSYBOY 1 +//#define OLD_LAYOUT 1 -//#define HAS_PSRAM 1 +#define ILI9341 1 +//#define ST7789 1 +//#define SWAP_JOYSTICK 1 +//#define LOHRES 1 +//#define ROTATE_SCREEN 1 +#define EXTERNAL_SD 1 -//#define USE_SDFAT 1 -//#define SD_FAT_TYPE 1 -//#define USE_SDFS 1 -//#define SDFSDEV "1:" +#define HAS_PSRAM 1 + +//#define USE_SDFAT 1 +//#define SD_FAT_TYPE 1 +//#define USE_SDFS 1 +//#define SDFSDEV "1:" #endif diff --git a/MCUME_teensy/teensynofrendo/tft_t_dma.cpp b/MCUME_teensy/teensynofrendo/tft_t_dma.cpp index 5013b73..5c2f93d 100644 --- a/MCUME_teensy/teensynofrendo/tft_t_dma.cpp +++ b/MCUME_teensy/teensynofrendo/tft_t_dma.cpp @@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = { #endif }; - static void dmaInterrupt() { dmatx.clearInterrupt(); curTransfer++; @@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { int dx=0; int dy=0; - #ifdef ST7789 + if (TFT_REALWIDTH == TFT_REALHEIGHT) + { #ifdef ROTATE_SCREEN - if (!flipped) { - dy += 80; - } + if (!flipped) { + dy += 80; + } #else - if (flipped) { - dx += 80; + if (flipped) { + dx += 80; + } +#endif } -#endif -#endif +#endif + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1+dx); + digitalWrite(_dc, 1); + SPI.transfer16(x2+dx); + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1+dy); + digitalWrite(_dc, 1); + SPI.transfer16(y2+dy); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + return; + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); @@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { } + + void TFT_T_DMA::begin(void) { SPI.setMOSI(_mosi); SPI.setMISO(_miso); @@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) { SPI.begin(); // Initialize display - if (_rst < 255) { // toggle RST low to reset + if (_rst != 0xff) { pinMode(_rst, OUTPUT); digitalWrite(_rst, HIGH); - delay(5); + delay(100); digitalWrite(_rst, LOW); - delay(20); + delay(100); digitalWrite(_rst, HIGH); - delay(120); + delay(200); } - + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); const uint8_t *addr = init_commands; digitalWrite(_cs, 0); @@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) { SPI.transfer(ILI9341_DISPON); digitalWrite(_dc, 1); digitalWrite(_cs, 1); - SPI.endTransaction(); #endif #ifdef ST7789 uint8_t numCommands, numArgs; @@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) { if(ms) { ms = *addr++; // Read post-command delay time (ms) if(ms == 255) ms = 500; // If 255, delay for 500 ms - SPI.endTransaction(); - digitalWrite(_dc, 1); digitalWrite(_cs, 1); + SPI.endTransaction(); delay(ms); - //beginSPITransaction(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); } } + digitalWrite(_cs, 1); #endif setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + SPI.endTransaction(); + + cancelled = false; - cancelled = false; #ifdef FLIP_SCREEN flipscreen(true); #else flipscreen(false); -#endif +#endif +#ifdef ST7789 + if (TFT_REALWIDTH != TFT_REALHEIGHT) + { + flipscreen(true); + } +#endif }; @@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) { #endif dmatx = dmasettings[0]; digitalWrite(_cs, 0); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); digitalWrite(_dc, 0); SPI.transfer(TFT_RAMWR); digitalWrite(_dc, 1); @@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { No DMA functions ***********************************************************************************************/ void TFT_T_DMA::fillScreenNoDma(uint16_t color) { - setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + //digitalWrite(_dc, 0); + //SPI.transfer(TFT_RAMWR); int i,j; for (j=0; j> 1; @@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t else SPI.transfer16(bgcolor); } bits = *charpt++; - digitalWrite(_dc, 1); + //digitalWrite(_dc, 1); if (bits&0x01) SPI.transfer16(fgcolor); else SPI.transfer16(bgcolor); bits = bits >> 1; @@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t SPI.endTransaction(); } - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); -} - - -void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { - setArea(x,y,x+w-1,y+h-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); - int i; - for (i=0; i<(w*h); i++) - { - digitalWrite(_dc, 1); - SPI.transfer16(color); - } -#ifdef ILI9341 - digitalWrite(_dc, 0); - SPI.transfer(ILI9341_SLPOUT); - digitalWrite(_dc, 1); -#endif + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); digitalWrite(_cs, 1); SPI.endTransaction(); - - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); } + + + /*********************************************************************************************** DMA functions ***********************************************************************************************/ diff --git a/MCUME_teensy/teensynofrendo/tft_t_dma.h b/MCUME_teensy/teensynofrendo/tft_t_dma.h index 4f83191..bf3b3f5 100644 --- a/MCUME_teensy/teensynofrendo/tft_t_dma.h +++ b/MCUME_teensy/teensynofrendo/tft_t_dma.h @@ -21,18 +21,15 @@ #define B16(rgb) ((rgb<<3)&0xf8) -#define TFT_HEIGHT 240 - -#ifdef ILI9341 -#define TFT_WIDTH 256 -#define TFT_REALWIDTH 320 -#define TFT_REALHEIGHT 240 -#endif -#ifdef ST7789 -#define TFT_WIDTH 240 +#ifdef LOHRES +#define TFT_WIDTH 240 #define TFT_REALWIDTH 240 -#define TFT_REALHEIGHT 240 +#else +#define TFT_WIDTH 256 +#define TFT_REALWIDTH 320 #endif +#define TFT_HEIGHT 240 +#define TFT_REALHEIGHT 240 #define LINES_PER_BLOCK 64 #define NR_OF_BLOCK 4 diff --git a/MCUME_teensy/teensynofrendo/tft_t_dma_config.h b/MCUME_teensy/teensynofrendo/tft_t_dma_config.h index 7ee0925..d8200a2 100644 --- a/MCUME_teensy/teensynofrendo/tft_t_dma_config.h +++ b/MCUME_teensy/teensynofrendo/tft_t_dma_config.h @@ -1,11 +1,7 @@ #include "platform_config.h" -#ifdef TEENSYBOY -#define ST7789 1 -#define ROTATE_SCREEN 1 -#else -#define ILI9341 1 -#endif +//#define ST7789 1 +//#define ILI9341 1 #define TFT_LINEARINT 1 #define LINEARINT_HACK 1 diff --git a/MCUME_teensy/teensyo2em/emuapi.cpp b/MCUME_teensy/teensyo2em/emuapi.cpp index 576f2d5..e205cd3 100644 --- a/MCUME_teensy/teensyo2em/emuapi.cpp +++ b/MCUME_teensy/teensyo2em/emuapi.cpp @@ -1373,7 +1373,7 @@ void emu_init(void) emu_InitJoysticks(); -#ifdef TEENSYBOY +#ifdef SWAP_JOYSTICK joySwapped = true; #else joySwapped = false; diff --git a/MCUME_teensy/teensyo2em/iopins.h b/MCUME_teensy/teensyo2em/iopins.h index eead4a9..28b6b83 100644 --- a/MCUME_teensy/teensyo2em/iopins.h +++ b/MCUME_teensy/teensyo2em/iopins.h @@ -2,31 +2,17 @@ #define IOPINS_H #include "platform_config.h" -#include "tft_t_dma_config.h" #ifndef OLD_LAYOUT -#ifdef ST7789 -// ST7789 #define TFT_SCLK 13 #define TFT_MOSI 11 #define TFT_MISO 12 #define TFT_TOUCH_CS 255 #define TFT_TOUCH_INT 255 #define TFT_DC 9 -#define TFT_CS 255 -#define TFT_RST 23 -#else -// ILI9341 -#define TFT_SCLK 13 -#define TFT_MOSI 11 -#define TFT_MISO 12 -#define TFT_TOUCH_CS 255 //38 -#define TFT_TOUCH_INT 255 //37 -#define TFT_DC 9 -#define TFT_CS 23 -#define TFT_RST 255 -#endif +#define TFT_CS 22 // 255 for LORES ST7789 (NO CS) +#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V // PSRAM #define PSRAM_CS 36 @@ -38,10 +24,10 @@ #define SD_SCLK 13 #define SD_MOSI 12 #define SD_MISO 11 -#ifdef TEENSYBOY -#define SD_CS BUILTIN_SDCARD +#ifdef EXTERNAL_SD +#define SD_CS 8 #else -#define SD_CS 5 +#define SD_CS BUILTIN_SDCARD #endif // I2C keyboard @@ -54,17 +40,15 @@ #define PIN_JOY2_BTN 17 #define PIN_KEY_USER1 3 //34 #define PIN_KEY_USER2 4 //35 -//#define PIN_KEY_USER3 255 -//#define PIN_KEY_USER4 255 +//#define PIN_KEY_USER3 33 +//#define PIN_KEY_USER4 39 -#ifdef TEENSYBOY // Second joystick #define PIN_JOY1_BTN 2 #define PIN_JOY1_1 14 // UP #define PIN_JOY1_2 7 // DOWN #define PIN_JOY1_3 6 // RIGHT #define PIN_JOY1_4 5 // LEFT -#endif #else // OLD LAYOUT!!!! diff --git a/MCUME_teensy/teensyo2em/platform_config.h b/MCUME_teensy/teensyo2em/platform_config.h index 4186a21..c6ccb01 100644 --- a/MCUME_teensy/teensyo2em/platform_config.h +++ b/MCUME_teensy/teensyo2em/platform_config.h @@ -1,14 +1,20 @@ #ifndef _PLATFORM_CONFIG_H_ #define _PLATFORM_CONFIG_H_ -//#define OLD_LAYOUT 1 -//#define TEENSYBOY 1 +//#define OLD_LAYOUT 1 -//#define HAS_PSRAM 1 +#define ILI9341 1 +//#define ST7789 1 +//#define SWAP_JOYSTICK 1 +//#define LOHRES 1 +//#define ROTATE_SCREEN 1 +#define EXTERNAL_SD 1 -//#define USE_SDFAT 1 -//#define SD_FAT_TYPE 1 -//#define USE_SDFS 1 -//#define SDFSDEV "1:" +#define HAS_PSRAM 1 + +//#define USE_SDFAT 1 +//#define SD_FAT_TYPE 1 +//#define USE_SDFS 1 +//#define SDFSDEV "1:" #endif diff --git a/MCUME_teensy/teensyo2em/tft_t_dma.cpp b/MCUME_teensy/teensyo2em/tft_t_dma.cpp index 5013b73..5c2f93d 100644 --- a/MCUME_teensy/teensyo2em/tft_t_dma.cpp +++ b/MCUME_teensy/teensyo2em/tft_t_dma.cpp @@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = { #endif }; - static void dmaInterrupt() { dmatx.clearInterrupt(); curTransfer++; @@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { int dx=0; int dy=0; - #ifdef ST7789 + if (TFT_REALWIDTH == TFT_REALHEIGHT) + { #ifdef ROTATE_SCREEN - if (!flipped) { - dy += 80; - } + if (!flipped) { + dy += 80; + } #else - if (flipped) { - dx += 80; + if (flipped) { + dx += 80; + } +#endif } -#endif -#endif +#endif + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1+dx); + digitalWrite(_dc, 1); + SPI.transfer16(x2+dx); + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1+dy); + digitalWrite(_dc, 1); + SPI.transfer16(y2+dy); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + return; + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); @@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { } + + void TFT_T_DMA::begin(void) { SPI.setMOSI(_mosi); SPI.setMISO(_miso); @@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) { SPI.begin(); // Initialize display - if (_rst < 255) { // toggle RST low to reset + if (_rst != 0xff) { pinMode(_rst, OUTPUT); digitalWrite(_rst, HIGH); - delay(5); + delay(100); digitalWrite(_rst, LOW); - delay(20); + delay(100); digitalWrite(_rst, HIGH); - delay(120); + delay(200); } - + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); const uint8_t *addr = init_commands; digitalWrite(_cs, 0); @@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) { SPI.transfer(ILI9341_DISPON); digitalWrite(_dc, 1); digitalWrite(_cs, 1); - SPI.endTransaction(); #endif #ifdef ST7789 uint8_t numCommands, numArgs; @@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) { if(ms) { ms = *addr++; // Read post-command delay time (ms) if(ms == 255) ms = 500; // If 255, delay for 500 ms - SPI.endTransaction(); - digitalWrite(_dc, 1); digitalWrite(_cs, 1); + SPI.endTransaction(); delay(ms); - //beginSPITransaction(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); } } + digitalWrite(_cs, 1); #endif setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + SPI.endTransaction(); + + cancelled = false; - cancelled = false; #ifdef FLIP_SCREEN flipscreen(true); #else flipscreen(false); -#endif +#endif +#ifdef ST7789 + if (TFT_REALWIDTH != TFT_REALHEIGHT) + { + flipscreen(true); + } +#endif }; @@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) { #endif dmatx = dmasettings[0]; digitalWrite(_cs, 0); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); digitalWrite(_dc, 0); SPI.transfer(TFT_RAMWR); digitalWrite(_dc, 1); @@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { No DMA functions ***********************************************************************************************/ void TFT_T_DMA::fillScreenNoDma(uint16_t color) { - setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + //digitalWrite(_dc, 0); + //SPI.transfer(TFT_RAMWR); int i,j; for (j=0; j> 1; @@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t else SPI.transfer16(bgcolor); } bits = *charpt++; - digitalWrite(_dc, 1); + //digitalWrite(_dc, 1); if (bits&0x01) SPI.transfer16(fgcolor); else SPI.transfer16(bgcolor); bits = bits >> 1; @@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t SPI.endTransaction(); } - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); -} - - -void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { - setArea(x,y,x+w-1,y+h-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); - int i; - for (i=0; i<(w*h); i++) - { - digitalWrite(_dc, 1); - SPI.transfer16(color); - } -#ifdef ILI9341 - digitalWrite(_dc, 0); - SPI.transfer(ILI9341_SLPOUT); - digitalWrite(_dc, 1); -#endif + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); digitalWrite(_cs, 1); SPI.endTransaction(); - - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); } + + + /*********************************************************************************************** DMA functions ***********************************************************************************************/ diff --git a/MCUME_teensy/teensyo2em/tft_t_dma.h b/MCUME_teensy/teensyo2em/tft_t_dma.h index 1fd938f..cc47f28 100644 --- a/MCUME_teensy/teensyo2em/tft_t_dma.h +++ b/MCUME_teensy/teensyo2em/tft_t_dma.h @@ -21,18 +21,16 @@ #define B16(rgb) ((rgb<<3)&0xf8) -#define TFT_HEIGHT 240 - -#ifdef ILI9341 -#define TFT_WIDTH 320 -#define TFT_REALWIDTH 320 -#define TFT_REALHEIGHT 240 -#endif -#ifdef ST7789 -#define TFT_WIDTH 240 +#ifdef LOHRES +#define TFT_WIDTH 240 #define TFT_REALWIDTH 240 -#define TFT_REALHEIGHT 240 +#else +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 #endif +#define TFT_HEIGHT 240 +#define TFT_REALHEIGHT 240 + #define LINES_PER_BLOCK 64 #define NR_OF_BLOCK 4 diff --git a/MCUME_teensy/teensyo2em/tft_t_dma_config.h b/MCUME_teensy/teensyo2em/tft_t_dma_config.h index 7ee0925..d8200a2 100644 --- a/MCUME_teensy/teensyo2em/tft_t_dma_config.h +++ b/MCUME_teensy/teensyo2em/tft_t_dma_config.h @@ -1,11 +1,7 @@ #include "platform_config.h" -#ifdef TEENSYBOY -#define ST7789 1 -#define ROTATE_SCREEN 1 -#else -#define ILI9341 1 -#endif +//#define ST7789 1 +//#define ILI9341 1 #define TFT_LINEARINT 1 #define LINEARINT_HACK 1 diff --git a/MCUME_teensy/teensypce/emuapi.cpp b/MCUME_teensy/teensypce/emuapi.cpp index 576f2d5..e205cd3 100644 --- a/MCUME_teensy/teensypce/emuapi.cpp +++ b/MCUME_teensy/teensypce/emuapi.cpp @@ -1373,7 +1373,7 @@ void emu_init(void) emu_InitJoysticks(); -#ifdef TEENSYBOY +#ifdef SWAP_JOYSTICK joySwapped = true; #else joySwapped = false; diff --git a/MCUME_teensy/teensypce/iopins.h b/MCUME_teensy/teensypce/iopins.h index eead4a9..28b6b83 100644 --- a/MCUME_teensy/teensypce/iopins.h +++ b/MCUME_teensy/teensypce/iopins.h @@ -2,31 +2,17 @@ #define IOPINS_H #include "platform_config.h" -#include "tft_t_dma_config.h" #ifndef OLD_LAYOUT -#ifdef ST7789 -// ST7789 #define TFT_SCLK 13 #define TFT_MOSI 11 #define TFT_MISO 12 #define TFT_TOUCH_CS 255 #define TFT_TOUCH_INT 255 #define TFT_DC 9 -#define TFT_CS 255 -#define TFT_RST 23 -#else -// ILI9341 -#define TFT_SCLK 13 -#define TFT_MOSI 11 -#define TFT_MISO 12 -#define TFT_TOUCH_CS 255 //38 -#define TFT_TOUCH_INT 255 //37 -#define TFT_DC 9 -#define TFT_CS 23 -#define TFT_RST 255 -#endif +#define TFT_CS 22 // 255 for LORES ST7789 (NO CS) +#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V // PSRAM #define PSRAM_CS 36 @@ -38,10 +24,10 @@ #define SD_SCLK 13 #define SD_MOSI 12 #define SD_MISO 11 -#ifdef TEENSYBOY -#define SD_CS BUILTIN_SDCARD +#ifdef EXTERNAL_SD +#define SD_CS 8 #else -#define SD_CS 5 +#define SD_CS BUILTIN_SDCARD #endif // I2C keyboard @@ -54,17 +40,15 @@ #define PIN_JOY2_BTN 17 #define PIN_KEY_USER1 3 //34 #define PIN_KEY_USER2 4 //35 -//#define PIN_KEY_USER3 255 -//#define PIN_KEY_USER4 255 +//#define PIN_KEY_USER3 33 +//#define PIN_KEY_USER4 39 -#ifdef TEENSYBOY // Second joystick #define PIN_JOY1_BTN 2 #define PIN_JOY1_1 14 // UP #define PIN_JOY1_2 7 // DOWN #define PIN_JOY1_3 6 // RIGHT #define PIN_JOY1_4 5 // LEFT -#endif #else // OLD LAYOUT!!!! diff --git a/MCUME_teensy/teensypce/platform_config.h b/MCUME_teensy/teensypce/platform_config.h index 89bbe11..c6ccb01 100644 --- a/MCUME_teensy/teensypce/platform_config.h +++ b/MCUME_teensy/teensypce/platform_config.h @@ -1,14 +1,20 @@ #ifndef _PLATFORM_CONFIG_H_ #define _PLATFORM_CONFIG_H_ -//#define OLD_LAYOUT 1 -//#define TEENSYBOY 1 +//#define OLD_LAYOUT 1 -#define HAS_PSRAM 1 +#define ILI9341 1 +//#define ST7789 1 +//#define SWAP_JOYSTICK 1 +//#define LOHRES 1 +//#define ROTATE_SCREEN 1 +#define EXTERNAL_SD 1 -//#define USE_SDFAT 1 -//#define SD_FAT_TYPE 1 -//#define USE_SDFS 1 -//#define SDFSDEV "1:" +#define HAS_PSRAM 1 + +//#define USE_SDFAT 1 +//#define SD_FAT_TYPE 1 +//#define USE_SDFS 1 +//#define SDFSDEV "1:" #endif diff --git a/MCUME_teensy/teensypce/tft_t_dma.cpp b/MCUME_teensy/teensypce/tft_t_dma.cpp index 5013b73..5c2f93d 100644 --- a/MCUME_teensy/teensypce/tft_t_dma.cpp +++ b/MCUME_teensy/teensypce/tft_t_dma.cpp @@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = { #endif }; - static void dmaInterrupt() { dmatx.clearInterrupt(); curTransfer++; @@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { int dx=0; int dy=0; - #ifdef ST7789 + if (TFT_REALWIDTH == TFT_REALHEIGHT) + { #ifdef ROTATE_SCREEN - if (!flipped) { - dy += 80; - } + if (!flipped) { + dy += 80; + } #else - if (flipped) { - dx += 80; + if (flipped) { + dx += 80; + } +#endif } -#endif -#endif +#endif + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1+dx); + digitalWrite(_dc, 1); + SPI.transfer16(x2+dx); + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1+dy); + digitalWrite(_dc, 1); + SPI.transfer16(y2+dy); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + return; + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); @@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { } + + void TFT_T_DMA::begin(void) { SPI.setMOSI(_mosi); SPI.setMISO(_miso); @@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) { SPI.begin(); // Initialize display - if (_rst < 255) { // toggle RST low to reset + if (_rst != 0xff) { pinMode(_rst, OUTPUT); digitalWrite(_rst, HIGH); - delay(5); + delay(100); digitalWrite(_rst, LOW); - delay(20); + delay(100); digitalWrite(_rst, HIGH); - delay(120); + delay(200); } - + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); const uint8_t *addr = init_commands; digitalWrite(_cs, 0); @@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) { SPI.transfer(ILI9341_DISPON); digitalWrite(_dc, 1); digitalWrite(_cs, 1); - SPI.endTransaction(); #endif #ifdef ST7789 uint8_t numCommands, numArgs; @@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) { if(ms) { ms = *addr++; // Read post-command delay time (ms) if(ms == 255) ms = 500; // If 255, delay for 500 ms - SPI.endTransaction(); - digitalWrite(_dc, 1); digitalWrite(_cs, 1); + SPI.endTransaction(); delay(ms); - //beginSPITransaction(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); } } + digitalWrite(_cs, 1); #endif setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + SPI.endTransaction(); + + cancelled = false; - cancelled = false; #ifdef FLIP_SCREEN flipscreen(true); #else flipscreen(false); -#endif +#endif +#ifdef ST7789 + if (TFT_REALWIDTH != TFT_REALHEIGHT) + { + flipscreen(true); + } +#endif }; @@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) { #endif dmatx = dmasettings[0]; digitalWrite(_cs, 0); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); digitalWrite(_dc, 0); SPI.transfer(TFT_RAMWR); digitalWrite(_dc, 1); @@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { No DMA functions ***********************************************************************************************/ void TFT_T_DMA::fillScreenNoDma(uint16_t color) { - setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + //digitalWrite(_dc, 0); + //SPI.transfer(TFT_RAMWR); int i,j; for (j=0; j> 1; @@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t else SPI.transfer16(bgcolor); } bits = *charpt++; - digitalWrite(_dc, 1); + //digitalWrite(_dc, 1); if (bits&0x01) SPI.transfer16(fgcolor); else SPI.transfer16(bgcolor); bits = bits >> 1; @@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t SPI.endTransaction(); } - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); -} - - -void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { - setArea(x,y,x+w-1,y+h-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); - int i; - for (i=0; i<(w*h); i++) - { - digitalWrite(_dc, 1); - SPI.transfer16(color); - } -#ifdef ILI9341 - digitalWrite(_dc, 0); - SPI.transfer(ILI9341_SLPOUT); - digitalWrite(_dc, 1); -#endif + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); digitalWrite(_cs, 1); SPI.endTransaction(); - - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); } + + + /*********************************************************************************************** DMA functions ***********************************************************************************************/ diff --git a/MCUME_teensy/teensypce/tft_t_dma.h b/MCUME_teensy/teensypce/tft_t_dma.h index 3552e84..b44485d 100644 --- a/MCUME_teensy/teensypce/tft_t_dma.h +++ b/MCUME_teensy/teensypce/tft_t_dma.h @@ -22,18 +22,15 @@ #define PAL_COLOR_MASK 0xff -#define TFT_HEIGHT 240 - -#ifdef ILI9341 -#define TFT_WIDTH 256 -#define TFT_REALWIDTH 320 -#define TFT_REALHEIGHT 240 -#endif -#ifdef ST7789 -#define TFT_WIDTH 240 +#ifdef LOHRES +#define TFT_WIDTH 240 #define TFT_REALWIDTH 240 -#define TFT_REALHEIGHT 240 +#else +#define TFT_WIDTH 256 +#define TFT_REALWIDTH 320 #endif +#define TFT_HEIGHT 240 +#define TFT_REALHEIGHT 240 #define LINES_PER_BLOCK 64 #define NR_OF_BLOCK 4 diff --git a/MCUME_teensy/teensypce/tft_t_dma_config.h b/MCUME_teensy/teensypce/tft_t_dma_config.h index 7ee0925..d8200a2 100644 --- a/MCUME_teensy/teensypce/tft_t_dma_config.h +++ b/MCUME_teensy/teensypce/tft_t_dma_config.h @@ -1,11 +1,7 @@ #include "platform_config.h" -#ifdef TEENSYBOY -#define ST7789 1 -#define ROTATE_SCREEN 1 -#else -#define ILI9341 1 -#endif +//#define ST7789 1 +//#define ILI9341 1 #define TFT_LINEARINT 1 #define LINEARINT_HACK 1 diff --git a/MCUME_teensy/teensysms/emuapi.cpp b/MCUME_teensy/teensysms/emuapi.cpp index 576f2d5..e205cd3 100644 --- a/MCUME_teensy/teensysms/emuapi.cpp +++ b/MCUME_teensy/teensysms/emuapi.cpp @@ -1373,7 +1373,7 @@ void emu_init(void) emu_InitJoysticks(); -#ifdef TEENSYBOY +#ifdef SWAP_JOYSTICK joySwapped = true; #else joySwapped = false; diff --git a/MCUME_teensy/teensysms/iopins.h b/MCUME_teensy/teensysms/iopins.h index eead4a9..28b6b83 100644 --- a/MCUME_teensy/teensysms/iopins.h +++ b/MCUME_teensy/teensysms/iopins.h @@ -2,31 +2,17 @@ #define IOPINS_H #include "platform_config.h" -#include "tft_t_dma_config.h" #ifndef OLD_LAYOUT -#ifdef ST7789 -// ST7789 #define TFT_SCLK 13 #define TFT_MOSI 11 #define TFT_MISO 12 #define TFT_TOUCH_CS 255 #define TFT_TOUCH_INT 255 #define TFT_DC 9 -#define TFT_CS 255 -#define TFT_RST 23 -#else -// ILI9341 -#define TFT_SCLK 13 -#define TFT_MOSI 11 -#define TFT_MISO 12 -#define TFT_TOUCH_CS 255 //38 -#define TFT_TOUCH_INT 255 //37 -#define TFT_DC 9 -#define TFT_CS 23 -#define TFT_RST 255 -#endif +#define TFT_CS 22 // 255 for LORES ST7789 (NO CS) +#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V // PSRAM #define PSRAM_CS 36 @@ -38,10 +24,10 @@ #define SD_SCLK 13 #define SD_MOSI 12 #define SD_MISO 11 -#ifdef TEENSYBOY -#define SD_CS BUILTIN_SDCARD +#ifdef EXTERNAL_SD +#define SD_CS 8 #else -#define SD_CS 5 +#define SD_CS BUILTIN_SDCARD #endif // I2C keyboard @@ -54,17 +40,15 @@ #define PIN_JOY2_BTN 17 #define PIN_KEY_USER1 3 //34 #define PIN_KEY_USER2 4 //35 -//#define PIN_KEY_USER3 255 -//#define PIN_KEY_USER4 255 +//#define PIN_KEY_USER3 33 +//#define PIN_KEY_USER4 39 -#ifdef TEENSYBOY // Second joystick #define PIN_JOY1_BTN 2 #define PIN_JOY1_1 14 // UP #define PIN_JOY1_2 7 // DOWN #define PIN_JOY1_3 6 // RIGHT #define PIN_JOY1_4 5 // LEFT -#endif #else // OLD LAYOUT!!!! diff --git a/MCUME_teensy/teensysms/platform_config.h b/MCUME_teensy/teensysms/platform_config.h index 89bbe11..c6ccb01 100644 --- a/MCUME_teensy/teensysms/platform_config.h +++ b/MCUME_teensy/teensysms/platform_config.h @@ -1,14 +1,20 @@ #ifndef _PLATFORM_CONFIG_H_ #define _PLATFORM_CONFIG_H_ -//#define OLD_LAYOUT 1 -//#define TEENSYBOY 1 +//#define OLD_LAYOUT 1 -#define HAS_PSRAM 1 +#define ILI9341 1 +//#define ST7789 1 +//#define SWAP_JOYSTICK 1 +//#define LOHRES 1 +//#define ROTATE_SCREEN 1 +#define EXTERNAL_SD 1 -//#define USE_SDFAT 1 -//#define SD_FAT_TYPE 1 -//#define USE_SDFS 1 -//#define SDFSDEV "1:" +#define HAS_PSRAM 1 + +//#define USE_SDFAT 1 +//#define SD_FAT_TYPE 1 +//#define USE_SDFS 1 +//#define SDFSDEV "1:" #endif diff --git a/MCUME_teensy/teensysms/psram_t.cpp b/MCUME_teensy/teensysms/psram_t.cpp index c5661bc..902e946 100644 --- a/MCUME_teensy/teensysms/psram_t.cpp +++ b/MCUME_teensy/teensysms/psram_t.cpp @@ -240,6 +240,7 @@ Serial.printf("D") ; Serial.flush(); #include "emuapi.h" +#define MAXPSRAM (256*1024) PSRAM_T::PSRAM_T(uint8_t cs, uint8_t mosi, uint8_t sclk, uint8_t miso) { @@ -247,17 +248,22 @@ PSRAM_T::PSRAM_T(uint8_t cs, uint8_t mosi, uint8_t sclk, uint8_t miso) void PSRAM_T::begin(void) { +// emu_Malloc(MAXPSRAM); emu_FileTempInit(); } void PSRAM_T::psram_read_n(uint32_t addr, uint8_t * val, int n) { + //if (addr >= MAXPSRAM) + // return; emu_FileTempRead(addr,val,n); } void PSRAM_T::psram_write(uint32_t addr, uint8_t val) { + //if (addr >= MAXPSRAM) + // return; emu_FileTempWrite(addr,val); } diff --git a/MCUME_teensy/teensysms/tft_t_dma.cpp b/MCUME_teensy/teensysms/tft_t_dma.cpp index 5013b73..5c2f93d 100644 --- a/MCUME_teensy/teensysms/tft_t_dma.cpp +++ b/MCUME_teensy/teensysms/tft_t_dma.cpp @@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = { #endif }; - static void dmaInterrupt() { dmatx.clearInterrupt(); curTransfer++; @@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { int dx=0; int dy=0; - #ifdef ST7789 + if (TFT_REALWIDTH == TFT_REALHEIGHT) + { #ifdef ROTATE_SCREEN - if (!flipped) { - dy += 80; - } + if (!flipped) { + dy += 80; + } #else - if (flipped) { - dx += 80; + if (flipped) { + dx += 80; + } +#endif } -#endif -#endif +#endif + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1+dx); + digitalWrite(_dc, 1); + SPI.transfer16(x2+dx); + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1+dy); + digitalWrite(_dc, 1); + SPI.transfer16(y2+dy); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + return; + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); @@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { } + + void TFT_T_DMA::begin(void) { SPI.setMOSI(_mosi); SPI.setMISO(_miso); @@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) { SPI.begin(); // Initialize display - if (_rst < 255) { // toggle RST low to reset + if (_rst != 0xff) { pinMode(_rst, OUTPUT); digitalWrite(_rst, HIGH); - delay(5); + delay(100); digitalWrite(_rst, LOW); - delay(20); + delay(100); digitalWrite(_rst, HIGH); - delay(120); + delay(200); } - + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); const uint8_t *addr = init_commands; digitalWrite(_cs, 0); @@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) { SPI.transfer(ILI9341_DISPON); digitalWrite(_dc, 1); digitalWrite(_cs, 1); - SPI.endTransaction(); #endif #ifdef ST7789 uint8_t numCommands, numArgs; @@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) { if(ms) { ms = *addr++; // Read post-command delay time (ms) if(ms == 255) ms = 500; // If 255, delay for 500 ms - SPI.endTransaction(); - digitalWrite(_dc, 1); digitalWrite(_cs, 1); + SPI.endTransaction(); delay(ms); - //beginSPITransaction(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); } } + digitalWrite(_cs, 1); #endif setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + SPI.endTransaction(); + + cancelled = false; - cancelled = false; #ifdef FLIP_SCREEN flipscreen(true); #else flipscreen(false); -#endif +#endif +#ifdef ST7789 + if (TFT_REALWIDTH != TFT_REALHEIGHT) + { + flipscreen(true); + } +#endif }; @@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) { #endif dmatx = dmasettings[0]; digitalWrite(_cs, 0); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); digitalWrite(_dc, 0); SPI.transfer(TFT_RAMWR); digitalWrite(_dc, 1); @@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { No DMA functions ***********************************************************************************************/ void TFT_T_DMA::fillScreenNoDma(uint16_t color) { - setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + //digitalWrite(_dc, 0); + //SPI.transfer(TFT_RAMWR); int i,j; for (j=0; j> 1; @@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t else SPI.transfer16(bgcolor); } bits = *charpt++; - digitalWrite(_dc, 1); + //digitalWrite(_dc, 1); if (bits&0x01) SPI.transfer16(fgcolor); else SPI.transfer16(bgcolor); bits = bits >> 1; @@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t SPI.endTransaction(); } - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); -} - - -void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { - setArea(x,y,x+w-1,y+h-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); - int i; - for (i=0; i<(w*h); i++) - { - digitalWrite(_dc, 1); - SPI.transfer16(color); - } -#ifdef ILI9341 - digitalWrite(_dc, 0); - SPI.transfer(ILI9341_SLPOUT); - digitalWrite(_dc, 1); -#endif + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); digitalWrite(_cs, 1); SPI.endTransaction(); - - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); } + + + /*********************************************************************************************** DMA functions ***********************************************************************************************/ diff --git a/MCUME_teensy/teensysms/tft_t_dma.h b/MCUME_teensy/teensysms/tft_t_dma.h index fcf006a..da9a593 100644 --- a/MCUME_teensy/teensysms/tft_t_dma.h +++ b/MCUME_teensy/teensysms/tft_t_dma.h @@ -21,18 +21,15 @@ #define B16(rgb) ((rgb<<3)&0xf8) -#define TFT_HEIGHT 192 - -#ifdef ILI9341 -#define TFT_WIDTH 256 -#define TFT_REALWIDTH 320 -#define TFT_REALHEIGHT 240 -#endif -#ifdef ST7789 -#define TFT_WIDTH 240 +#ifdef LOHRES +#define TFT_WIDTH 240 #define TFT_REALWIDTH 240 -#define TFT_REALHEIGHT 240 +#else +#define TFT_WIDTH 256 +#define TFT_REALWIDTH 320 #endif +#define TFT_HEIGHT 192 +#define TFT_REALHEIGHT 240 #define LINES_PER_BLOCK 64 #define NR_OF_BLOCK 4 diff --git a/MCUME_teensy/teensysms/tft_t_dma_config.h b/MCUME_teensy/teensysms/tft_t_dma_config.h index 7ee0925..d8200a2 100644 --- a/MCUME_teensy/teensysms/tft_t_dma_config.h +++ b/MCUME_teensy/teensysms/tft_t_dma_config.h @@ -1,11 +1,7 @@ #include "platform_config.h" -#ifdef TEENSYBOY -#define ST7789 1 -#define ROTATE_SCREEN 1 -#else -#define ILI9341 1 -#endif +//#define ST7789 1 +//#define ILI9341 1 #define TFT_LINEARINT 1 #define LINEARINT_HACK 1 diff --git a/MCUME_teensy/teensyspeccy/emuapi.cpp b/MCUME_teensy/teensyspeccy/emuapi.cpp index 576f2d5..e205cd3 100644 --- a/MCUME_teensy/teensyspeccy/emuapi.cpp +++ b/MCUME_teensy/teensyspeccy/emuapi.cpp @@ -1373,7 +1373,7 @@ void emu_init(void) emu_InitJoysticks(); -#ifdef TEENSYBOY +#ifdef SWAP_JOYSTICK joySwapped = true; #else joySwapped = false; diff --git a/MCUME_teensy/teensyspeccy/iopins.h b/MCUME_teensy/teensyspeccy/iopins.h index eead4a9..28b6b83 100644 --- a/MCUME_teensy/teensyspeccy/iopins.h +++ b/MCUME_teensy/teensyspeccy/iopins.h @@ -2,31 +2,17 @@ #define IOPINS_H #include "platform_config.h" -#include "tft_t_dma_config.h" #ifndef OLD_LAYOUT -#ifdef ST7789 -// ST7789 #define TFT_SCLK 13 #define TFT_MOSI 11 #define TFT_MISO 12 #define TFT_TOUCH_CS 255 #define TFT_TOUCH_INT 255 #define TFT_DC 9 -#define TFT_CS 255 -#define TFT_RST 23 -#else -// ILI9341 -#define TFT_SCLK 13 -#define TFT_MOSI 11 -#define TFT_MISO 12 -#define TFT_TOUCH_CS 255 //38 -#define TFT_TOUCH_INT 255 //37 -#define TFT_DC 9 -#define TFT_CS 23 -#define TFT_RST 255 -#endif +#define TFT_CS 22 // 255 for LORES ST7789 (NO CS) +#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V // PSRAM #define PSRAM_CS 36 @@ -38,10 +24,10 @@ #define SD_SCLK 13 #define SD_MOSI 12 #define SD_MISO 11 -#ifdef TEENSYBOY -#define SD_CS BUILTIN_SDCARD +#ifdef EXTERNAL_SD +#define SD_CS 8 #else -#define SD_CS 5 +#define SD_CS BUILTIN_SDCARD #endif // I2C keyboard @@ -54,17 +40,15 @@ #define PIN_JOY2_BTN 17 #define PIN_KEY_USER1 3 //34 #define PIN_KEY_USER2 4 //35 -//#define PIN_KEY_USER3 255 -//#define PIN_KEY_USER4 255 +//#define PIN_KEY_USER3 33 +//#define PIN_KEY_USER4 39 -#ifdef TEENSYBOY // Second joystick #define PIN_JOY1_BTN 2 #define PIN_JOY1_1 14 // UP #define PIN_JOY1_2 7 // DOWN #define PIN_JOY1_3 6 // RIGHT #define PIN_JOY1_4 5 // LEFT -#endif #else // OLD LAYOUT!!!! diff --git a/MCUME_teensy/teensyspeccy/platform_config.h b/MCUME_teensy/teensyspeccy/platform_config.h index 4186a21..c6ccb01 100644 --- a/MCUME_teensy/teensyspeccy/platform_config.h +++ b/MCUME_teensy/teensyspeccy/platform_config.h @@ -1,14 +1,20 @@ #ifndef _PLATFORM_CONFIG_H_ #define _PLATFORM_CONFIG_H_ -//#define OLD_LAYOUT 1 -//#define TEENSYBOY 1 +//#define OLD_LAYOUT 1 -//#define HAS_PSRAM 1 +#define ILI9341 1 +//#define ST7789 1 +//#define SWAP_JOYSTICK 1 +//#define LOHRES 1 +//#define ROTATE_SCREEN 1 +#define EXTERNAL_SD 1 -//#define USE_SDFAT 1 -//#define SD_FAT_TYPE 1 -//#define USE_SDFS 1 -//#define SDFSDEV "1:" +#define HAS_PSRAM 1 + +//#define USE_SDFAT 1 +//#define SD_FAT_TYPE 1 +//#define USE_SDFS 1 +//#define SDFSDEV "1:" #endif diff --git a/MCUME_teensy/teensyspeccy/tft_t_dma.cpp b/MCUME_teensy/teensyspeccy/tft_t_dma.cpp index 5013b73..5c2f93d 100644 --- a/MCUME_teensy/teensyspeccy/tft_t_dma.cpp +++ b/MCUME_teensy/teensyspeccy/tft_t_dma.cpp @@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = { #endif }; - static void dmaInterrupt() { dmatx.clearInterrupt(); curTransfer++; @@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { int dx=0; int dy=0; - #ifdef ST7789 + if (TFT_REALWIDTH == TFT_REALHEIGHT) + { #ifdef ROTATE_SCREEN - if (!flipped) { - dy += 80; - } + if (!flipped) { + dy += 80; + } #else - if (flipped) { - dx += 80; + if (flipped) { + dx += 80; + } +#endif } -#endif -#endif +#endif + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1+dx); + digitalWrite(_dc, 1); + SPI.transfer16(x2+dx); + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1+dy); + digitalWrite(_dc, 1); + SPI.transfer16(y2+dy); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + return; + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); @@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { } + + void TFT_T_DMA::begin(void) { SPI.setMOSI(_mosi); SPI.setMISO(_miso); @@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) { SPI.begin(); // Initialize display - if (_rst < 255) { // toggle RST low to reset + if (_rst != 0xff) { pinMode(_rst, OUTPUT); digitalWrite(_rst, HIGH); - delay(5); + delay(100); digitalWrite(_rst, LOW); - delay(20); + delay(100); digitalWrite(_rst, HIGH); - delay(120); + delay(200); } - + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); const uint8_t *addr = init_commands; digitalWrite(_cs, 0); @@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) { SPI.transfer(ILI9341_DISPON); digitalWrite(_dc, 1); digitalWrite(_cs, 1); - SPI.endTransaction(); #endif #ifdef ST7789 uint8_t numCommands, numArgs; @@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) { if(ms) { ms = *addr++; // Read post-command delay time (ms) if(ms == 255) ms = 500; // If 255, delay for 500 ms - SPI.endTransaction(); - digitalWrite(_dc, 1); digitalWrite(_cs, 1); + SPI.endTransaction(); delay(ms); - //beginSPITransaction(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); } } + digitalWrite(_cs, 1); #endif setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + SPI.endTransaction(); + + cancelled = false; - cancelled = false; #ifdef FLIP_SCREEN flipscreen(true); #else flipscreen(false); -#endif +#endif +#ifdef ST7789 + if (TFT_REALWIDTH != TFT_REALHEIGHT) + { + flipscreen(true); + } +#endif }; @@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) { #endif dmatx = dmasettings[0]; digitalWrite(_cs, 0); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); digitalWrite(_dc, 0); SPI.transfer(TFT_RAMWR); digitalWrite(_dc, 1); @@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { No DMA functions ***********************************************************************************************/ void TFT_T_DMA::fillScreenNoDma(uint16_t color) { - setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + //digitalWrite(_dc, 0); + //SPI.transfer(TFT_RAMWR); int i,j; for (j=0; j> 1; @@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t else SPI.transfer16(bgcolor); } bits = *charpt++; - digitalWrite(_dc, 1); + //digitalWrite(_dc, 1); if (bits&0x01) SPI.transfer16(fgcolor); else SPI.transfer16(bgcolor); bits = bits >> 1; @@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t SPI.endTransaction(); } - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); -} - - -void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { - setArea(x,y,x+w-1,y+h-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); - int i; - for (i=0; i<(w*h); i++) - { - digitalWrite(_dc, 1); - SPI.transfer16(color); - } -#ifdef ILI9341 - digitalWrite(_dc, 0); - SPI.transfer(ILI9341_SLPOUT); - digitalWrite(_dc, 1); -#endif + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); digitalWrite(_cs, 1); SPI.endTransaction(); - - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); } + + + /*********************************************************************************************** DMA functions ***********************************************************************************************/ diff --git a/MCUME_teensy/teensyspeccy/tft_t_dma.h b/MCUME_teensy/teensyspeccy/tft_t_dma.h index a65f881..f86f7f3 100644 --- a/MCUME_teensy/teensyspeccy/tft_t_dma.h +++ b/MCUME_teensy/teensyspeccy/tft_t_dma.h @@ -21,18 +21,15 @@ #define B16(rgb) ((rgb<<3)&0xf8) -#define TFT_HEIGHT 192 - -#ifdef ILI9341 -#define TFT_WIDTH 320 -#define TFT_REALWIDTH 320 -#define TFT_REALHEIGHT 240 -#endif -#ifdef ST7789 -#define TFT_WIDTH 240 +#ifdef LOHRES +#define TFT_WIDTH 240 #define TFT_REALWIDTH 240 -#define TFT_REALHEIGHT 240 +#else +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 #endif +#define TFT_HEIGHT 192 +#define TFT_REALHEIGHT 240 #define LINES_PER_BLOCK 64 #define NR_OF_BLOCK 4 diff --git a/MCUME_teensy/teensyspeccy/tft_t_dma_config.h b/MCUME_teensy/teensyspeccy/tft_t_dma_config.h index 7ee0925..d8200a2 100644 --- a/MCUME_teensy/teensyspeccy/tft_t_dma_config.h +++ b/MCUME_teensy/teensyspeccy/tft_t_dma_config.h @@ -1,11 +1,7 @@ #include "platform_config.h" -#ifdef TEENSYBOY -#define ST7789 1 -#define ROTATE_SCREEN 1 -#else -#define ILI9341 1 -#endif +//#define ST7789 1 +//#define ILI9341 1 #define TFT_LINEARINT 1 #define LINEARINT_HACK 1 diff --git a/MCUME_teensy/teensyvcs/emuapi.cpp b/MCUME_teensy/teensyvcs/emuapi.cpp index 576f2d5..e205cd3 100644 --- a/MCUME_teensy/teensyvcs/emuapi.cpp +++ b/MCUME_teensy/teensyvcs/emuapi.cpp @@ -1373,7 +1373,7 @@ void emu_init(void) emu_InitJoysticks(); -#ifdef TEENSYBOY +#ifdef SWAP_JOYSTICK joySwapped = true; #else joySwapped = false; diff --git a/MCUME_teensy/teensyvcs/iopins.h b/MCUME_teensy/teensyvcs/iopins.h index eead4a9..28b6b83 100644 --- a/MCUME_teensy/teensyvcs/iopins.h +++ b/MCUME_teensy/teensyvcs/iopins.h @@ -2,31 +2,17 @@ #define IOPINS_H #include "platform_config.h" -#include "tft_t_dma_config.h" #ifndef OLD_LAYOUT -#ifdef ST7789 -// ST7789 #define TFT_SCLK 13 #define TFT_MOSI 11 #define TFT_MISO 12 #define TFT_TOUCH_CS 255 #define TFT_TOUCH_INT 255 #define TFT_DC 9 -#define TFT_CS 255 -#define TFT_RST 23 -#else -// ILI9341 -#define TFT_SCLK 13 -#define TFT_MOSI 11 -#define TFT_MISO 12 -#define TFT_TOUCH_CS 255 //38 -#define TFT_TOUCH_INT 255 //37 -#define TFT_DC 9 -#define TFT_CS 23 -#define TFT_RST 255 -#endif +#define TFT_CS 22 // 255 for LORES ST7789 (NO CS) +#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V // PSRAM #define PSRAM_CS 36 @@ -38,10 +24,10 @@ #define SD_SCLK 13 #define SD_MOSI 12 #define SD_MISO 11 -#ifdef TEENSYBOY -#define SD_CS BUILTIN_SDCARD +#ifdef EXTERNAL_SD +#define SD_CS 8 #else -#define SD_CS 5 +#define SD_CS BUILTIN_SDCARD #endif // I2C keyboard @@ -54,17 +40,15 @@ #define PIN_JOY2_BTN 17 #define PIN_KEY_USER1 3 //34 #define PIN_KEY_USER2 4 //35 -//#define PIN_KEY_USER3 255 -//#define PIN_KEY_USER4 255 +//#define PIN_KEY_USER3 33 +//#define PIN_KEY_USER4 39 -#ifdef TEENSYBOY // Second joystick #define PIN_JOY1_BTN 2 #define PIN_JOY1_1 14 // UP #define PIN_JOY1_2 7 // DOWN #define PIN_JOY1_3 6 // RIGHT #define PIN_JOY1_4 5 // LEFT -#endif #else // OLD LAYOUT!!!! diff --git a/MCUME_teensy/teensyvcs/platform_config.h b/MCUME_teensy/teensyvcs/platform_config.h index 4186a21..c6ccb01 100644 --- a/MCUME_teensy/teensyvcs/platform_config.h +++ b/MCUME_teensy/teensyvcs/platform_config.h @@ -1,14 +1,20 @@ #ifndef _PLATFORM_CONFIG_H_ #define _PLATFORM_CONFIG_H_ -//#define OLD_LAYOUT 1 -//#define TEENSYBOY 1 +//#define OLD_LAYOUT 1 -//#define HAS_PSRAM 1 +#define ILI9341 1 +//#define ST7789 1 +//#define SWAP_JOYSTICK 1 +//#define LOHRES 1 +//#define ROTATE_SCREEN 1 +#define EXTERNAL_SD 1 -//#define USE_SDFAT 1 -//#define SD_FAT_TYPE 1 -//#define USE_SDFS 1 -//#define SDFSDEV "1:" +#define HAS_PSRAM 1 + +//#define USE_SDFAT 1 +//#define SD_FAT_TYPE 1 +//#define USE_SDFS 1 +//#define SDFSDEV "1:" #endif diff --git a/MCUME_teensy/teensyvcs/tft_t_dma.cpp b/MCUME_teensy/teensyvcs/tft_t_dma.cpp index 5013b73..5c2f93d 100644 --- a/MCUME_teensy/teensyvcs/tft_t_dma.cpp +++ b/MCUME_teensy/teensyvcs/tft_t_dma.cpp @@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = { #endif }; - static void dmaInterrupt() { dmatx.clearInterrupt(); curTransfer++; @@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { int dx=0; int dy=0; - #ifdef ST7789 + if (TFT_REALWIDTH == TFT_REALHEIGHT) + { #ifdef ROTATE_SCREEN - if (!flipped) { - dy += 80; - } + if (!flipped) { + dy += 80; + } #else - if (flipped) { - dx += 80; + if (flipped) { + dx += 80; + } +#endif } -#endif -#endif +#endif + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1+dx); + digitalWrite(_dc, 1); + SPI.transfer16(x2+dx); + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1+dy); + digitalWrite(_dc, 1); + SPI.transfer16(y2+dy); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + return; + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); @@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { } + + void TFT_T_DMA::begin(void) { SPI.setMOSI(_mosi); SPI.setMISO(_miso); @@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) { SPI.begin(); // Initialize display - if (_rst < 255) { // toggle RST low to reset + if (_rst != 0xff) { pinMode(_rst, OUTPUT); digitalWrite(_rst, HIGH); - delay(5); + delay(100); digitalWrite(_rst, LOW); - delay(20); + delay(100); digitalWrite(_rst, HIGH); - delay(120); + delay(200); } - + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); const uint8_t *addr = init_commands; digitalWrite(_cs, 0); @@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) { SPI.transfer(ILI9341_DISPON); digitalWrite(_dc, 1); digitalWrite(_cs, 1); - SPI.endTransaction(); #endif #ifdef ST7789 uint8_t numCommands, numArgs; @@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) { if(ms) { ms = *addr++; // Read post-command delay time (ms) if(ms == 255) ms = 500; // If 255, delay for 500 ms - SPI.endTransaction(); - digitalWrite(_dc, 1); digitalWrite(_cs, 1); + SPI.endTransaction(); delay(ms); - //beginSPITransaction(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); } } + digitalWrite(_cs, 1); #endif setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + SPI.endTransaction(); + + cancelled = false; - cancelled = false; #ifdef FLIP_SCREEN flipscreen(true); #else flipscreen(false); -#endif +#endif +#ifdef ST7789 + if (TFT_REALWIDTH != TFT_REALHEIGHT) + { + flipscreen(true); + } +#endif }; @@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) { #endif dmatx = dmasettings[0]; digitalWrite(_cs, 0); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); digitalWrite(_dc, 0); SPI.transfer(TFT_RAMWR); digitalWrite(_dc, 1); @@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { No DMA functions ***********************************************************************************************/ void TFT_T_DMA::fillScreenNoDma(uint16_t color) { - setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + //digitalWrite(_dc, 0); + //SPI.transfer(TFT_RAMWR); int i,j; for (j=0; j> 1; @@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t else SPI.transfer16(bgcolor); } bits = *charpt++; - digitalWrite(_dc, 1); + //digitalWrite(_dc, 1); if (bits&0x01) SPI.transfer16(fgcolor); else SPI.transfer16(bgcolor); bits = bits >> 1; @@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t SPI.endTransaction(); } - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); -} - - -void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { - setArea(x,y,x+w-1,y+h-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); - int i; - for (i=0; i<(w*h); i++) - { - digitalWrite(_dc, 1); - SPI.transfer16(color); - } -#ifdef ILI9341 - digitalWrite(_dc, 0); - SPI.transfer(ILI9341_SLPOUT); - digitalWrite(_dc, 1); -#endif + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); digitalWrite(_cs, 1); SPI.endTransaction(); - - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); } + + + /*********************************************************************************************** DMA functions ***********************************************************************************************/ diff --git a/MCUME_teensy/teensyvcs/tft_t_dma.h b/MCUME_teensy/teensyvcs/tft_t_dma.h index c42e479..bfdcd4c 100644 --- a/MCUME_teensy/teensyvcs/tft_t_dma.h +++ b/MCUME_teensy/teensyvcs/tft_t_dma.h @@ -21,18 +21,15 @@ #define B16(rgb) ((rgb<<3)&0xf8) -#define TFT_HEIGHT 200 - -#ifdef ILI9341 -#define TFT_WIDTH 320 -#define TFT_REALWIDTH 320 -#define TFT_REALHEIGHT 240 -#endif -#ifdef ST7789 -#define TFT_WIDTH 240 +#ifdef LOHRES +#define TFT_WIDTH 240 #define TFT_REALWIDTH 240 -#define TFT_REALHEIGHT 240 +#else +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 #endif +#define TFT_HEIGHT 200 +#define TFT_REALHEIGHT 240 #define LINES_PER_BLOCK 64 #define NR_OF_BLOCK 4 diff --git a/MCUME_teensy/teensyvcs/tft_t_dma_config.h b/MCUME_teensy/teensyvcs/tft_t_dma_config.h index 7ee0925..d8200a2 100644 --- a/MCUME_teensy/teensyvcs/tft_t_dma_config.h +++ b/MCUME_teensy/teensyvcs/tft_t_dma_config.h @@ -1,11 +1,7 @@ #include "platform_config.h" -#ifdef TEENSYBOY -#define ST7789 1 -#define ROTATE_SCREEN 1 -#else -#define ILI9341 1 -#endif +//#define ST7789 1 +//#define ILI9341 1 #define TFT_LINEARINT 1 #define LINEARINT_HACK 1 diff --git a/MCUME_teensy/teensyvectrex/emuapi.cpp b/MCUME_teensy/teensyvectrex/emuapi.cpp index a4c9859..4f2ee2e 100644 --- a/MCUME_teensy/teensyvectrex/emuapi.cpp +++ b/MCUME_teensy/teensyvectrex/emuapi.cpp @@ -1373,7 +1373,7 @@ void emu_init(void) emu_InitJoysticks(); -#ifdef TEENSYBOY +#ifdef SWAP_JOYSTICK joySwapped = true; #else joySwapped = false; diff --git a/MCUME_teensy/teensyvectrex/iopins.h b/MCUME_teensy/teensyvectrex/iopins.h index eead4a9..28b6b83 100644 --- a/MCUME_teensy/teensyvectrex/iopins.h +++ b/MCUME_teensy/teensyvectrex/iopins.h @@ -2,31 +2,17 @@ #define IOPINS_H #include "platform_config.h" -#include "tft_t_dma_config.h" #ifndef OLD_LAYOUT -#ifdef ST7789 -// ST7789 #define TFT_SCLK 13 #define TFT_MOSI 11 #define TFT_MISO 12 #define TFT_TOUCH_CS 255 #define TFT_TOUCH_INT 255 #define TFT_DC 9 -#define TFT_CS 255 -#define TFT_RST 23 -#else -// ILI9341 -#define TFT_SCLK 13 -#define TFT_MOSI 11 -#define TFT_MISO 12 -#define TFT_TOUCH_CS 255 //38 -#define TFT_TOUCH_INT 255 //37 -#define TFT_DC 9 -#define TFT_CS 23 -#define TFT_RST 255 -#endif +#define TFT_CS 22 // 255 for LORES ST7789 (NO CS) +#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V // PSRAM #define PSRAM_CS 36 @@ -38,10 +24,10 @@ #define SD_SCLK 13 #define SD_MOSI 12 #define SD_MISO 11 -#ifdef TEENSYBOY -#define SD_CS BUILTIN_SDCARD +#ifdef EXTERNAL_SD +#define SD_CS 8 #else -#define SD_CS 5 +#define SD_CS BUILTIN_SDCARD #endif // I2C keyboard @@ -54,17 +40,15 @@ #define PIN_JOY2_BTN 17 #define PIN_KEY_USER1 3 //34 #define PIN_KEY_USER2 4 //35 -//#define PIN_KEY_USER3 255 -//#define PIN_KEY_USER4 255 +//#define PIN_KEY_USER3 33 +//#define PIN_KEY_USER4 39 -#ifdef TEENSYBOY // Second joystick #define PIN_JOY1_BTN 2 #define PIN_JOY1_1 14 // UP #define PIN_JOY1_2 7 // DOWN #define PIN_JOY1_3 6 // RIGHT #define PIN_JOY1_4 5 // LEFT -#endif #else // OLD LAYOUT!!!! diff --git a/MCUME_teensy/teensyvectrex/platform_config.h b/MCUME_teensy/teensyvectrex/platform_config.h index 4186a21..c6ccb01 100644 --- a/MCUME_teensy/teensyvectrex/platform_config.h +++ b/MCUME_teensy/teensyvectrex/platform_config.h @@ -1,14 +1,20 @@ #ifndef _PLATFORM_CONFIG_H_ #define _PLATFORM_CONFIG_H_ -//#define OLD_LAYOUT 1 -//#define TEENSYBOY 1 +//#define OLD_LAYOUT 1 -//#define HAS_PSRAM 1 +#define ILI9341 1 +//#define ST7789 1 +//#define SWAP_JOYSTICK 1 +//#define LOHRES 1 +//#define ROTATE_SCREEN 1 +#define EXTERNAL_SD 1 -//#define USE_SDFAT 1 -//#define SD_FAT_TYPE 1 -//#define USE_SDFS 1 -//#define SDFSDEV "1:" +#define HAS_PSRAM 1 + +//#define USE_SDFAT 1 +//#define SD_FAT_TYPE 1 +//#define USE_SDFS 1 +//#define SDFSDEV "1:" #endif diff --git a/MCUME_teensy/teensyvectrex/tft_t_dma.cpp b/MCUME_teensy/teensyvectrex/tft_t_dma.cpp index 5013b73..5c2f93d 100644 --- a/MCUME_teensy/teensyvectrex/tft_t_dma.cpp +++ b/MCUME_teensy/teensyvectrex/tft_t_dma.cpp @@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = { #endif }; - static void dmaInterrupt() { dmatx.clearInterrupt(); curTransfer++; @@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { int dx=0; int dy=0; - #ifdef ST7789 + if (TFT_REALWIDTH == TFT_REALHEIGHT) + { #ifdef ROTATE_SCREEN - if (!flipped) { - dy += 80; - } + if (!flipped) { + dy += 80; + } #else - if (flipped) { - dx += 80; + if (flipped) { + dx += 80; + } +#endif } -#endif -#endif +#endif + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1+dx); + digitalWrite(_dc, 1); + SPI.transfer16(x2+dx); + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1+dy); + digitalWrite(_dc, 1); + SPI.transfer16(y2+dy); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + return; + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); @@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { } + + void TFT_T_DMA::begin(void) { SPI.setMOSI(_mosi); SPI.setMISO(_miso); @@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) { SPI.begin(); // Initialize display - if (_rst < 255) { // toggle RST low to reset + if (_rst != 0xff) { pinMode(_rst, OUTPUT); digitalWrite(_rst, HIGH); - delay(5); + delay(100); digitalWrite(_rst, LOW); - delay(20); + delay(100); digitalWrite(_rst, HIGH); - delay(120); + delay(200); } - + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); const uint8_t *addr = init_commands; digitalWrite(_cs, 0); @@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) { SPI.transfer(ILI9341_DISPON); digitalWrite(_dc, 1); digitalWrite(_cs, 1); - SPI.endTransaction(); #endif #ifdef ST7789 uint8_t numCommands, numArgs; @@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) { if(ms) { ms = *addr++; // Read post-command delay time (ms) if(ms == 255) ms = 500; // If 255, delay for 500 ms - SPI.endTransaction(); - digitalWrite(_dc, 1); digitalWrite(_cs, 1); + SPI.endTransaction(); delay(ms); - //beginSPITransaction(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); } } + digitalWrite(_cs, 1); #endif setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + SPI.endTransaction(); + + cancelled = false; - cancelled = false; #ifdef FLIP_SCREEN flipscreen(true); #else flipscreen(false); -#endif +#endif +#ifdef ST7789 + if (TFT_REALWIDTH != TFT_REALHEIGHT) + { + flipscreen(true); + } +#endif }; @@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) { #endif dmatx = dmasettings[0]; digitalWrite(_cs, 0); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); digitalWrite(_dc, 0); SPI.transfer(TFT_RAMWR); digitalWrite(_dc, 1); @@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { No DMA functions ***********************************************************************************************/ void TFT_T_DMA::fillScreenNoDma(uint16_t color) { - setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + //digitalWrite(_dc, 0); + //SPI.transfer(TFT_RAMWR); int i,j; for (j=0; j> 1; @@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t else SPI.transfer16(bgcolor); } bits = *charpt++; - digitalWrite(_dc, 1); + //digitalWrite(_dc, 1); if (bits&0x01) SPI.transfer16(fgcolor); else SPI.transfer16(bgcolor); bits = bits >> 1; @@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t SPI.endTransaction(); } - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); -} - - -void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { - setArea(x,y,x+w-1,y+h-1); SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); digitalWrite(_cs, 0); - digitalWrite(_dc, 0); - SPI.transfer(TFT_RAMWR); - int i; - for (i=0; i<(w*h); i++) - { - digitalWrite(_dc, 1); - SPI.transfer16(color); - } -#ifdef ILI9341 - digitalWrite(_dc, 0); - SPI.transfer(ILI9341_SLPOUT); - digitalWrite(_dc, 1); -#endif + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); digitalWrite(_cs, 1); SPI.endTransaction(); - - setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); } + + + /*********************************************************************************************** DMA functions ***********************************************************************************************/ diff --git a/MCUME_teensy/teensyvectrex/tft_t_dma.h b/MCUME_teensy/teensyvectrex/tft_t_dma.h index 4f83191..bf3b3f5 100644 --- a/MCUME_teensy/teensyvectrex/tft_t_dma.h +++ b/MCUME_teensy/teensyvectrex/tft_t_dma.h @@ -21,18 +21,15 @@ #define B16(rgb) ((rgb<<3)&0xf8) -#define TFT_HEIGHT 240 - -#ifdef ILI9341 -#define TFT_WIDTH 256 -#define TFT_REALWIDTH 320 -#define TFT_REALHEIGHT 240 -#endif -#ifdef ST7789 -#define TFT_WIDTH 240 +#ifdef LOHRES +#define TFT_WIDTH 240 #define TFT_REALWIDTH 240 -#define TFT_REALHEIGHT 240 +#else +#define TFT_WIDTH 256 +#define TFT_REALWIDTH 320 #endif +#define TFT_HEIGHT 240 +#define TFT_REALHEIGHT 240 #define LINES_PER_BLOCK 64 #define NR_OF_BLOCK 4 diff --git a/MCUME_teensy/teensyvectrex/tft_t_dma_config.h b/MCUME_teensy/teensyvectrex/tft_t_dma_config.h index 7ee0925..d8200a2 100644 --- a/MCUME_teensy/teensyvectrex/tft_t_dma_config.h +++ b/MCUME_teensy/teensyvectrex/tft_t_dma_config.h @@ -1,11 +1,7 @@ #include "platform_config.h" -#ifdef TEENSYBOY -#define ST7789 1 -#define ROTATE_SCREEN 1 -#else -#define ILI9341 1 -#endif +//#define ST7789 1 +//#define ILI9341 1 #define TFT_LINEARINT 1 #define LINEARINT_HACK 1 diff --git a/i2ckeyboard/pinout.txt b/i2ckeyboard/pinout.txt index 8039523..61c405f 100644 --- a/i2ckeyboard/pinout.txt +++ b/i2ckeyboard/pinout.txt @@ -2,17 +2,17 @@ pinout Atmega328p (2x14 pins) as I2C keyboard slave --------------------------------------------------- - 01 28 I2C SCL - 02 27 I2C SDA - 03 26 A3 COL3 OUT (kbd row0) - 04 24 A2 COL2 OUT (kbd row1) + RESET 01 28 I2C SCL + 02 x 27 I2C SDA + 03 x 26 A3 COL3 OUT (kbd row0) + 04 x 24 A2 COL2 OUT (kbd row1) COL4 OUT (kbd row4)05 25 A1 COL1 OUT (kbd row2) -9 ROW9 IN (kbd col9) 06 23 A0 COL0 OUT (kbd row3) - V3.3v 07 22 +9 ROW9 IN (kbd col9) 06 x 23 A0 COL0 OUT (kbd row3) + V3.3v 07 22 GND GND 08 21 09 20 10 19 4 ROW4 IN (kbd col4) -8 ROW8 IN (kbd col8) 11 18 3 ROW3 IN (kbd col3) -7 ROW7 IN (kbd col7) 12 17 0 ROW0 IN (kbd col0) -6 ROW6 IN (kbd col6) 13 16 1 ROW1 IN (kbd col1) -5 ROW5 IN (kbd col5) 14 15 2 ROW2 IN (kbd col2) +8 ROW8 IN (kbd col8) 11 x 18 3 ROW3 IN (kbd col3) +7 ROW7 IN (kbd col7) 12 x 17 0 ROW0 IN (kbd col0) +6 ROW6 IN (kbd col6) 13 x x 16 1 ROW1 IN (kbd col1) +5 ROW5 IN (kbd col5) 14 x x 15 2 ROW2 IN (kbd col2)