← Commit history
README.md+50−44
@@ -8,26 +8,26 @@ AT89C2051-24PU from Microchip Tech, in a DIP-20. Pinout and pin descriptions ext  | Pin | Name | Type | Function | |---|---|---|---|-| 1 | RST/VPP | input | Reset input: holding RST high for two machine cycles while the oscillator runs resets the device, and it is raised to 12V to enable Flash programming. |-| 2 | P3.0 (RXD) | bidirectional | Port 3 bidirectional I/O pin with internal pull-up, alternate function RXD serial input port. |-| 3 | P3.1 (TXD) | bidirectional | Port 3 bidirectional I/O pin with internal pull-up, alternate function TXD serial output port. |+| 1 | RST/VPP | input | Reset input: holding RST high for two machine cycles while the oscillator runs resets the device, and this pin receives the 12 V programming enable voltage (VPP) during Flash programming. |+| 2 | P3.0 (RXD) | bidirectional | Port 3 bidirectional I/O with internal pull-up; alternate function RXD serial input port. |+| 3 | P3.1 (TXD) | bidirectional | Port 3 bidirectional I/O with internal pull-up; alternate function TXD serial output port, also used as RDY/BSY output during programming. | | 4 | XTAL2 | output | Output from the inverting oscillator amplifier. | | 5 | XTAL1 | input | Input to the inverting oscillator amplifier and to the internal clock operating circuit. |-| 6 | P3.2 (INT0) | bidirectional | Port 3 bidirectional I/O pin with internal pull-up, alternate function INT0 external interrupt 0. |-| 7 | P3.3 (INT1) | bidirectional | Port 3 bidirectional I/O pin with internal pull-up, alternate function INT1 external interrupt 1. |-| 8 | P3.4 (T0) | bidirectional | Port 3 bidirectional I/O pin with internal pull-up, alternate function T0 timer 0 external input. |-| 9 | P3.5 (T1) | bidirectional | Port 3 bidirectional I/O pin with internal pull-up, alternate function T1 timer 1 external input. |+| 6 | P3.2 (INT0) | bidirectional | Port 3 bidirectional I/O with internal pull-up; alternate function INT0 external interrupt 0, also used as PROG during programming. |+| 7 | P3.3 (INT1) | bidirectional | Port 3 bidirectional I/O with internal pull-up; alternate function INT1 external interrupt 1. |+| 8 | P3.4 (T0) | bidirectional | Port 3 bidirectional I/O with internal pull-up; alternate function T0 timer 0 external input. |+| 9 | P3.5 (T1) | bidirectional | Port 3 bidirectional I/O with internal pull-up; alternate function T1 timer 1 external input. | | 10 | GND | power_in | Ground. |-| 11 | P3.7 | bidirectional | Port 3 bidirectional I/O pin with internal pull-up; Port 3 output buffers can sink 20 mA. |-| 12 | P1.0 (AIN0) | bidirectional | Port 1 I/O pin that requires an external pull-up and serves as the positive input AIN0 of the on-chip precision analog comparator. |-| 13 | P1.1 (AIN1) | bidirectional | Port 1 I/O pin that requires an external pull-up and serves as the negative input AIN1 of the on-chip precision analog comparator. |-| 14 | P1.2 | bidirectional | Port 1 bidirectional I/O pin with internal pull-up; Port 1 output buffers can sink 20 mA and drive LED displays directly. |-| 15 | P1.3 | bidirectional | Port 1 bidirectional I/O pin with internal pull-up; Port 1 output buffers can sink 20 mA and drive LED displays directly. |-| 16 | P1.4 | bidirectional | Port 1 bidirectional I/O pin with internal pull-up; Port 1 output buffers can sink 20 mA and drive LED displays directly. |-| 17 | P1.5 | bidirectional | Port 1 bidirectional I/O pin with internal pull-up; Port 1 output buffers can sink 20 mA and drive LED displays directly. |-| 18 | P1.6 | bidirectional | Port 1 bidirectional I/O pin with internal pull-up; Port 1 output buffers can sink 20 mA and drive LED displays directly. |-| 19 | P1.7 | bidirectional | Port 1 bidirectional I/O pin with internal pull-up; Port 1 output buffers can sink 20 mA and drive LED displays directly. |-| 20 | VCC | power_in | Supply voltage, 2.7V to 6.0V operating range for the AT89C2051-24PU at 4.0V to 6.0V. |+| 11 | P3.7 | bidirectional | Port 3 bidirectional I/O pin with internal pull-up. |+| 12 | P1.0 (AIN0) | bidirectional | Port 1 bidirectional I/O that requires an external pull-up; also the positive input (AIN0) of the on-chip analog comparator, and its output buffer can sink 20 mA. |+| 13 | P1.1 (AIN1) | bidirectional | Port 1 bidirectional I/O that requires an external pull-up; also the negative input (AIN1) of the on-chip analog comparator, and its output buffer can sink 20 mA. |+| 14 | P1.2 | bidirectional | Port 1 bidirectional I/O with internal pull-up; output buffer can sink 20 mA and drive LEDs directly. |+| 15 | P1.3 | bidirectional | Port 1 bidirectional I/O with internal pull-up; output buffer can sink 20 mA and drive LEDs directly. |+| 16 | P1.4 | bidirectional | Port 1 bidirectional I/O with internal pull-up; output buffer can sink 20 mA and drive LEDs directly. |+| 17 | P1.5 | bidirectional | Port 1 bidirectional I/O with internal pull-up; output buffer can sink 20 mA and drive LEDs directly. |+| 18 | P1.6 | bidirectional | Port 1 bidirectional I/O with internal pull-up; output buffer can sink 20 mA and drive LEDs directly. |+| 19 | P1.7 | bidirectional | Port 1 bidirectional I/O with internal pull-up; output buffer can sink 20 mA and drive LEDs directly. |+| 20 | VCC | power_in | Supply voltage; the AT89C2051-24PU is specified for 4.0 V to 6.0 V operation at up to 24 MHz. |  ## Key specifications @@ -44,49 +44,55 @@ Limits as printed in the datasheet (page.json `metadata.characteristics` carries  | Parameter | Symbol | Min | Typ | Max | Unit | Conditions | Page | |---|---|---|---|---|---|---|---|-| Operating Temperature |  | -55 |  | 125 | °C |  | 12 |-| Storage Temperature |  | -65 |  | 150 | °C |  | 12 |-| Voltage on Any Pin with Respect to Ground |  | -1 |  | 7 | V |  | 12 |-| Maximum Operating Voltage |  |  |  | 6.6 | V |  | 12 |-| DC Output Current |  |  |  | 25 | mA |  | 12 |-| Supply Voltage (24 MHz speed grade) | VCC | 4 |  | 6 | V | AT89C2051-24PU, 24 MHz, ordering information | 16 |-| Operating Temperature (Industrial) |  | -40 |  | 85 | °C | Industrial operation range | 16 |-| Maximum IOL per Port Pin | IOL |  |  | 20 | mA | Steady state, IOL externally limited | 12 |-| Maximum Total IOL for All Output Pins | IOL |  |  | 80 | mA | Steady state, IOL externally limited | 12 |-| Minimum VCC for Power-down | VCC | 2 |  |  | V | Power-down mode | 12 | | Input Low-voltage | VIL | -0.5 |  |  | V |  | 12 |-| Output High-voltage (Ports 1, 3) | VOH | 2.4 |  |  | V | IOH = -80 μA, VCC = 5V ± 10% | 12 |-| Logical 0 Input Current (Ports 1, 3) | IIL |  |  | -50 | µA | VIN = 0.45V | 12 |-| Logical 1 to 0 Transition Current (Ports 1, 3) | ITL |  |  | -750 | µA | VIN = 2V, VCC = 5V ± 10% | 12 |+| Output Low-voltage (Ports 1, 3) | VOL |  |  | 0.5 | V | IOL = 10 mA, VCC = 2.7V | 12 |+| Output High-voltage (Ports 1, 3) | VOH | 2.4 |  |  | V | IOH = -80 µA, VCC = 5V ± 10% | 12 |+| Logical 0 Input Current (Ports 1, 3) | IIL | -50 |  |  | µA | VIN = 0.45V | 12 |+| Logical 1 to 0 Transition Current (Ports 1, 3) | ITL | -750 |  |  | µA | VIN = 2V, VCC = 5V ± 10% | 12 | | Input Leakage Current (Port P1.0, P1.1) | ILI | -10 |  | 10 | µA | 0 < VIN < VCC | 12 | | Comparator Input Offset Voltage | VOS |  |  | 20 | mV | VCC = 5V | 12 | | Comparator Input Common Mode Voltage | VCM | 0 |  |  | V |  | 12 | | Reset Pull-down Resistor | RRST | 50 |  | 300 | kΩ |  | 12 | | Pin Capacitance | CIO |  |  | 10 | pF | Test Freq. = 1 MHz, TA = 25°C | 12 | | Power Supply Current, Active Mode | ICC |  |  | 15 | mA | Active Mode, 12 MHz, VCC = 6V | 12 |+| Power Supply Current, Active Mode | ICC |  |  | 5.5 | mA | Active Mode, 12 MHz, VCC = 3V | 12 | | Power Supply Current, Idle Mode | ICC |  |  | 5 | mA | Idle Mode, 12 MHz, VCC = 6V; P1.0 & P1.1 = 0V or VCC | 12 |+| Power Supply Current, Idle Mode | ICC |  |  | 1 | mA | Idle Mode, 12 MHz, VCC = 3V; P1.0 & P1.1 = 0V or VCC | 12 | | Power Supply Current, Power-down Mode | ICC |  |  | 100 | µA | VCC = 6V, P1.0 & P1.1 = 0V or VCC | 12 |+| Power Supply Current, Power-down Mode | ICC |  |  | 20 | µA | VCC = 3V, P1.0 & P1.1 = 0V or VCC | 12 | | Oscillator Frequency | 1/tCLCL | 0 |  | 24 | MHz | VCC = 4.0V to 6.0V | 13 | | Clock Period | tCLCL | 41.6 |  |  | ns | VCC = 4.0V to 6.0V | 13 | | High Time | tCHCX | 15 |  |  | ns | VCC = 4.0V to 6.0V | 13 | | Low Time | tCLCX | 15 |  |  | ns | VCC = 4.0V to 6.0V | 13 | | Rise Time | tCLCH |  |  | 20 | ns | VCC = 4.0V to 6.0V | 13 | | Fall Time | tCHCL |  |  | 20 | ns | VCC = 4.0V to 6.0V | 13 |-| Input Data Hold after Clock Rising Edge | tXHDX | 0 |  |  | ns | Variable oscillator; VCC = 5.0V ± 20%; load capacitance 80 pF | 13 |+| Serial Port Clock Cycle Time (12 MHz Osc) | tXLXL | 1 |  |  | µs | VCC = 5.0V ± 20%; Load Capacitance = 80 pF; 12 MHz Osc | 13 |+| Output Data Setup to Clock Rising Edge (12 MHz Osc) | tQVXH | 700 |  |  | ns | VCC = 5.0V ± 20%; Load Capacitance = 80 pF; 12 MHz Osc | 13 |+| Output Data Hold after Clock Rising Edge (12 MHz Osc) | tXHQX | 50 |  |  | ns | VCC = 5.0V ± 20%; Load Capacitance = 80 pF; 12 MHz Osc | 13 |+| Input Data Hold after Clock Rising Edge | tXHDX | 0 |  |  | ns | VCC = 5.0V ± 20%; Load Capacitance = 80 pF; 12 MHz Osc | 13 |+| Clock Rising Edge to Input Data Valid (12 MHz Osc) | tXHDV | 700 |  |  | ns | VCC = 5.0V ± 20%; Load Capacitance = 80 pF; 12 MHz Osc | 13 | | Programming Enable Voltage | VPP | 11.5 |  | 12.5 | V |  | 11 | | Programming Enable Current | IPP |  |  | 250 | µA |  | 11 |-| Data Setup to PROG Low | tDVGL | 1 |  |  | µs |  | 11 |-| Data Hold after PROG | tGHDX | 1 |  |  | µs |  | 11 |-| P3.4 (ENABLE) High to VPP | tEHSH | 1 |  |  | µs |  | 11 |-| VPP Setup to PROG Low | tSHGL | 10 |  |  | µs |  | 11 |-| VPP Hold after PROG | tGHSL | 10 |  |  | µs |  | 11 |-| PROG Width | tGLGH | 1 |  | 110 | µs |  | 11 |-| ENABLE Low to Data Valid | tELQV |  |  | 1 | µs |  | 11 |-| Data Float after ENABLE | tEHQZ | 0 |  | 1 | µs |  | 11 |-| PROG High to BUSY Low | tGHBL |  |  | 50 | ns |  | 11 |-| Byte Write Cycle Time | tWC |  |  | 2 | ms |  | 11 |-| RDY/BSY to Increment Clock Delay | tBHIH |  |  | 1 | µs |  | 11 |-| Increment Clock High | tIHIL | 200 |  |  | ns |  | 11 |+| Data Setup to PROG Low | tDVGL | 1 |  |  | µs | TA = 0°C to 70°C, VCC = 5.0 ± 10% | 11 |+| Data Hold after PROG | tGHDX | 1 |  |  | µs | TA = 0°C to 70°C, VCC = 5.0 ± 10% | 11 |+| P3.4 (ENABLE) High to VPP | tEHSH | 1 |  |  | µs | TA = 0°C to 70°C, VCC = 5.0 ± 10% | 11 |+| VPP Setup to PROG Low | tSHGL | 10 |  |  | µs | TA = 0°C to 70°C, VCC = 5.0 ± 10% | 11 |+| VPP Hold after PROG | tGHSL | 10 |  |  | µs | TA = 0°C to 70°C, VCC = 5.0 ± 10% | 11 |+| PROG Width | tGLGH | 1 |  | 110 | µs | TA = 0°C to 70°C, VCC = 5.0 ± 10% | 11 |+| ENABLE Low to Data Valid | tELQV |  |  | 1 | µs | TA = 0°C to 70°C, VCC = 5.0 ± 10% | 11 |+| Data Float after ENABLE | tEHQZ | 0 |  | 1 | µs | TA = 0°C to 70°C, VCC = 5.0 ± 10% | 11 |+| PROG High to BUSY Low | tGHBL |  |  | 50 | ns | TA = 0°C to 70°C, VCC = 5.0 ± 10% | 11 |+| Byte Write Cycle Time | tWC |  |  | 2 | ms | TA = 0°C to 70°C, VCC = 5.0 ± 10% | 11 |+| RDY/BSY to Increment Clock Delay | tBHIH | 1 |  |  | µs | TA = 0°C to 70°C, VCC = 5.0 ± 10% | 11 |+| Increment Clock High | tIHIL | 200 |  |  | ns | TA = 0°C to 70°C, VCC = 5.0 ± 10% | 11 |+| Operating Temperature |  | -55 |  | 125 | °C |  | 12 |+| Storage Temperature |  | -65 |  | 150 | °C |  | 12 |+| Voltage on Any Pin with Respect to Ground |  | -1 |  | 7 | V |  | 12 |+| Maximum Operating Voltage |  |  |  | 6.6 | V |  | 12 |+| DC Output Current |  |  |  | 25 | mA |  | 12 |+| Supply Voltage (AT89C2051-24PU, 24 MHz) | VCC | 4 |  | 6 | V | Speed 24 MHz | 16 |+| Operating Temperature (Industrial) |  | -40 |  | 85 | °C | Industrial operation range | 16 |+| Minimum VCC for Power-down | VCC | 2 |  |  | V | Power-down mode | 12 |  ## CAD (KiCad official) @@ -99,7 +105,7 @@ Limits as printed in the datasheet (page.json `metadata.characteristics` carries  Data extracted from the manufacturer datasheet, not a distributor listing: -- **Datasheet:** [Microchip Tech datasheet](docs/at89c2051-24pu-datasheet.pdf) (19 pp, sha256 `2ef3a172c794a432`, retrieved 2026-11-10, tier: manufacturer)+- **Datasheet:** [Microchip Tech datasheet](docs/at89c2051-24pu-datasheet.pdf) (19 pp, sha256 `2ef3a172c794a432`, retrieved 2026-11-11, tier: manufacturer) - **Extractor:** parts-factory `2.0.0` / `extract_pins 0.3`, primary `claude-haiku-5-5` (text), consensus `claude-sonnet-5-5` (agreed), guards: pin_guards 0.1: passed. Pins are checked against the footprint pad set and their cited datasheet pages before publish. - **CAD:** KiCad official libraries (CC-BY-SA 4.0). 
at89c2051-24pu-hero.overlay.json+528−526
@@ -1,529 +1,531 @@ {-  "spec": "adom-hero 1.4",-  "mpn": "AT89C2051-24PU",-  "kind": "component + footprint reference art",-  "board_use": false,-  "plane_z_mm": -0.02,-  "units": "metre",-  "upAxis": "Z",-  "layers": {-    "pad_outlines": {-      "material": "Footprint pads - teal dashed outlines - 50 percent opacity",-      "rgba": [-        0.0,-        0.902,-        0.863,-        0.5-      ],-      "pads": 20,-      "span_mm": 24.46,-      "dash_mm": 0.45,-      "gap_mm": 0.27,-      "pad_stroke_mm": 0.09-    },-    "silkscreen": {-      "material": "Silkscreen reference lines - 30 percent opacity",-      "rgba": [-        0.92,-        0.96,-        1.0,-        0.3-      ],-      "footprint_items": 6,-      "pin1": {-        "source": "added dot (AI)",-        "pad": "1",-        "center_mm": [-          0.0,-          -1.35-        ],-        "r_mm": 0.35-      }-    },-    "signal_names": {-      "material": "Signal names - 50 percent opacity",-      "rgba": [-        0.92,-        0.96,-        1.0,-        0.5-      ],-      "font": "DejaVu Sans Mono",-      "labels": 20,-      "sides": "top + mirrored underside (single-sided)",-      "fallback_to_pad_number": 0-    }-  },-  "align": {-    "ok": true,-    "centre_offset_mm": 0.0,-    "tolerance_mm": 1.957,-    "orientation_flipped": false,-    "contacts_bbox_mm": [-      -0.127,-      7.747,-      -22.975,-      0.115-    ],-    "pads_bbox_mm": [-      -0.8,-      8.42,-      -23.66,-      0.8+ "spec": "adom-hero 1.4",+ "mpn": "AT89C2051-24PU",+ "kind": "component + footprint reference art",+ "board_use": false,+ "plane_z_mm": -0.02,+ "units": "metre",+ "upAxis": "Z",+ "layers": {+  "pad_outlines": {+   "material": "Footprint pads - teal dashed outlines - 50 percent opacity",+   "rgba": [+    0.0,+    0.902,+    0.863,+    0.5+   ],+   "pads": 20,+   "span_mm": 24.46,+   "dash_mm": 0.45,+   "gap_mm": 0.27,+   "pad_stroke_mm": 0.09+  },+  "silkscreen": {+   "material": "Silkscreen reference lines - 30 percent opacity",+   "rgba": [+    0.92,+    0.96,+    1.0,+    0.3+   ],+   "footprint_items": 6,+   "pin1": {+    "source": "added dot (AI)",+    "pad": "1",+    "center_mm": [+     0.0,+     -1.35     ],-    "seating_z_mm": -3.3-  },-  "sources": {-    "glb": "at89c2051-24pu-etched.glb",-    "glb_sha256": "adf4f1d93275a33686788ad970dfa0e2c008b404a63694243aacd467c9e7207a",-    "footprint": "at89c2051-24pu.kicad_mod",-    "footprint_sha256": "d98cb2b932a5a4004d26d787249d6089bcc06f088d1a2d848420cdd489d48c98",-    "pins": "page.json component.pins",-    "pins_sha256": "4270cdcb02f19a761491eaf25c5bf85e586746adb474d77f76ff1fbf0deb82a3"-  },-  "generator": "adom-wiki 1.8.15 (component_hero)",-  "labels": [-    {-      "pad": "1",-      "text": "RST/VPP",-      "x": -0.95,-      "y": 0.0,-      "align": "right",-      "vertical": false,-      "h": 0.6-    },-    {-      "pad": "2",-      "text": "P3.0 (RXD)",-      "x": -0.95,-      "y": 2.54,-      "align": "right",-      "vertical": false,-      "h": 0.6-    },-    {-      "pad": "3",-      "text": "P3.1 (TXD)",-      "x": -0.95,-      "y": 5.08,-      "align": "right",-      "vertical": false,-      "h": 0.6-    },-    {-      "pad": "4",-      "text": "XTAL2",-      "x": -0.95,-      "y": 7.62,-      "align": "right",-      "vertical": false,-      "h": 0.6-    },-    {-      "pad": "5",-      "text": "XTAL1",-      "x": -0.95,-      "y": 10.16,-      "align": "right",-      "vertical": false,-      "h": 0.6-    },-    {-      "pad": "6",-      "text": "P3.2 (INT0)",-      "x": -0.95,-      "y": 12.7,-      "align": "right",-      "vertical": false,-      "h": 0.6-    },-    {-      "pad": "7",-      "text": "P3.3 (INT1)",-      "x": -0.95,-      "y": 15.24,-      "align": "right",-      "vertical": false,-      "h": 0.6-    },-    {-      "pad": "8",-      "text": "P3.4 (T0)",-      "x": -0.95,-      "y": 17.78,-      "align": "right",-      "vertical": false,-      "h": 0.6-    },-    {-      "pad": "9",-      "text": "P3.5 (T1)",-      "x": -0.95,-      "y": 20.32,-      "align": "right",-      "vertical": false,-      "h": 0.6-    },-    {-      "pad": "10",-      "text": "GND",-      "x": -0.95,-      "y": 22.86,-      "align": "right",-      "vertical": false,-      "h": 0.6-    },-    {-      "pad": "11",-      "text": "P3.7",-      "x": 8.57,-      "y": 22.86,-      "align": "left",-      "vertical": false,-      "h": 0.6-    },-    {-      "pad": "12",-      "text": "P1.0 (AIN0)",-      "x": 8.57,-      "y": 20.32,-      "align": "left",-      "vertical": false,-      "h": 0.6-    },-    {-      "pad": "13",-      "text": "P1.1 (AIN1)",-      "x": 8.57,-      "y": 17.78,-      "align": "left",-      "vertical": false,-      "h": 0.6-    },-    {-      "pad": "14",-      "text": "P1.2",-      "x": 8.57,-      "y": 15.24,-      "align": "left",-      "vertical": false,-      "h": 0.6-    },-    {-      "pad": "15",-      "text": "P1.3",-      "x": 8.57,-      "y": 12.7,-      "align": "left",-      "vertical": false,-      "h": 0.6-    },-    {-      "pad": "16",-      "text": "P1.4",-      "x": 8.57,-      "y": 10.16,-      "align": "left",-      "vertical": false,-      "h": 0.6-    },-    {-      "pad": "17",-      "text": "P1.5",-      "x": 8.57,-      "y": 7.62,-      "align": "left",-      "vertical": false,-      "h": 0.6-    },-    {-      "pad": "18",-      "text": "P1.6",-      "x": 8.57,-      "y": 5.08,-      "align": "left",-      "vertical": false,-      "h": 0.6-    },-    {-      "pad": "19",-      "text": "P1.7",-      "x": 8.57,-      "y": 2.54,-      "align": "left",-      "vertical": false,-      "h": 0.6-    },-    {-      "pad": "20",-      "text": "VCC",-      "x": 8.57,-      "y": 0.0,-      "align": "left",-      "vertical": false,-      "h": 0.6-    }+    "r_mm": 0.35+   }+  },+  "signal_names": {+   "material": "Signal names - 50 percent opacity",+   "rgba": [+    0.92,+    0.96,+    1.0,+    0.5+   ],+   "font": "DejaVu Sans Mono",+   "labels": 20,+   "sides": "top + mirrored underside (single-sided)",+   "omitted": null,+   "fallback_to_pad_number": 0+  }+ },+ "align": {+  "ok": true,+  "centre_offset_mm": 0.0,+  "over_pads": true,+  "tolerance_mm": 1.957,+  "orientation_flipped": false,+  "contacts_bbox_mm": [+   -0.127,+   7.747,+   -22.975,+   0.115   ],-  "pads": [-    {-      "number": "1",-      "shape": "roundrect",-      "center_mm": [-        0.0,-        0.0-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    },-    {-      "number": "2",-      "shape": "circle",-      "center_mm": [-        0.0,-        2.54-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    },-    {-      "number": "3",-      "shape": "circle",-      "center_mm": [-        0.0,-        5.08-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    },-    {-      "number": "4",-      "shape": "circle",-      "center_mm": [-        0.0,-        7.62-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    },-    {-      "number": "5",-      "shape": "circle",-      "center_mm": [-        0.0,-        10.16-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    },-    {-      "number": "6",-      "shape": "circle",-      "center_mm": [-        0.0,-        12.7-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    },-    {-      "number": "7",-      "shape": "circle",-      "center_mm": [-        0.0,-        15.24-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    },-    {-      "number": "8",-      "shape": "circle",-      "center_mm": [-        0.0,-        17.78-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    },-    {-      "number": "9",-      "shape": "circle",-      "center_mm": [-        0.0,-        20.32-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    },-    {-      "number": "10",-      "shape": "circle",-      "center_mm": [-        0.0,-        22.86-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    },-    {-      "number": "11",-      "shape": "circle",-      "center_mm": [-        7.62,-        22.86-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    },-    {-      "number": "12",-      "shape": "circle",-      "center_mm": [-        7.62,-        20.32-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    },-    {-      "number": "13",-      "shape": "circle",-      "center_mm": [-        7.62,-        17.78-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    },-    {-      "number": "14",-      "shape": "circle",-      "center_mm": [-        7.62,-        15.24-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    },-    {-      "number": "15",-      "shape": "circle",-      "center_mm": [-        7.62,-        12.7-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    },-    {-      "number": "16",-      "shape": "circle",-      "center_mm": [-        7.62,-        10.16-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    },-    {-      "number": "17",-      "shape": "circle",-      "center_mm": [-        7.62,-        7.62-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    },-    {-      "number": "18",-      "shape": "circle",-      "center_mm": [-        7.62,-        5.08-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    },-    {-      "number": "19",-      "shape": "circle",-      "center_mm": [-        7.62,-        2.54-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    },-    {-      "number": "20",-      "shape": "circle",-      "center_mm": [-        7.62,-        0.0-      ],-      "size_mm": [-        1.6,-        1.6-      ],-      "rot": 0.0-    }-  ]-}+  "pads_bbox_mm": [+   -0.8,+   8.42,+   -23.66,+   0.8+  ],+  "seating_z_mm": -3.3+ },+ "sources": {+  "glb": "at89c2051-24pu-etched.glb",+  "glb_sha256": "adf4f1d93275a33686788ad970dfa0e2c008b404a63694243aacd467c9e7207a",+  "footprint": "at89c2051-24pu.kicad_mod",+  "footprint_sha256": "d98cb2b932a5a4004d26d787249d6089bcc06f088d1a2d848420cdd489d48c98",+  "pins": "page.json component.pins",+  "pins_sha256": "4270cdcb02f19a761491eaf25c5bf85e586746adb474d77f76ff1fbf0deb82a3"+ },+ "generator": "factory/hero_glb.py",+ "labels": [+  {+   "pad": "1",+   "text": "RST/VPP",+   "x": -0.95,+   "y": 0.0,+   "align": "right",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "2",+   "text": "P3.0 (RXD)",+   "x": -0.95,+   "y": 2.54,+   "align": "right",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "3",+   "text": "P3.1 (TXD)",+   "x": -0.95,+   "y": 5.08,+   "align": "right",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "4",+   "text": "XTAL2",+   "x": -0.95,+   "y": 7.62,+   "align": "right",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "5",+   "text": "XTAL1",+   "x": -0.95,+   "y": 10.16,+   "align": "right",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "6",+   "text": "P3.2 (INT0)",+   "x": -0.95,+   "y": 12.7,+   "align": "right",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "7",+   "text": "P3.3 (INT1)",+   "x": -0.95,+   "y": 15.24,+   "align": "right",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "8",+   "text": "P3.4 (T0)",+   "x": -0.95,+   "y": 17.78,+   "align": "right",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "9",+   "text": "P3.5 (T1)",+   "x": -0.95,+   "y": 20.32,+   "align": "right",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "10",+   "text": "GND",+   "x": -0.95,+   "y": 22.86,+   "align": "right",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "11",+   "text": "P3.7",+   "x": 8.57,+   "y": 22.86,+   "align": "left",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "12",+   "text": "P1.0 (AIN0)",+   "x": 8.57,+   "y": 20.32,+   "align": "left",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "13",+   "text": "P1.1 (AIN1)",+   "x": 8.57,+   "y": 17.78,+   "align": "left",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "14",+   "text": "P1.2",+   "x": 8.57,+   "y": 15.24,+   "align": "left",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "15",+   "text": "P1.3",+   "x": 8.57,+   "y": 12.7,+   "align": "left",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "16",+   "text": "P1.4",+   "x": 8.57,+   "y": 10.16,+   "align": "left",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "17",+   "text": "P1.5",+   "x": 8.57,+   "y": 7.62,+   "align": "left",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "18",+   "text": "P1.6",+   "x": 8.57,+   "y": 5.08,+   "align": "left",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "19",+   "text": "P1.7",+   "x": 8.57,+   "y": 2.54,+   "align": "left",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "20",+   "text": "VCC",+   "x": 8.57,+   "y": 0.0,+   "align": "left",+   "vertical": false,+   "h": 0.6+  }+ ],+ "pads": [+  {+   "number": "1",+   "shape": "roundrect",+   "center_mm": [+    0.0,+    0.0+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  },+  {+   "number": "2",+   "shape": "circle",+   "center_mm": [+    0.0,+    2.54+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  },+  {+   "number": "3",+   "shape": "circle",+   "center_mm": [+    0.0,+    5.08+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  },+  {+   "number": "4",+   "shape": "circle",+   "center_mm": [+    0.0,+    7.62+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  },+  {+   "number": "5",+   "shape": "circle",+   "center_mm": [+    0.0,+    10.16+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  },+  {+   "number": "6",+   "shape": "circle",+   "center_mm": [+    0.0,+    12.7+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  },+  {+   "number": "7",+   "shape": "circle",+   "center_mm": [+    0.0,+    15.24+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  },+  {+   "number": "8",+   "shape": "circle",+   "center_mm": [+    0.0,+    17.78+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  },+  {+   "number": "9",+   "shape": "circle",+   "center_mm": [+    0.0,+    20.32+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  },+  {+   "number": "10",+   "shape": "circle",+   "center_mm": [+    0.0,+    22.86+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  },+  {+   "number": "11",+   "shape": "circle",+   "center_mm": [+    7.62,+    22.86+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  },+  {+   "number": "12",+   "shape": "circle",+   "center_mm": [+    7.62,+    20.32+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  },+  {+   "number": "13",+   "shape": "circle",+   "center_mm": [+    7.62,+    17.78+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  },+  {+   "number": "14",+   "shape": "circle",+   "center_mm": [+    7.62,+    15.24+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  },+  {+   "number": "15",+   "shape": "circle",+   "center_mm": [+    7.62,+    12.7+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  },+  {+   "number": "16",+   "shape": "circle",+   "center_mm": [+    7.62,+    10.16+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  },+  {+   "number": "17",+   "shape": "circle",+   "center_mm": [+    7.62,+    7.62+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  },+  {+   "number": "18",+   "shape": "circle",+   "center_mm": [+    7.62,+    5.08+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  },+  {+   "number": "19",+   "shape": "circle",+   "center_mm": [+    7.62,+    2.54+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  },+  {+   "number": "20",+   "shape": "circle",+   "center_mm": [+    7.62,+    0.0+   ],+   "size_mm": [+    1.6,+    1.6+   ],+   "rot": 0.0+  }+ ]+}\ No newline at end of file
at89c2051-24pu.lbr+14−3
@@ -50,7 +50,7 @@ <layer number="98" name="Guide" color="6" fill="1" visible="yes" active="yes"/> </layers> <library>-<description></description>+<description>Microchip Tech ATMEL &amp; AVR, DIP-20. Pinout cross-checked by two models against the datasheet</description> <packages> <package name="DIP-20_W7.62mm">   <description>20 pads, 9.2 x 24.5 mm. 20-lead though-hole mounted DIP package, row spacing 7.62mm (300 mils)</description>@@ -102,6 +102,7 @@ </packages> <symbols> <symbol name="AT89C2051-24PU">+  <description>Microchip Tech ATMEL &amp; AVR, DIP-20. Pinout cross-checked by two models against the datasheet</description>   <wire x1="-12.7" y1="12.7" x2="12.7" y2="12.7" width="0.254" layer="94"/>   <wire x1="12.7" y1="12.7" x2="12.7" y2="-15.24" width="0.254" layer="94"/>   <wire x1="12.7" y1="-15.24" x2="-12.7" y2="-15.24" width="0.254" layer="94"/>@@ -132,7 +133,7 @@ </symbols> <devicesets> <deviceset name="AT89C2051-24PU" prefix="U">-  <description></description>+  <description>Microchip Tech ATMEL &amp; AVR, DIP-20. Pinout cross-checked by two models against the datasheet</description>   <gates>     <gate name="G$1" symbol="AT89C2051-24PU" x="0" y="0"/>   </gates>@@ -160,7 +161,17 @@         <connect gate="G$1" pin="P1.0_AIN0" pad="12"/>         <connect gate="G$1" pin="P3.7" pad="11"/>       </connects>-      <technologies><technology name=""/></technologies>+      <technologies>+        <technology name="">+          <attribute name="MPN" value="AT89C2051-24PU" constant="no"/>+          <attribute name="MANUFACTURER" value="Microchip Tech" constant="no"/>+          <attribute name="DATASHEET" value="https://datasheet.lcsc.com/datasheet/pdf/50457c73a99b43f9b2ed97c385bfb4d3.pdf" constant="no"/>+          <attribute name="ADOM_WIKI" value="https://wiki.adom.inc/adom/at89c2051-24pu" constant="no"/>+          <attribute name="MOUSER_PN" value="556-A89C2051-24PU" constant="no"/>+          <attribute name="DIGIKEY_PN" value="AT89C2051-24PU-ND" constant="no"/>+          <attribute name="LCSC_PN" value="C5363" constant="no"/>+        </technology>+      </technologies>     </device>   </devices> </deviceset>
package.json+26−27
@@ -1,6 +1,6 @@ {   "slug": "at89c2051-24pu",-  "version": "0.1.0",+  "version": "0.1.1",   "type": "component",   "description": "Microchip Tech ATMEL & AVR, DIP-20. Pinout cross-checked by two models against the datasheet, KiCad symbol/footprint/3D.",   "tags": [@@ -54,12 +54,11 @@       "mouser": "556-A89C2051-24PU"     },     "distributor_check": {-      "checked_at": "2026-11-10T07:00:50Z",+      "checked_at": "2026-11-11T00:49:16Z",       "source": "Component Ocean /api/assign-pns",       "digikey": {         "pn": "AT89C2051-24PU-ND",-        "status": "found",-        "lifecycle": "Active"+        "status": "found"       },       "mouser": {         "pn": "556-A89C2051-24PU",@@ -71,19 +70,19 @@         "number": "1",         "name": "RST/VPP",         "type": "input",-        "description": "Reset input: holding RST high for two machine cycles while the oscillator runs resets the device, and it is raised to 12V to enable Flash programming."+        "description": "Reset input: holding RST high for two machine cycles while the oscillator runs resets the device, and this pin receives the 12 V programming enable voltage (VPP) during Flash programming."       },       {         "number": "2",         "name": "P3.0 (RXD)",         "type": "bidirectional",-        "description": "Port 3 bidirectional I/O pin with internal pull-up, alternate function RXD serial input port."+        "description": "Port 3 bidirectional I/O with internal pull-up; alternate function RXD serial input port."       },       {         "number": "3",         "name": "P3.1 (TXD)",         "type": "bidirectional",-        "description": "Port 3 bidirectional I/O pin with internal pull-up, alternate function TXD serial output port."+        "description": "Port 3 bidirectional I/O with internal pull-up; alternate function TXD serial output port, also used as RDY/BSY output during programming."       },       {         "number": "4",@@ -101,25 +100,25 @@         "number": "6",         "name": "P3.2 (INT0)",         "type": "bidirectional",-        "description": "Port 3 bidirectional I/O pin with internal pull-up, alternate function INT0 external interrupt 0."+        "description": "Port 3 bidirectional I/O with internal pull-up; alternate function INT0 external interrupt 0, also used as PROG during programming."       },       {         "number": "7",         "name": "P3.3 (INT1)",         "type": "bidirectional",-        "description": "Port 3 bidirectional I/O pin with internal pull-up, alternate function INT1 external interrupt 1."+        "description": "Port 3 bidirectional I/O with internal pull-up; alternate function INT1 external interrupt 1."       },       {         "number": "8",         "name": "P3.4 (T0)",         "type": "bidirectional",-        "description": "Port 3 bidirectional I/O pin with internal pull-up, alternate function T0 timer 0 external input."+        "description": "Port 3 bidirectional I/O with internal pull-up; alternate function T0 timer 0 external input."       },       {         "number": "9",         "name": "P3.5 (T1)",         "type": "bidirectional",-        "description": "Port 3 bidirectional I/O pin with internal pull-up, alternate function T1 timer 1 external input."+        "description": "Port 3 bidirectional I/O with internal pull-up; alternate function T1 timer 1 external input."       },       {         "number": "10",@@ -131,61 +130,61 @@         "number": "11",         "name": "P3.7",         "type": "bidirectional",-        "description": "Port 3 bidirectional I/O pin with internal pull-up; Port 3 output buffers can sink 20 mA."+        "description": "Port 3 bidirectional I/O pin with internal pull-up."       },       {         "number": "12",         "name": "P1.0 (AIN0)",         "type": "bidirectional",-        "description": "Port 1 I/O pin that requires an external pull-up and serves as the positive input AIN0 of the on-chip precision analog comparator."+        "description": "Port 1 bidirectional I/O that requires an external pull-up; also the positive input (AIN0) of the on-chip analog comparator, and its output buffer can sink 20 mA."       },       {         "number": "13",         "name": "P1.1 (AIN1)",         "type": "bidirectional",-        "description": "Port 1 I/O pin that requires an external pull-up and serves as the negative input AIN1 of the on-chip precision analog comparator."+        "description": "Port 1 bidirectional I/O that requires an external pull-up; also the negative input (AIN1) of the on-chip analog comparator, and its output buffer can sink 20 mA."       },       {         "number": "14",         "name": "P1.2",         "type": "bidirectional",-        "description": "Port 1 bidirectional I/O pin with internal pull-up; Port 1 output buffers can sink 20 mA and drive LED displays directly."+        "description": "Port 1 bidirectional I/O with internal pull-up; output buffer can sink 20 mA and drive LEDs directly."       },       {         "number": "15",         "name": "P1.3",         "type": "bidirectional",-        "description": "Port 1 bidirectional I/O pin with internal pull-up; Port 1 output buffers can sink 20 mA and drive LED displays directly."+        "description": "Port 1 bidirectional I/O with internal pull-up; output buffer can sink 20 mA and drive LEDs directly."       },       {         "number": "16",         "name": "P1.4",         "type": "bidirectional",-        "description": "Port 1 bidirectional I/O pin with internal pull-up; Port 1 output buffers can sink 20 mA and drive LED displays directly."+        "description": "Port 1 bidirectional I/O with internal pull-up; output buffer can sink 20 mA and drive LEDs directly."       },       {         "number": "17",         "name": "P1.5",         "type": "bidirectional",-        "description": "Port 1 bidirectional I/O pin with internal pull-up; Port 1 output buffers can sink 20 mA and drive LED displays directly."+        "description": "Port 1 bidirectional I/O with internal pull-up; output buffer can sink 20 mA and drive LEDs directly."       },       {         "number": "18",         "name": "P1.6",         "type": "bidirectional",-        "description": "Port 1 bidirectional I/O pin with internal pull-up; Port 1 output buffers can sink 20 mA and drive LED displays directly."+        "description": "Port 1 bidirectional I/O with internal pull-up; output buffer can sink 20 mA and drive LEDs directly."       },       {         "number": "19",         "name": "P1.7",         "type": "bidirectional",-        "description": "Port 1 bidirectional I/O pin with internal pull-up; Port 1 output buffers can sink 20 mA and drive LED displays directly."+        "description": "Port 1 bidirectional I/O with internal pull-up; output buffer can sink 20 mA and drive LEDs directly."       },       {         "number": "20",         "name": "VCC",         "type": "power_in",-        "description": "Supply voltage, 2.7V to 6.0V operating range for the AT89C2051-24PU at 4.0V to 6.0V."+        "description": "Supply voltage; the AT89C2051-24PU is specified for 4.0 V to 6.0 V operation at up to 24 MHz."       }     ],     "provenance": {@@ -199,11 +198,11 @@         "consensus": "agreed",         "guards": "pin_guards 0.1: passed",         "guard_notes": [-          "extractor flagged: The pin-to-number mapping was reconstructed from the scrambled column order in the page 2 pin config"+          "extractor flagged: Pin numbers were mapped from the text extraction of the page 2 pin diagram, where the printed number; The datasheet's pin diagram lists only the port names and no pin-by-pin descriptions for P3.7; its d; The datasheet covers two ordering variants: -12PU (2.7 V to 6.0 V, 12 MHz) and -24PU (4.0 V to 6.0 V"         ],         "pages_sent": 19,-        "cost_usd": 0.0712,-        "at": "2026-11-10T07:00:43"+        "cost_usd": 0.0776,+        "at": "2026-11-11T00:49:07"       },       "datasheet": {         "url": "https://datasheet.lcsc.com/datasheet/pdf/50457c73a99b43f9b2ed97c385bfb4d3.pdf",@@ -240,7 +239,7 @@         "centre_offset_mm": 0.0,         "footprint_binding": "identity",         "sha256": "ca359c9b9e0ce94efcb6c96866513f659eef6517d629ace3c4a0a779f6fd57bb",-        "checked": "2026-11-10",+        "checked": "2026-11-11",         "checked_by": "factory/step_pose.py (Z-up, origin, seat, binding)"       },       {@@ -258,8 +257,8 @@         "zmin_mm": -3.3,         "centre_offset_mm": 0.0,         "footprint_binding": "identity",-        "sha256": "d519fd16b77d61c7bfaf29df93a22878454ac5482ccb04be86f3f74165312193",-        "checked": "2026-11-10",+        "sha256": "ad0a011de7b9dd57df147622adaefc7a70c75bf84bdcefe525200b2d511ed2de",+        "checked": "2026-11-11",         "checked_by": "factory/step_pose.py (Z-up, origin, seat, binding)"       }     ],
page.json+29−28
@@ -4,7 +4,7 @@   "slug": "at89c2051-24pu",   "title": "AT89C2051-24PU",   "brief": "Microchip Tech ATMEL & AVR, DIP-20. Pinout cross-checked by two models against the datasheet, KiCad symbol/footprint/3D.",-  "version": "0.1.0",+  "version": "0.1.1",   "license": "CC-BY-SA-4.0",   "tags": [     "component",@@ -36,12 +36,11 @@       "mouser": "556-A89C2051-24PU"     },     "distributor_check": {-      "checked_at": "2026-11-10T07:00:50Z",+      "checked_at": "2026-11-11T00:49:16Z",       "source": "Component Ocean /api/assign-pns",       "digikey": {         "pn": "AT89C2051-24PU-ND",-        "status": "found",-        "lifecycle": "Active"+        "status": "found"       },       "mouser": {         "pn": "556-A89C2051-24PU",@@ -53,19 +52,19 @@         "number": "1",         "name": "RST/VPP",         "type": "input",-        "description": "Reset input: holding RST high for two machine cycles while the oscillator runs resets the device, and it is raised to 12V to enable Flash programming."+        "description": "Reset input: holding RST high for two machine cycles while the oscillator runs resets the device, and this pin receives the 12 V programming enable voltage (VPP) during Flash programming."       },       {         "number": "2",         "name": "P3.0 (RXD)",         "type": "bidirectional",-        "description": "Port 3 bidirectional I/O pin with internal pull-up, alternate function RXD serial input port."+        "description": "Port 3 bidirectional I/O with internal pull-up; alternate function RXD serial input port."       },       {         "number": "3",         "name": "P3.1 (TXD)",         "type": "bidirectional",-        "description": "Port 3 bidirectional I/O pin with internal pull-up, alternate function TXD serial output port."+        "description": "Port 3 bidirectional I/O with internal pull-up; alternate function TXD serial output port, also used as RDY/BSY output during programming."       },       {         "number": "4",@@ -83,25 +82,25 @@         "number": "6",         "name": "P3.2 (INT0)",         "type": "bidirectional",-        "description": "Port 3 bidirectional I/O pin with internal pull-up, alternate function INT0 external interrupt 0."+        "description": "Port 3 bidirectional I/O with internal pull-up; alternate function INT0 external interrupt 0, also used as PROG during programming."       },       {         "number": "7",         "name": "P3.3 (INT1)",         "type": "bidirectional",-        "description": "Port 3 bidirectional I/O pin with internal pull-up, alternate function INT1 external interrupt 1."+        "description": "Port 3 bidirectional I/O with internal pull-up; alternate function INT1 external interrupt 1."       },       {         "number": "8",         "name": "P3.4 (T0)",         "type": "bidirectional",-        "description": "Port 3 bidirectional I/O pin with internal pull-up, alternate function T0 timer 0 external input."+        "description": "Port 3 bidirectional I/O with internal pull-up; alternate function T0 timer 0 external input."       },       {         "number": "9",         "name": "P3.5 (T1)",         "type": "bidirectional",-        "description": "Port 3 bidirectional I/O pin with internal pull-up, alternate function T1 timer 1 external input."+        "description": "Port 3 bidirectional I/O with internal pull-up; alternate function T1 timer 1 external input."       },       {         "number": "10",@@ -113,61 +112,61 @@         "number": "11",         "name": "P3.7",         "type": "bidirectional",-        "description": "Port 3 bidirectional I/O pin with internal pull-up; Port 3 output buffers can sink 20 mA."+        "description": "Port 3 bidirectional I/O pin with internal pull-up."       },       {         "number": "12",         "name": "P1.0 (AIN0)",         "type": "bidirectional",-        "description": "Port 1 I/O pin that requires an external pull-up and serves as the positive input AIN0 of the on-chip precision analog comparator."+        "description": "Port 1 bidirectional I/O that requires an external pull-up; also the positive input (AIN0) of the on-chip analog comparator, and its output buffer can sink 20 mA."       },       {         "number": "13",         "name": "P1.1 (AIN1)",         "type": "bidirectional",-        "description": "Port 1 I/O pin that requires an external pull-up and serves as the negative input AIN1 of the on-chip precision analog comparator."+        "description": "Port 1 bidirectional I/O that requires an external pull-up; also the negative input (AIN1) of the on-chip analog comparator, and its output buffer can sink 20 mA."       },       {         "number": "14",         "name": "P1.2",         "type": "bidirectional",-        "description": "Port 1 bidirectional I/O pin with internal pull-up; Port 1 output buffers can sink 20 mA and drive LED displays directly."+        "description": "Port 1 bidirectional I/O with internal pull-up; output buffer can sink 20 mA and drive LEDs directly."       },       {         "number": "15",         "name": "P1.3",         "type": "bidirectional",-        "description": "Port 1 bidirectional I/O pin with internal pull-up; Port 1 output buffers can sink 20 mA and drive LED displays directly."+        "description": "Port 1 bidirectional I/O with internal pull-up; output buffer can sink 20 mA and drive LEDs directly."       },       {         "number": "16",         "name": "P1.4",         "type": "bidirectional",-        "description": "Port 1 bidirectional I/O pin with internal pull-up; Port 1 output buffers can sink 20 mA and drive LED displays directly."+        "description": "Port 1 bidirectional I/O with internal pull-up; output buffer can sink 20 mA and drive LEDs directly."       },       {         "number": "17",         "name": "P1.5",         "type": "bidirectional",-        "description": "Port 1 bidirectional I/O pin with internal pull-up; Port 1 output buffers can sink 20 mA and drive LED displays directly."+        "description": "Port 1 bidirectional I/O with internal pull-up; output buffer can sink 20 mA and drive LEDs directly."       },       {         "number": "18",         "name": "P1.6",         "type": "bidirectional",-        "description": "Port 1 bidirectional I/O pin with internal pull-up; Port 1 output buffers can sink 20 mA and drive LED displays directly."+        "description": "Port 1 bidirectional I/O with internal pull-up; output buffer can sink 20 mA and drive LEDs directly."       },       {         "number": "19",         "name": "P1.7",         "type": "bidirectional",-        "description": "Port 1 bidirectional I/O pin with internal pull-up; Port 1 output buffers can sink 20 mA and drive LED displays directly."+        "description": "Port 1 bidirectional I/O with internal pull-up; output buffer can sink 20 mA and drive LEDs directly."       },       {         "number": "20",         "name": "VCC",         "type": "power_in",-        "description": "Supply voltage, 2.7V to 6.0V operating range for the AT89C2051-24PU at 4.0V to 6.0V."+        "description": "Supply voltage; the AT89C2051-24PU is specified for 4.0 V to 6.0 V operation at up to 24 MHz."       }     ],     "provenance": {@@ -181,11 +180,11 @@         "consensus": "agreed",         "guards": "pin_guards 0.1: passed",         "guard_notes": [-          "extractor flagged: The pin-to-number mapping was reconstructed from the scrambled column order in the page 2 pin config"+          "extractor flagged: Pin numbers were mapped from the text extraction of the page 2 pin diagram, where the printed number; The datasheet's pin diagram lists only the port names and no pin-by-pin descriptions for P3.7; its d; The datasheet covers two ordering variants: -12PU (2.7 V to 6.0 V, 12 MHz) and -24PU (4.0 V to 6.0 V"         ],         "pages_sent": 19,-        "cost_usd": 0.0712,-        "at": "2026-11-10T07:00:43"+        "cost_usd": 0.0776,+        "at": "2026-11-11T00:49:07"       },       "datasheet": {         "url": "https://datasheet.lcsc.com/datasheet/pdf/50457c73a99b43f9b2ed97c385bfb4d3.pdf",@@ -222,7 +221,7 @@         "centre_offset_mm": 0,         "footprint_binding": "identity",         "sha256": "ca359c9b9e0ce94efcb6c96866513f659eef6517d629ace3c4a0a779f6fd57bb",-        "checked": "2026-11-10",+        "checked": "2026-11-11",         "checked_by": "factory/step_pose.py (Z-up, origin, seat, binding)"       },       {@@ -240,8 +239,8 @@         "zmin_mm": -3.3,         "centre_offset_mm": 0,         "footprint_binding": "identity",-        "sha256": "d519fd16b77d61c7bfaf29df93a22878454ac5482ccb04be86f3f74165312193",-        "checked": "2026-11-10",+        "sha256": "ad0a011de7b9dd57df147622adaefc7a70c75bf84bdcefe525200b2d511ed2de",+        "checked": "2026-11-11",         "checked_by": "factory/step_pose.py (Z-up, origin, seat, binding)"       }     ],@@ -864,5 +863,7 @@   ],   "visibility": {     "public": true-  }+  },+  "description": "Microchip Tech ATMEL & AVR, DIP-20. Pinout cross-checked by two models against the datasheet, KiCad symbol/footprint/3D.",+  "org": "adom" }\ No newline at end of file