AnasSarkiz/rp2040-usb-c-single-axis-dm542t-motion-controller--01a0e89c
A USB‑C RP2040 controller board with external QSPI flash, crystal clock, regulated 3.3/1.1/5 V power, boost-converted motor-driver supply, protected USB and limit inputs, status LEDs, reset/boot switches, and AO3400A MOSFET outputs for stepper-control signals.
- Version
- 0.1.0-prototype.19
- License
- unset
- Stars
- 0
tooling/patches/core.patch
--- a/lib/components/primitive-components/PlatedHole.ts
+++ b/lib/components/primitive-components/PlatedHole.ts
@@ -161,26 +161,28 @@
})
this.pcb_plated_hole_id = pcb_plated_hole.pcb_plated_hole_id
- db.pcb_solder_paste.insert({
- layer: "top",
- shape: "circle",
- // @ts-ignore: no idea why this is triggering
- radius: props.outerDiameter / 2,
- x: position.x,
- y: position.y,
- subcircuit_id: subcircuit?.subcircuit_id ?? undefined,
- pcb_group_id: this.getGroup()?.pcb_group_id ?? undefined,
- })
- db.pcb_solder_paste.insert({
- layer: "bottom",
- shape: "circle",
- // @ts-ignore: no idea why this is triggering
- radius: props.outerDiameter / 2,
- x: position.x,
- y: position.y,
- subcircuit_id: subcircuit?.subcircuit_id ?? undefined,
- pcb_group_id: this.getGroup()?.pcb_group_id ?? undefined,
- })
+ if (!props.solderPasteDisabled)
+ db.pcb_solder_paste.insert({
+ layer: "top",
+ shape: "circle",
+ // @ts-ignore: no idea why this is triggering
+ radius: props.outerDiameter / 2,
+ x: position.x,
+ y: position.y,
+ subcircuit_id: subcircuit?.subcircuit_id ?? undefined,
+ pcb_group_id: this.getGroup()?.pcb_group_id ?? undefined,
+ })
+ if (!props.solderPasteDisabled)
+ db.pcb_solder_paste.insert({
+ layer: "bottom",
+ shape: "circle",
+ // @ts-ignore: no idea why this is triggering
+ radius: props.outerDiameter / 2,
+ x: position.x,
+ y: position.y,
+ subcircuit_id: subcircuit?.subcircuit_id ?? undefined,
+ pcb_group_id: this.getGroup()?.pcb_group_id ?? undefined,
+ })
} else if (props.shape === "pill" && props.rectPad) {
const pcb_plated_hole = db.pcb_plated_hole.insert({
pcb_component_id,
@@ -235,28 +237,30 @@
} as PcbPlatedHoleOval)
this.pcb_plated_hole_id = pcb_plated_hole.pcb_plated_hole_id
- db.pcb_solder_paste.insert({
- layer: "top",
- shape: props.shape,
- // @ts-ignore: no idea why this is triggering
- width: props.outerWidth,
- height: props.outerHeight,
- x: position.x,
- y: position.y,
- subcircuit_id: subcircuit?.subcircuit_id ?? undefined,
- pcb_group_id: this.getGroup()?.pcb_group_id ?? undefined,
- })
- db.pcb_solder_paste.insert({
- layer: "bottom",
- shape: props.shape,
- // @ts-ignore: no idea why this is triggering
- width: props.outerWidth,
- height: props.outerHeight,
- x: position.x,
- y: position.y,
- subcircuit_id: subcircuit?.subcircuit_id ?? undefined,
- pcb_group_id: this.getGroup()?.pcb_group_id ?? undefined,
- })
+ if (!props.solderPasteDisabled)
+ db.pcb_solder_paste.insert({
+ layer: "top",
+ shape: props.shape,
+ // @ts-ignore: no idea why this is triggering
+ width: props.outerWidth,
+ height: props.outerHeight,
+ x: position.x,
+ y: position.y,
+ subcircuit_id: subcircuit?.subcircuit_id ?? undefined,
+ pcb_group_id: this.getGroup()?.pcb_group_id ?? undefined,
+ })
+ if (!props.solderPasteDisabled)
+ db.pcb_solder_paste.insert({
+ layer: "bottom",
+ shape: props.shape,
+ // @ts-ignore: no idea why this is triggering
+ width: props.outerWidth,
+ height: props.outerHeight,
+ x: position.x,
+ y: position.y,
+ subcircuit_id: subcircuit?.subcircuit_id ?? undefined,
+ pcb_group_id: this.getGroup()?.pcb_group_id ?? undefined,
+ })
} else if (props.shape === "circular_hole_with_rect_pad") {
const pcb_plated_hole = db.pcb_plated_hole.insert({
pcb_component_id,
--- a/lib/IsolatedCircuit.ts
+++ b/lib/IsolatedCircuit.ts
@@ -287,10 +287,7 @@
}
getCoreVersion(): string {
- const [major, minor, patch] = pkgJson.version.split(".").map(Number)
- // We add one to the patch version because the build increments the version
- // after the build (it's a hack- won't work for major releases)
- return `${major}.${minor}.${patch + 1}`
+ return pkgJson.version
}
async preview(
--- a/lib/utils/autorouting/getSimpleRouteJsonFromCircuitJson.ts
+++ b/lib/utils/autorouting/getSimpleRouteJsonFromCircuitJson.ts
@@ -289,16 +289,6 @@
}),
)
- // Add every equivalent ID from the shared connectivity map to each obstacle.
- for (const obstacle of obstacles) {
- const additionalIds = obstacle.connectedTo.flatMap((id) =>
- sharedConnMap.getIdsConnectedToNet(id),
- )
- obstacle.connectedTo = [
- ...new Set([...obstacle.connectedTo, ...additionalIds]),
- ]
- }
-
// Build mapping from source_port_id to internal connection ID for interconnects
const internalConnections = db.source_component_internal_connection.list()
const sourcePortIdToInternalConnectionId = new Map<string, string>()
@@ -351,6 +341,18 @@
}
}
}
+ }
+
+ // Classify internal links before expanding aliases: another pad on the same
+ // net must not make fixed copper or a plane assignable to unrelated nets.
+ // Add every equivalent ID from the shared connectivity map to each obstacle.
+ for (const obstacle of obstacles) {
+ const additionalIds = obstacle.connectedTo.flatMap((id) =>
+ sharedConnMap.getIdsConnectedToNet(id),
+ )
+ obstacle.connectedTo = [
+ ...new Set([...obstacle.connectedTo, ...additionalIds]),
+ ]
}
// Calculate bounds
--- a/lib/components/primitive-components/Group/Group.ts
+++ b/lib/components/primitive-components/Group/Group.ts
@@ -882,6 +882,11 @@
subcircuitComponent: this,
})
simpleRouteJson.allowViaInPad = autorouterConfig.allowViaInPad
+ if (autorouterConfig.traceClearance !== undefined) {
+ simpleRouteJson.defaultObstacleMargin = distance.parse(
+ autorouterConfig.traceClearance,
+ )
+ }
const { autorouting_result } = await fetchWithDebug(
`${serverUrl}/autorouting/solve`,
@@ -1497,6 +1502,11 @@
routingPhasePlan.drcTolerances,
)
simpleRouteJson.allowViaInPad = phaseAutorouterConfig.allowViaInPad
+ if (phaseAutorouterConfig.traceClearance !== undefined) {
+ simpleRouteJson.defaultObstacleMargin = distance.parse(
+ phaseAutorouterConfig.traceClearance,
+ )
+ }
const getPrecomputedRoutingResult = usesPreviousStageOutput
? undefined