]> git.gag.com Git - hw/altusmetrum/commitdiff
Merge branch 'master' of ssh://git.gag.com/scm/git/hw/altusmetrum
authorBdale Garbee <bdale@gag.com>
Sat, 28 Sep 2013 05:52:38 +0000 (23:52 -0600)
committerBdale Garbee <bdale@gag.com>
Sat, 28 Sep 2013 05:52:38 +0000 (23:52 -0600)
Conflicts:
packages/Makefile

datasheets/holtek/ht12.pdf [new file with mode: 0644]
nickle/fix-quantity [new file with mode: 0644]
packages/Makefile
packages/bc4aa.5c [new file with mode: 0644]
packages/footprint.5c
packages/tfsoj-8.5c [new file with mode: 0644]
packages/ufqfpn48.5c
packages/ufqfpn48.fp [deleted file]
scheme/gnet-partslist-bom.scm
symbols/ftdi/ft232r-qfn.sym [new file with mode: 0644]

diff --git a/datasheets/holtek/ht12.pdf b/datasheets/holtek/ht12.pdf
new file mode 100644 (file)
index 0000000..4ceda3b
Binary files /dev/null and b/datasheets/holtek/ht12.pdf differ
diff --git a/nickle/fix-quantity b/nickle/fix-quantity
new file mode 100644 (file)
index 0000000..3fa31ae
--- /dev/null
@@ -0,0 +1,49 @@
+#!/usr/bin/nickle
+
+string[] read_line(file f) {
+       string line = File::fgets(f);
+
+       return String::parse_csv(line);
+}
+
+void
+print_line(file f, string[] bits) {
+       for (int i = 0; i < dim(bits); i++) {
+               string end = i == dim(bits) - 1 ? "\n" : ",";
+               printf ("%s%s", bits[i], end);
+       }
+}
+
+typedef struct {
+       string  pattern;
+       int     count;
+} fix_t;
+
+fix_t[] fixes = {
+       { .pattern = "RESISTOR", .count = 250 },
+       { .pattern = "CAPACITOR", .count = 100 },
+       { .pattern = "INDUCTOR", .count = 100 },
+       { .pattern = "LED", .count = 100 },
+};
+
+string[]
+fix_em(string[] elts) {
+       for (int f = 0; f < dim(fixes); f++) {
+               if (String::index(elts[2], fixes[f].pattern) >= 0) {
+                       elts[0] = sprintf ("%d", fixes[f].count);
+                       break;
+               }
+       }
+       return elts;
+}
+
+void
+main() {
+       while (!File::end(stdin)) {
+               string[] elts = read_line(stdin);
+               elts = fix_em(elts);
+               print_line(stdout, elts);
+       }
+}
+
+main();
index c5b283ddaa1bee1468b3b04c7fa22b48ecac3c6e..746d3138982913bc2930a06caac1e725c7411c20 100644 (file)
@@ -45,6 +45,12 @@ FOOTPRINTS= \
        saw.fp \
        cubesatshield.fp \
        linear-s8.fp
+       ufqfpn48.fp \
+       saw.fp \
+       tfsoj-8.fp \
+       bc4aa.fp \
+       cubesatshield.fp \
+       linear-s8.fp
 
 .5c.fp:
        nickle $*.5c > $@
