From 5e57da517eed20a77e9fc1c2ba8f41e5b6b93a04 Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Wed, 24 Jan 2024 23:12:34 -0700 Subject: [PATCH] copy in footprint for ATmega32U4 from Bdale's old tree --- packages/Makefile | 1 + packages/tqfp44.py | 105 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100755 packages/tqfp44.py diff --git a/packages/Makefile b/packages/Makefile index a4d5c3b..5c9fad2 100644 --- a/packages/Makefile +++ b/packages/Makefile @@ -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 index 0000000..f7e5bda --- /dev/null +++ b/packages/tqfp44.py @@ -0,0 +1,105 @@ +#!/usr/bin/python3 +# Copyright 2008,2024 by Bdale Garbee . 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( ")") -- 2.30.2