From ccd17715871444b41d1cc6112d3359134ac4b9fc Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Sun, 6 Aug 2017 18:26:29 -0700 Subject: [PATCH] add ssop generator and make ssop-28 for CAN chip used by AMSAT LTI --- packages/Makefile | 4 +++ packages/ssop.5c | 78 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 packages/ssop.5c diff --git a/packages/Makefile b/packages/Makefile index e557c83..c583e31 100644 --- a/packages/Makefile +++ b/packages/Makefile @@ -11,6 +11,7 @@ DIRS= \ te-connectivity SOIC= \ + ssop-28.fp \ soic-16.fp \ soic-24.fp @@ -139,6 +140,9 @@ clean: $(CLEANDIRS) .gitignore: Makefile for i in $@ $(FOOTPRINTS); do echo $$i; done > $@ +ssop-28.fp: ssop.5c + nickle ssop.5c 28 > $@ + soic-16.fp: soic.5c nickle soic.5c 16 > $@ diff --git a/packages/ssop.5c b/packages/ssop.5c new file mode 100644 index 0000000..6ad0559 --- /dev/null +++ b/packages/ssop.5c @@ -0,0 +1,78 @@ +/* + * Copyright © 2017 Bdale Garbee , GPLv3+ + */ + +load "footprint.5c" +import Footprint; + +int total_pad = 28; +real center_gap = 7.20 - 1.75; + +if (dim(argv) > 1) + total_pad = string_to_integer(argv[1]); +if (dim(argv) > 2) + center_gap = string_to_real(argv[2]); + +real pad_width = 0.45; + +real pad_height = 1.75; + +real pad_spacing = 0.65; + +int num_pad = total_pad / 2; /* per side */ + +string name = sprintf ("SSOP-%d", total_pad); + +real package_width = (num_pad - 1) * pad_spacing + 1.75; + +real package_height = center_gap - 0.15; + +real pad_y_off = center_gap / 2 + pad_height / 2; + +element_start(name); + +real pad_off(int n) { + return pad_spacing * (n - (num_pad - 1) / 2); +} + +real corner(int dx, int dy) { + real x = dx * package_width / 2; + real y = dy * package_height / 2; + real len = 0.4; + + line(x, y, x - dx * len, y); + line(x, y, x, y - dy * len); +} + +corner(-1, -1); +corner(1, -1); +corner(-1, 1); +corner(1, 1); + +real dot_off = -.3; + +line(-package_width/2 + dot_off, package_height/2 - dot_off, + -package_width/2 + dot_off, package_height/2 - dot_off); + +for (int pad = 0; pad < num_pad; pad++) { + /* bottom (1-num_pad) */ + + pad_mm(pad_off(pad), + pad_y_off, + pad_width, + pad_height, + sprintf("%d", pad + 1), + sprintf("%d", pad + 1)); + + /* top side (total_pad - num_pad+1) */ + + pad_mm(pad_off(pad), + -pad_y_off, + pad_width, + pad_height, + sprintf("%d", total_pad - pad), + sprintf("%d", total_pad - pad)); + +} + +element_end(); -- 2.39.5