diff --git a/packages/bc4aa.5c b/packages/bc4aa.5c
new file mode 100644 (file)
index 0000000..d2d721e
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright © 2013 Keith Packard <keithp@keithp.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+load "footprint.5c"
+import Footprint;
+
+width = 57.2;
+
+hole_dist = 55;
+hole_diameter = 2.9;
+case_pad = 3;
+
+pin_from_hole_y = 8.1 - 3.3;
+pin_sep = 16.60;
+pin_diameter = 1.17;
+pin_dx = 26.1;
+
+height = 61.3;
+
+element_start("bc4aa");
+
+rect (-width/2, -height/2, width, height);
+
+/* mounting holes */
+pin_mm(0, hole_dist/2, hole_diameter, 0.35, "mounting", "0");
+pin_mm(0, -hole_dist/2, hole_diameter, 0.35, "mounting", "0");
+
+pin_mm_options(pin_dx, hole_dist/2 - pin_from_hole_y, pin_diameter, 0.5, "1", "1", "square");
+pin_mm(pin_dx, hole_dist/2 - pin_from_hole_y - pin_sep, pin_diameter, 0.5, "2", "2");
+
+element_end();
index 0cc39b3ffa04ce9d48036d19ef855c4338887428..0a080f3fa78bc98f9b0e7daaa9b0c8c42ef5938c 100644 (file)
@@ -115,7 +115,7 @@ namespace Footprint {
                        y2 = center_y + (height - width) / 2;
                }
 
-               real mask = thickness + process_clearance / 2;
+               real mask = thickness + clearance / 2;
 
                printf ("    Pad[");
                printf (" %6d %6d %6d %6d",
diff --git a/packages/tfsoj-8.5c b/packages/tfsoj-8.5c
new file mode 100644 (file)
index 0000000..c15764f
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Copyright © 2012 Keith Packard <keithp@keithp.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+load "footprint.5c"
+import Footprint;
+
+real pad_width = 0.25;
+real pad_height = 0.50;
+real pad_spacing = 0.5;
+
+real pad_y_off = 2.1 / 2 - pad_height/2;
+
+real package_width = 2;
+real package_height = 1.75;
+
+real num_pad = 4;      /* per side */
+
+element_start("tfsoj-8");
+
+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 (pad = 0; pad < num_pad; pad++) {
+       /* left side (1-4) */
+
+       pad_mm(pad_off(pad),
+              pad_y_off,
+              pad_width,
+              pad_height,
+              sprintf("%d", pad + 1),
+              sprintf("%d", pad + 1));
+       
+       /* right side (5-8) */
+
+       pad_mm(-pad_off(pad),
+              -pad_y_off,
+              pad_width,
+              pad_height,
+              sprintf("%d", pad + 5),
+              sprintf("%d", pad + 5));
+       
+}
+
+element_end();
index ac1f0497b841697bbbd8d2a0cb5433d52ee11f7a..27eac42544df562290ac22071b624d9fe29e59c8 100644 (file)
@@ -21,7 +21,7 @@ import Footprint;
 real pad_width = 0.55;
 real pad_height = 0.30;
 real pad_spacing = 0.50;
-real pad_clearance = 10 / 1000 * 25.4; 
+real pad_clearance = 12 / 1000 * 25.4; 
 
 real pad_x_off = 6.20 / 2;
 real pad_y_off = 6.20 / 2;
@@ -115,29 +115,29 @@ bool via_block(int x, int y) {
 }
 
 real via_hole = 15/1000 * 25.4;                /* 15 mil drill */
-real via_copper = 3.5/1000 * 25.4;     /* 7 mil anulus */
+real via_copper = 7/1000 * 25.4;       /* 7 mil anulus */
 
 for (int pad_y = 0; pad_y < pad_blocks; pad_y++) {
        for (int pad_x = 0; pad_x < pad_blocks; pad_x++)
                if (via_block(pad_x, pad_y)) {
                        pin_mm_clear_mask(block_x(pad_x), block_y(pad_y),
-                                         via_hole, via_copper * 2, pad_clearance, 0,
+                                         via_hole, via_hole + 2 * via_copper, pad_clearance, 0,
                                          "GND", "GND");
                        pad_mm_clear_mask_options(block_x(pad_x), block_y(pad_y),
                                                  block_width, block_height,
                                                  pad_clearance, 0,
-                                                 "GND", "GND","nopaste");
+                                                 "GND", "GND","square,nopaste");
                } else {
                        /* full square of metal */
                        pad_mm_clear_options(block_x(pad_x), block_y(pad_y),
                                             block_width, block_height,
                                             0,
-                                            "GND", "GND","nopaste");
+                                            "GND", "GND","square,nopaste");
                        /* 1/4 full of solder paste */
                        pad_mm_clear_options(block_x(pad_x), block_y(pad_y),
                                             block_width/2, block_height/2,
                                             0,
-                                            "GND", "GND","");
+                                            "GND", "GND","square");
                }
 }
 
