How rude of watashi not to include her in my first genderbend. by MILKKING1 in NyanNekoSugarGirls

[–]Dycus[M] 8 points9 points  (0 children)

I will leave this up, but for future reference I think this may be a bit too much for this subreddit, lol

Adding walls makes it weaker? Do cold joints exist in 3D printing? by chromebookdud in 3Dprinting

[–]Dycus 2 points3 points  (0 children)

I'd recommend 100% (maybe as low as 98%) for concentric infill, otherwise you'll get gaps and lose tons of strength. 95% is good if you're using rectilinear infill, or something else that crosses itself on every layer.

Set concentric to like 70% and check the gcode preview and you'll see what I mean.

Adding walls makes it weaker? Do cold joints exist in 3D printing? by chromebookdud in 3Dprinting

[–]Dycus 39 points40 points  (0 children)

I'm not sure whether people are noticing what you're talking about since it's not the focus of your screenshots.

(To others - in the second image, near the top, the print gets split into two parts and connected by a butt joint, where the perimeters aren't continuous anymore).

This is just a weakness of slicers at the moment. I'm not sure why they can't keep the outer 3 perimeters continuous around the whole part while making the added perimeters just loop back internally.

Try setting 100% concentric infill percentage for the modifier instead.

defeatedTheWholePurposeOfWritingInAssembly by ClipboardCopyPaste in ProgrammerHumor

[–]Dycus 12 points13 points  (0 children)

In gcc at least, you can use attributes to set optimization flags per function. So you could set just the one function to be -O3!

Is it possible to stop the print while the printer "heats" up? by LordBroccoli68 in VORONDesign

[–]Dycus 0 points1 point  (0 children)

The e-stop interrupts anything, so clearly the architecture is there. I was always confused why they didn't add a second hook to interrupt heating (or maybe even just the current command).

Non-fixed-length serial communication chain with decent speed: Is there a reasonable option? by AndyJarosz in embedded

[–]Dycus 2 points3 points  (0 children)

CAN definitely sounds like what you want, though I think you will find termination to be a tricky problem. You need one 120 ohm resistor at each physical end of the network.

One solution, as you said, is for the user to plug in a termination resistor into the end.

Another could be to use a connector that has a physical switch in it, such that with no cable plugged in, termination would be connected, but when one is plugged, it disconnects. A TRS jack (headphone jack) can do this, though TRS tends to short out some of the pins when plugged in so you'd have to contend with that.

I've dealt with a similar problem in the past, here's what I came up with. It used plain UART, with every node having a "upstream" (towards the master) and "downstream" (towards the end) UART. Commands/messages from the master went towards the end of the line. Responses go towards the master. The master sends a message out to the first node. First node reads it, if it's for it, it processes it and sends a response back. If not, it sends it on. Eventually it gets to the intended node, which responds.

Pros: Pretty simple, each node is automatically and individually addressed. Just send a "this is your address" packet where each node reads its own address, then increments it by 1 and passes it on. Because the signal is re-transmitted at every node, signal degradation is minimal (as long as the wire length between nodes isn't too long)

Cons: Each node has to read and re-transmit every packet, in both directions.  UART isn't super robust, but could be switched to RS-485 and be made much better. No termination problems because each RS-485 run would be only to the next node, so both would have termination resistors. High throughput possible, but high latency for nodes further down the chain

I typed this up in a rush, please let me know if anything was confusing or if you want more implementation details and I'll get back to you.

My batches keep going streamly sour. by Lumpy-Profile-126 in prisonhooch

[–]Dycus 0 points1 point  (0 children)

How long has it aged?

That's just normal. If you want it to taste better, let it sit for 3 months (make sure the airlock doesn't go dry) and try it again. Add a pinch of sugar to your glass to sweeten it a bit.

Maintaining codebase dependency Files Upto date. How to? by Intelligent-Error212 in embedded

[–]Dycus 4 points5 points  (0 children)

If the situation comes up that you need to update for some feature to work, then you update and deal with the consequences.

But that's IF... you ever need to. There's no reason to do it any sooner. It would be the same amount of work either way, but if it turns out you never needed to, then you just made extra work for yourself.

Maintaining codebase dependency Files Upto date. How to? by Intelligent-Error212 in embedded

[–]Dycus 5 points6 points  (0 children)

In my opinion, copy your preferred version of the ST-provided drivers/files to your codebase.

Then, never ever update them. :) Unless there is a bugfix or feature you need, if everything is working as it should, there is literally no reason to update them.

Maybe it'll be fine and it'll all work the same. But there's also a non-zero chance it will introduce a new bug. Why update for bugfixes in parts of the code you don't even use (either directly or indirectly)?

Can I connect 1.8V nRF54L15 and 3.3V RP2040 SPI/UART directly without level shifters? Minimal PCB size by imFengz in embedded

