copy in footprint for ATmega32U4 from Bdale's old tree
authorBdale Garbee <bdale@gag.com>
Thu, 25 Jan 2024 06:12:34 +0000 (23:12 -0700)
committerBdale Garbee <bdale@gag.com>
Thu, 25 Jan 2024 06:12:34 +0000 (23:12 -0700)
packages/Makefile
packages/tqfp44.py [new file with mode: 0755]

index a4d5c3b74114c9df6898f175c487bb545448fdc9..5c9fad2ad35f1ec62faf2459e600aabb2dbfb7bc 100644 (file)
@@ -38,6 +38,7 @@ FOOTPRINTS= \
        1212-8.fp \
        AN3111.fp \
        lqfp32.fp \
+       tqfp44.fp \
        lqfp48.fp \
        lqfp64.fp \
        lqfp80.fp \
diff --git a/packages/tqfp44.py b/packages/tqfp44.py
new file mode 100755 (executable)
index 0000000..f7e5bda
--- /dev/null
@@ -0,0 +1,105 @@
+#!/usr/bin/python3
+# Copyright 2008,2024 by Bdale Garbee <bdale@gag.com>.  GPLv2
+#
+# Program to emit PCB footprint for TQFP 44 sized for Atmel ATmega32U4
+#
+
+# dimensions in mm from an ST TQFP44 package data sheet 
+PinWidth = 0.54
+PinHeight = 0.8
+PinResist = PinWidth + 0.16
+PinSpacing = 0.8
+BodySize = 10.0
+Overall = 12.6
+
+import sys
+
+# we're going to use the 1/100 of a mil fundamental unit form
+def mm2mils100( mm ):
+       return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
+
+print( '# author: Bdale Garbee')
+print( '# email: bdale@gag.com')
+print( '# dist-license: GPL 2')
+print( '# use-license: unlimited')
+
+print( 'Element[0x0 "TQFP44" "" "" 0 0 0 0 0 100 0x0]')
+print( "(")
+
+# pins
+for pin in range (1,12):
+    print( '   Pad[',\
+       mm2mils100((pin - 6) * PinSpacing), \
+       mm2mils100(-Overall/2 + PinWidth/2), \
+       mm2mils100((pin - 6) * PinSpacing), \
+       mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \
+       mm2mils100(PinWidth), \
+       mm2mils100(PinSpacing - PinWidth), \
+       mm2mils100(PinResist), \
+       '"pin%i"' % (12-pin), '"%i"' % (12-pin), '0x0100]')
+
+    print( '   Pad[',\
+       mm2mils100((pin - 6) * PinSpacing), \
+       mm2mils100(+Overall/2 - PinHeight + PinWidth/2), \
+       mm2mils100((pin - 6) * PinSpacing), \
+       mm2mils100(+Overall/2 - PinWidth/2), \
+       mm2mils100(PinWidth), \
+       mm2mils100(PinSpacing - PinWidth), \
+       mm2mils100(PinResist), \
+       '"pin%i"' % (22+pin), '"%i"' % (22+pin), '0x0100]')
+
+    print( '   Pad[',\
+       mm2mils100(Overall/2 - PinHeight + PinWidth/2), \
+       mm2mils100((pin - 6) * PinSpacing), \
+       mm2mils100(Overall/2 - PinWidth/2), \
+       mm2mils100((pin - 6) * PinSpacing), \
+       mm2mils100(PinWidth), \
+       mm2mils100(PinSpacing - PinWidth), \
+       mm2mils100(PinResist), \
+       '"pin%i"' % (45-pin), '"%i"' % (45-pin), '0x0100]')
+
+    print( '   Pad[',\
+       mm2mils100(-Overall/2 + PinWidth/2), \
+       mm2mils100((pin - 6) * PinSpacing), \
+       mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \
+       mm2mils100((pin - 6) * PinSpacing), \
+       mm2mils100(PinWidth), \
+       mm2mils100(PinSpacing - PinWidth), \
+       mm2mils100(PinResist), \
+       '"pin%i"' % (11+pin), '"%i"' % (11+pin), '0x0100]')
+
+
+print( '   ElementLine[',\
+       mm2mils100(-BodySize/2), \
+       mm2mils100(-BodySize/2), \
+       mm2mils100(-BodySize/2), \
+       mm2mils100( BodySize/2), \
+       '1000 ]')
+
+print( '   ElementLine[',\
+       mm2mils100(-BodySize/2), \
+       mm2mils100( BodySize/2), \
+       mm2mils100( BodySize/2), \
+       mm2mils100( BodySize/2), \
+       '1000 ]')
+
+print( '   ElementLine[',\
+       mm2mils100( BodySize/2), \
+       mm2mils100( BodySize/2), \
+       mm2mils100( BodySize/2), \
+       mm2mils100(-BodySize/2), \
+       '1000 ]')
+
+print( '   ElementLine[',\
+       mm2mils100( BodySize/2), \
+       mm2mils100(-BodySize/2), \
+       mm2mils100(-BodySize/2), \
+       mm2mils100(-BodySize/2), \
+       '1000 ]')
+
+
+print( '   ElementArc[',\
+       mm2mils100(  (BodySize/2)+0.3), \
+       mm2mils100(-((BodySize/2)+0.3)), \
+       '500 500 0 360 1000 ]')
+print( ")")