diff --git a/packages/ufqfpn48.fp b/packages/ufqfpn48.fp
deleted file mode 100644 (file)
index f88b704..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-# author: Keith Packard
-# email: keithp@keithp.com
-# dist-license: GPL 2
-# use-license: unlimited
-Element ["" "ufqfpn-48" "" "" 0 0 0 0 0 100 ""]
-(
-    ElementLine[ -13780 -13780 -12205 -13780 1000]
-    ElementLine[ -13780 -13780 -13780 -12205 1000]
-    ElementLine[  13780 -13780  12205 -13780 1000]
-    ElementLine[  13780 -13780  13780 -12205 1000]
-    ElementLine[ -13780  13780 -12205  13780 1000]
-    ElementLine[ -13780  13780 -13780  12205 1000]
-    ElementLine[  13780  13780  12205  13780 1000]
-    ElementLine[  13780  13780  13780  12205 1000]
-    ElementLine[ -12598 -12598 -12598 -12598 1000]
-    Pad[ -13780 -10827 -12795 -10827   1181   1000   1681 "1" "1" "square"]
-    Pad[ -10827  12795 -10827  13780   1181   1000   1681 "13" "13" "square"]
-    Pad[  12795  10827  13780  10827   1181   1000   1681 "25" "25" "square"]
-    Pad[  10827 -13780  10827 -12795   1181   1000   1681 "37" "37" "square"]
-    Pad[ -13780  -8858 -12795  -8858   1181   1000   1681 "2" "2" "square"]
-    Pad[  -8858  12795  -8858  13780   1181   1000   1681 "14" "14" "square"]
-    Pad[  12795   8858  13780   8858   1181   1000   1681 "26" "26" "square"]
-    Pad[   8858 -13780   8858 -12795   1181   1000   1681 "38" "38" "square"]
-    Pad[ -13780  -6890 -12795  -6890   1181   1000   1681 "3" "3" "square"]
-    Pad[  -6890  12795  -6890  13780   1181   1000   1681 "15" "15" "square"]
-    Pad[  12795   6890  13780   6890   1181   1000   1681 "27" "27" "square"]
-    Pad[   6890 -13780   6890 -12795   1181   1000   1681 "39" "39" "square"]
-    Pad[ -13780  -4921 -12795  -4921   1181   1000   1681 "4" "4" "square"]
-    Pad[  -4921  12795  -4921  13780   1181   1000   1681 "16" "16" "square"]
-    Pad[  12795   4921  13780   4921   1181   1000   1681 "28" "28" "square"]
-    Pad[   4921 -13780   4921 -12795   1181   1000   1681 "40" "40" "square"]
-    Pad[ -13780  -2953 -12795  -2953   1181   1000   1681 "5" "5" "square"]
-    Pad[  -2953  12795  -2953  13780   1181   1000   1681 "17" "17" "square"]
-    Pad[  12795   2953  13780   2953   1181   1000   1681 "29" "29" "square"]
-    Pad[   2953 -13780   2953 -12795   1181   1000   1681 "41" "41" "square"]
-    Pad[ -13780   -984 -12795   -984   1181   1000   1681 "6" "6" "square"]
-    Pad[   -984  12795   -984  13780   1181   1000   1681 "18" "18" "square"]
-    Pad[  12795    984  13780    984   1181   1000   1681 "30" "30" "square"]
-    Pad[    984 -13780    984 -12795   1181   1000   1681 "42" "42" "square"]
-    Pad[ -13780    984 -12795    984   1181   1000   1681 "7" "7" "square"]
-    Pad[    984  12795    984  13780   1181   1000   1681 "19" "19" "square"]
-    Pad[  12795   -984  13780   -984   1181   1000   1681 "31" "31" "square"]
-    Pad[   -984 -13780   -984 -12795   1181   1000   1681 "43" "43" "square"]
-    Pad[ -13780   2953 -12795   2953   1181   1000   1681 "8" "8" "square"]
-    Pad[   2953  12795   2953  13780   1181   1000   1681 "20" "20" "square"]
-    Pad[  12795  -2953  13780  -2953   1181   1000   1681 "32" "32" "square"]
-    Pad[  -2953 -13780  -2953 -12795   1181   1000   1681 "44" "44" "square"]
-    Pad[ -13780   4921 -12795   4921   1181   1000   1681 "9" "9" "square"]
-    Pad[   4921  12795   4921  13780   1181   1000   1681 "21" "21" "square"]
-    Pad[  12795  -4921  13780  -4921   1181   1000   1681 "33" "33" "square"]
-    Pad[  -4921 -13780  -4921 -12795   1181   1000   1681 "45" "45" "square"]
-    Pad[ -13780   6890 -12795   6890   1181   1000   1681 "10" "10" "square"]
-    Pad[   6890  12795   6890  13780   1181   1000   1681 "22" "22" "square"]
-    Pad[  12795  -6890  13780  -6890   1181   1000   1681 "34" "34" "square"]
-    Pad[  -6890 -13780  -6890 -12795   1181   1000   1681 "46" "46" "square"]
-    Pad[ -13780   8858 -12795   8858   1181   1000   1681 "11" "11" "square"]
-    Pad[   8858  12795   8858  13780   1181   1000   1681 "23" "23" "square"]
-    Pad[  12795  -8858  13780  -8858   1181   1000   1681 "35" "35" "square"]
-    Pad[  -8858 -13780  -8858 -12795   1181   1000   1681 "47" "47" "square"]
-    Pad[ -13780  10827 -12795  10827   1181   1000   1681 "12" "12" "square"]
-    Pad[  10827  12795  10827  13780   1181   1000   1681 "24" "24" "square"]
-    Pad[  12795 -10827  13780 -10827   1181   1000   1681 "36" "36" "square"]
-    Pad[ -10827 -13780 -10827 -12795   1181   1000   1681 "48" "48" "square"]
-    Pin[  -7349  -7349   2900   1000      0   1500 "GND" "GND" ""]
-    Pad[  -7349  -7349  -7349  -7349   7349   1000      0 "GND" "GND" "square,nopaste"]
-    Pad[      0  -7349      0  -7349   7349      0   7349 "GND" "GND" "square,nopaste"]
-    Pad[      0  -7349      0  -7349   3675      0   3675 "GND" "GND" "square"]
-    Pin[   7349  -7349   2900   1000      0   1500 "GND" "GND" ""]
-    Pad[   7349  -7349   7349  -7349   7349   1000      0 "GND" "GND" "square,nopaste"]
-    Pad[  -7349      0  -7349      0   7349      0   7349 "GND" "GND" "square,nopaste"]
-    Pad[  -7349      0  -7349      0   3675      0   3675 "GND" "GND" "square"]
-    Pad[      0      0      0      0   7349      0   7349 "GND" "GND" "square,nopaste"]
-    Pad[      0      0      0      0   3675      0   3675 "GND" "GND" "square"]
-    Pad[   7349      0   7349      0   7349      0   7349 "GND" "GND" "square,nopaste"]
-    Pad[   7349      0   7349      0   3675      0   3675 "GND" "GND" "square"]
-    Pin[  -7349   7349   2900   1000      0   1500 "GND" "GND" ""]
-    Pad[  -7349   7349  -7349   7349   7349   1000      0 "GND" "GND" "square,nopaste"]
-    Pad[      0   7349      0   7349   7349      0   7349 "GND" "GND" "square,nopaste"]
-    Pad[      0   7349      0   7349   3675      0   3675 "GND" "GND" "square"]
-    Pin[   7349   7349   2900   1000      0   1500 "GND" "GND" ""]
-    Pad[   7349   7349   7349   7349   7349   1000      0 "GND" "GND" "square,nopaste"]
-)
index d72c9e063c79e181316789278d2fbb8bf242379d..39ab5e622596dc6db056ef2cadc49dd7e7b0fd85 100644 (file)
 
 (define get-vendor
    (lambda (package)
-      (gnetlist:get-package-attribute package "vendor")))
+      (string-trim-both (gnetlist:get-package-attribute package "vendor"))))
 
 (define get-loadstatus
    (lambda (package)
-      (gnetlist:get-package-attribute package "loadstatus")))
+      (string-trim-both (gnetlist:get-package-attribute package "loadstatus"))))
   
 (define get-vendor-part-number
    (lambda (package)
-      (gnetlist:get-package-attribute package "vendor_part_number")))
+      (string-trim-both (gnetlist:get-package-attribute package "vendor_part_number"))))
 
 (define get-footprint
    (lambda (package)
-      (gnetlist:get-package-attribute package "footprint")))
+      (string-trim-both (gnetlist:get-package-attribute package "footprint"))))
 
 (define (get-parts-table-bom packages vendor)
   (if (null? packages)
            (get-parts-table-bom (cdr packages) vendor)))))
 
 (define (get-opt-helper option list)
-  (if list
+  (if (not (null? list))
       (let ((param (car list)))
-       (if (string-prefix? option (car param))
+       (if (and param (string-prefix? option (car param)))
            (string-drop (car param) (string-length option))
            (get-opt-helper option (cdr list))))
-      nil)
+      #f)
   )
 
 (define (get-opt option default)
 (define (get-vendor-match)
   (get-opt "vendor" "digikey"))
 
+(define (set-quantity)
+  (let ((quant (get-opt "quantity" "1")))
+    (set! multiplier (string->number quant))))
+
 (define (partslist-bom output-filename)
   (let ((port (open-output-file output-filename))
        (parts-table (marge-sort-with-multikey (get-parts-table-bom packages (get-vendor-match)) '(1 2 3 0))))
     (set! parts-table (count-same-parts parts-table))
+    (set-quantity)
     (partslist-bom:write-partslist parts-table port)
     (close-output-port port)))
diff --git a/symbols/ftdi/ft232r-qfn.sym b/symbols/ftdi/ft232r-qfn.sym
new file mode 100644 (file)
index 0000000..bcf1256
--- /dev/null
@@ -0,0 +1,296 @@
+v 20121123 2
+B 400 400 3500 6200 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
+P 4400 6400 3900 6400 1 0 0
+{
+T 4400 6400 5 10 0 0 0 0 1
+pintype=out
+T 3845 6395 5 10 1 1 0 6 1
+pinlabel=TXD
+T 3995 6445 5 10 1 1 0 0 1
+pinnumber=30
+T 4400 6400 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 5900 3900 5900 1 0 0
+{
+T 4400 5900 5 10 0 0 0 0 1
+pintype=in
+T 3845 5895 5 10 1 1 0 6 1
+pinlabel=RXD
+T 3995 5945 5 10 1 1 0 0 1
+pinnumber=2
+T 4400 5900 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 5400 3900 5400 1 0 0
+{
+T 4400 5400 5 10 0 0 0 0 1
+pintype=io
+T 3845 5395 5 10 1 1 0 6 1
+pinlabel=RTS
+T 3995 5445 5 10 1 1 0 0 1
+pinnumber=32
+T 4400 5400 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 4900 3900 4900 1 0 0
+{
+T 4400 4900 5 10 0 0 0 0 1
+pintype=io
+T 3845 4895 5 10 1 1 0 6 1
+pinlabel=CTS
+T 3995 4945 5 10 1 1 0 0 1
+pinnumber=8
+T 4400 4900 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 2400 3900 2400 1 0 0
+{
+T 4400 2400 5 10 0 0 0 0 1
+pintype=io
+T 3845 2395 5 10 1 1 0 6 1
+pinlabel=CBUS0
+T 3995 2445 5 10 1 1 0 0 1
+pinnumber=22
+T 4400 2400 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 1900 3900 1900 1 0 0
+{
+T 4400 1900 5 10 0 0 0 0 1
+pintype=io
+T 3845 1895 5 10 1 1 0 6 1
+pinlabel=CBUS1
+T 3995 1945 5 10 1 1 0 0 1
+pinnumber=21
+T 4400 1900 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 1400 3900 1400 1 0 0
+{
+T 4400 1400 5 10 0 0 0 0 1
+pintype=io
+T 3845 1395 5 10 1 1 0 6 1
+pinlabel=CBUS2
+T 3995 1445 5 10 1 1 0 0 1
+pinnumber=10
+T 4400 1400 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 900 3900 900 1 0 0
+{
+T 4400 900 5 10 0 0 0 0 1
+pintype=io
+T 3845 895 5 10 1 1 0 6 1
+pinlabel=CBUS3
+T 3995 945 5 10 1 1 0 0 1
+pinnumber=11
+T 4400 900 5 10 0 0 0 0 1
+pinseq=0
+}
+P 1900 0 1900 400 1 0 0
+{
+T 1900 0 5 10 0 0 0 0 1
+pintype=pwr
+T 1900 505 5 10 1 1 90 0 1
+pinlabel=GND
+T 1850 305 5 10 1 1 90 6 1
+pinnumber=17
+T 1900 0 5 10 0 0 0 0 1
+pinseq=0
+}
+P 1400 0 1400 400 1 0 0
+{
+T 1400 0 5 10 0 0 0 0 1
+pintype=pwr
+T 1400 505 5 10 1 1 90 0 1
+pinlabel=GND
+T 1350 305 5 10 1 1 90 6 1
+pinnumber=4
+T 1400 0 5 10 0 0 0 0 1
+pinseq=0
+}
+P 0 1400 400 1400 1 0 0
+{
+T 0 1400 5 10 0 0 0 0 1
+pintype=pwr
+T 455 1395 5 10 1 1 0 0 1
+pinlabel=3V3OUT
+T 305 1445 5 10 1 1 0 6 1
+pinnumber=16
+T 0 1400 5 10 0 0 0 0 1
+pinseq=0
+}
+P 0 5300 400 5300 1 0 0
+{
+T 0 5300 5 10 0 0 0 0 1
+pintype=io
+T 455 5295 5 10 1 1 0 0 1
+pinlabel=USBD-
+T 305 5345 5 10 1 1 0 6 1
+pinnumber=15
+T 0 5300 5 10 0 0 0 0 1
+pinseq=0
+}
+P 0 4800 400 4800 1 0 0
+{
+T 0 4800 5 10 0 0 0 0 1
+pintype=io
+T 455 4795 5 10 1 1 0 0 1
+pinlabel=USBD+
+T 305 4845 5 10 1 1 0 6 1
+pinnumber=14
+T 0 4800 5 10 0 0 0 0 1
+pinseq=0
+}
+P 0 2900 400 2900 1 0 0
+{
+T 0 2900 5 10 0 0 0 0 1
+pintype=io
+T 455 2895 5 10 1 1 0 0 1
+pinlabel=RESET
+T 305 2945 5 10 1 1 0 6 1
+pinnumber=18
+T 0 2900 5 10 0 0 0 0 1
+pinseq=0
+}
+T 395 6695 8 10 1 1 0 0 1
+refdes=U?
+T 16495 54595 8 10 0 1 0 0 1
+device=IC
+T 1695 4795 8 10 1 1 0 0 1
+value=FT232RQ
+T 18195 49795 8 10 0 1 0 0 1
+footprint=ssop-16
+P 4400 4400 3900 4400 1 0 0
+{
+T 4400 4400 5 10 0 0 0 0 1
+pintype=unknown
+T 3845 4395 5 10 1 1 0 6 1
+pinlabel=DTR
+T 3995 4445 5 10 1 1 0 0 1
+pinnumber=31
+T 4400 4400 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 3900 3900 3900 1 0 0
+{
+T 4400 3900 5 10 0 0 0 0 1
+pintype=unknown
+T 3845 3895 5 10 1 1 0 6 1
+pinlabel=DSR
+T 3995 3945 5 10 1 1 0 0 1
+pinnumber=6
+T 4400 3900 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 3400 3900 3400 1 0 0
+{
+T 4400 3400 5 10 0 0 0 0 1
+pintype=unknown
+T 3845 3395 5 10 1 1 0 6 1
+pinlabel=DCD
+T 3995 3445 5 10 1 1 0 0 1
+pinnumber=7
+T 4400 3400 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 2900 3900 2900 1 0 0
+{
+T 4400 2900 5 10 0 0 0 0 1
+pintype=unknown
+T 3845 2895 5 10 1 1 0 6 1
+pinlabel=RI
+T 3995 2945 5 10 1 1 0 0 1
+pinnumber=3
+T 4400 2900 5 10 0 0 0 0 1
+pinseq=0
+}
+P 2400 0 2400 400 1 0 0
+{
+T 2400 0 5 10 0 0 0 0 1
+pintype=unknown
+T 2400 455 5 10 1 1 90 0 1
+pinlabel=GND
+T 2350 305 5 10 1 1 90 6 1
+pinnumber=20
+T 2400 0 5 10 0 0 0 0 1
+pinseq=0
+}
+P 2900 0 2900 400 1 0 0
+{
+T 2900 0 5 10 0 0 0 0 1
+pintype=unknown
+T 2900 455 5 10 1 1 90 0 1
+pinlabel=TEST
+T 2850 305 5 10 1 1 90 6 1
+pinnumber=26
+T 2900 0 5 10 0 0 0 0 1
+pinseq=0
+}
+P 900 0 900 400 1 0 0
+{
+T 900 0 5 10 0 0 0 0 1
+pintype=unknown
+T 900 455 5 10 1 1 90 0 1
+pinlabel=AGND
+T 850 305 5 10 1 1 90 6 1
+pinnumber=24
+T 900 0 5 10 0 0 0 0 1
+pinseq=0
+}
+P 0 2400 400 2400 1 0 0
+{
+T 0 2400 5 10 0 0 0 0 1
+pintype=unknown
+T 455 2395 5 10 1 1 0 0 1
+pinlabel=OSCI
+T 305 2445 5 10 1 1 0 6 1
+pinnumber=27
+T 0 2400 5 10 0 0 0 0 1
+pinseq=0
+}
+P 0 1900 400 1900 1 0 0
+{
+T 0 1900 5 10 0 0 0 0 1
+pintype=unknown
+T 455 1895 5 10 1 1 0 0 1
+pinlabel=OSCO
+T 305 1945 5 10 1 1 0 6 1
+pinnumber=28
+T 0 1900 5 10 0 0 0 0 1
+pinseq=0
+}
+P 0 5800 400 5800 1 0 0
+{
+T 0 5800 5 10 0 0 0 0 1
+pintype=unknown
+T 455 5795 5 10 1 1 0 0 1
+pinlabel=VCC
+T 305 5845 5 10 1 1 0 6 1
+pinnumber=19
+T 0 5800 5 10 0 0 0 0 1
+pinseq=0
+}
+P 0 6300 400 6300 1 0 0
+{
+T 0 6300 5 10 0 0 0 0 1
+pintype=unknown
+T 455 6295 5 10 1 1 0 0 1
+pinlabel=VCCIO
+T 305 6345 5 10 1 1 0 6 1
+pinnumber=1
+T 0 6300 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 500 3900 500 1 0 0
+{
+T 4400 500 5 10 0 0 0 0 1
+pintype=unknown
+T 3845 495 5 10 1 1 0 6 1
+pinlabel=CBUS4
+T 3995 545 5 10 1 1 0 0 1
+pinnumber=9
+T 4400 500 5 10 0 0 0 0 1
+pinseq=0
+}