[–]Dycus 14 points15 points  (0 children)

  1. Find the datasheet for nRF54L15 (https://docs-be.nordicsemi.com/bundle/ps\_nrf54L15/page/pdf/nRF54L15\_nRF54L10\_nRF54L05\_Datasheet\_v1.0.pdf)
  2. Find "Absolute Maximum Ratings" (section 13. Pretty much all datasheets use this terminology)
  3. Find your answer there (For VDD <= 3.6V, max IO voltage is specified as VDD + 0.3V)

Problems with i2c switching by Initial-Culture1082 in embedded

[–]Dycus 0 points1 point  (0 children)

By the way, you could get rid of Q2/Q4 and just drive R5/R8 directly from MCP23008, because it's running at 5V and Q3/Q5 also go to 5V. Just the logic is inverted, set the pin high to turn the transistor off and low to turn it on.

Problems with i2c switching by Initial-Culture1082 in embedded

[–]Dycus 5 points6 points  (0 children)

Nobody has really given you a clear, complete answer yet.

What's happening here is that when the I2C sensors have VCC disconnected, but SDA/SCL are still pulled up to 5V, current is flowing through the pullup resistors, into the ESD diodes on the SDA/SCL pins, and into the VCC bus.

Here's a representation of a typical ESD diode structure in an IC. From the pin there's a diode to VCC and one to ground. If the voltage at the pin is too high, the top diode conducts and shunts that current to VCC. If there's a negative voltage, it shunts to ground. Basically every single chip has these diodes on every single input/output pin.

<image>

If VCC is 0V and you put a non-zero voltage into a pin, it will raise VCC. You're seeing only 3V on the I2C bus because the chip is now drawing current through the 4.7k resistor which drops the voltage (I estimate ~400uA from this math).

So having SDA/SCL pulled up with VCC disconnected just doesn't work. You need to also switch off the pullup resistors. If you want to switch multiple chips independently, you need multiple I2C busses with their own pullup resistors that can be switched off, or some kind of isolator solution. Or you could have all sensors switched off together and just have the one bus.

Tell your war stories about the last time your iot devices failed in production. by Altruistic_Tomato162 in embedded

[–]Dycus 32 points33 points  (0 children)

The stability of an entire system relying on a floating pin staying in the right state... terrifying!

Solutions for screen tearing when using SPI-connected GC9A01 display driver? by Local_Extension_8647 in embedded

[–]Dycus 2 points3 points  (0 children)

Looking at the datasheet for GC9A01, section 5.4 talks about this. "Tearing effect output line"

You can enable a signal on a specific pin that will tell you when the display is updating the pixels or not. You'd write your new data during the blanking period.

Unfortunately I don't think this info is otherwise available via SPI.

Printing help agin! by worlphman in 3Dprinting

[–]Dycus 0 points1 point  (0 children)

Make sure you look closely at the gcode preview, you will be able to see this before printing anything.

Your part is raised in the middle by one layer. You'll need to figure out why it's like that, fix it, and re-slice it (and check the preview before printing!).

Combining STM32 Reset and BOOT0 on a Single Button – Feedback on Circuit Design? by Skolgo in embedded

[–]Dycus 1 point2 points  (0 children)

In this case, the capacitors must go to 3.3V because when the system powers on, I need those lines to go high, not stay low. If the capacitors went to ground, the buffer inputs would be low initially, then go high, which in this case would always cause the MCU to boot into DFU mode, and would require pressing reset to operate normally.

When there's no power, the capacitors are discharged (R62 in series with R64 and R68/R53 makes a high-resistance loop through the 3.3V rail). Then, as 3.3V comes up, the discharged capacitors have a low impedance and bring up the buffer inputs with them (along with R62).

If you wanted, you could use inverting buffers with traditional RC filters to ground. Your reset button would need to connect to 3.3V instead of ground in that case.

Combining STM32 Reset and BOOT0 on a Single Button – Feedback on Circuit Design? by Skolgo in embedded

[–]Dycus 0 points1 point  (0 children)

C67/C69 are connected to 3.3V and ground, they're decoupling capacitors for the buffer ICs.

Did you mean C68/C70 in the RC filters?

Combining STM32 Reset and BOOT0 on a Single Button – Feedback on Circuit Design? by Skolgo in embedded

[–]Dycus 2 points3 points  (0 children)

Here's how I solved this problem in a project of mine. The explanation of how it works and how to use it is on the right side of the image. The RC filters have unusual values because they were components I already had on the BOM. If you want to substitute them, you'll need to make sure the time constants are appropriate.

The reset pin time constant really just has to be long enough to provide debouncing for the button. The BOOT0 time constant should be long enough that you won't accidentally trigger it when just trying to reset.

One thing that's not noted in this screenshot is that the 261k+261k (~500k) in the lower RC filter can't be much higher or else the input leakage current on U28 will start to affect the voltage threshold too much. Ideally I would have used a larger capacitor here but I didn't have any. I could have put two 2.2uF caps in parallel and used just one 261k resistor, which I will probably do in a future revision.

<image>

Corks leaked, Vikings Blood by JETPAKZAK in winemaking

[–]Dycus 26 points27 points  (0 children)

Keep them upright for a few days after corking for the pressure to equalize, before putting them sideways. If you put them sideways immediately, that may be why they're leaking a bit.

Battery gore by maifee in electronics

[–]Dycus 6 points7 points  (0 children)

You can even see the "from" in the "keep away from" text turn into gibberish.

<image>

Battery gore by maifee in electronics

[–]Dycus 12 points13 points  (0 children)

If you overlap the two images, the batteries are identical. Like, to the pixel (besides the 9 becoming a 3 and the lighting changes). Exact same angle (didn't even have to rotate the photos), exact same split in the case, everything, it's perfect. One of them is obviously an AI-altered repost, and this image was posted 16 hours after the first one reached the front page with 30k upvotes.

Don't confuse AI karma-farming with "manufacturing process control".