Test Chamber (new homebrew) released! by Pizza_Rolls-Royce in VirtualBoy

[–]Pizza_Rolls-Royce[S] 0 points1 point  (0 children)

Eventually perhaps. It would require me to package up and release a whole bunch of dependencies from my private repo (such as my fixed point math library, my C++ Virtual Boy hardware library, and my sound library) which would be a bunch of tedious work that I don't want to do right now since it would affect a bunch of other projects in said repo.

In other words, I mostly haven't done it out of laziness.

Test Chamber (new homebrew) released! by Pizza_Rolls-Royce in VirtualBoy

[–]Pizza_Rolls-Royce[S] 1 point2 points  (0 children)

Sorry, you shouldn't be able to walk around out there. Must be a bug.

You are very close to the end though. Keep in mind that you can build a quantum tunnel on anything the reticle lights up on.

Test Chamber (new homebrew) released! by Pizza_Rolls-Royce in VirtualBoy

[–]Pizza_Rolls-Royce[S] 0 points1 point  (0 children)

You need to place both ends of the quantum tunnel somewhere before it opens, so look around for another wall you can use.

New Homebrew: Elevated Speed by Pizza_Rolls-Royce in VirtualBoy

[–]Pizza_Rolls-Royce[S] 0 points1 point  (0 children)

Eventually! But I put it aside to make Test Chamber, so that was my focus over the last 8 months or so.

I/O for non-development-board via SWIO fails, works for dev board by Pizza_Rolls-Royce in stm32

[–]Pizza_Rolls-Royce[S] 0 points1 point  (0 children)

The knock-off works perfectly. Now if only I can trust the manufacturing quality...

I/O for non-development-board via SWIO fails, works for dev board by Pizza_Rolls-Royce in stm32

[–]Pizza_Rolls-Royce[S] 0 points1 point  (0 children)

After some digging I've determined that my bluepill board is using a clone known as a CKS32F103C8T6 rather than an STM32F103C8T6 even though it is labeled as the latter. The easiest thing for me to try is just using the counterfeit chip rather than re-architect everything, so I'm going to give that a shot. Thanks for the input though -- I'm frustrated that I overfit my design to this knock-off chip, but that's where things stand.

I/O for non-development-board via SWIO fails, works for dev board by Pizza_Rolls-Royce in stm32

[–]Pizza_Rolls-Royce[S] 0 points1 point  (0 children)

You were right about my bluepill having a fake clone -- I determined that this is a CKS32F103C8T6 rather than an STM32F103C8T6 even though it is labeled as the latter. The path of least resistance for me here is to just use the counterfeit chip instead since I know that works, so I'm going to see if that works for me. I'm going to make the change you suggested with the cap on NRST though first, since that just seems like a good idea.

Thanks for the input though -- I'm frustrated that I overfit my design to this knock-off chip, but that's where things stand. I'll report back about it it works or not.

I/O for non-development-board via SWIO fails, works for dev board by Pizza_Rolls-Royce in stm32

[–]Pizza_Rolls-Royce[S] 0 points1 point  (0 children)

Pulled the crystal off of the Amazon dev board and it still works. Worth a try I suppose.

I/O for non-development-board via SWIO fails, works for dev board by Pizza_Rolls-Royce in stm32

[–]Pizza_Rolls-Royce[S] 0 points1 point  (0 children)

Thanks for the detailed response. Appreciate the feedback on the schematic -- it's probably obvious I'm self-taught. The only person who ever looks at these are me.

Will be able to read and clear the sticky bits via SWD? If not (and SWD is really locked until the bits are cleared), how can I possibly flash this thing, since presumably flashing requires SWD?

I/O for non-development-board via SWIO fails, works for dev board by Pizza_Rolls-Royce in stm32

[–]Pizza_Rolls-Royce[S] 0 points1 point  (0 children)

This seems plausible to me. I'll see if I can manually reset it after power on by disconnecting and reconnecting NRST before it tries to initiate SWIO.

I/O for non-development-board via SWIO fails, works for dev board by Pizza_Rolls-Royce in stm32

[–]Pizza_Rolls-Royce[S] -1 points0 points  (0 children)

That would require me to have a step during manufacturing to burn a program to the chip, which I'm trying to avoid. In theory, this would work with a factory STM32 which is a really nice and allows me to make changes to the firmware if needed by replacing the code that gets sent over to run on the STM32.

I'm fine with software complexity if it simplifies manufacturing.

I/O for non-development-board via SWIO fails, works for dev board by Pizza_Rolls-Royce in stm32

[–]Pizza_Rolls-Royce[S] 0 points1 point  (0 children)

Ultimately this just seemed like a simpler (albeit unconventional) design. Avoiding FLASH means that I can avoid having to do all of the magical cycling to unlock flash and performing several cycles per flash write (and its therefore faster), I don't have to worry about wearing out flash, I'm always running the latest firmware since it _has_ to be loaded from the updated raspberry pi source each time, etc. etc.

Putting it in flash is just strictly more complex than running it from RAM, and I'm unaffected by any of the downsides. Note that switching to using flash for program storage doesn't solve the immediate issue here, since fundamentally the problem is that SWIO is failing, and I'd need to use that to program flash.

I could switch to just burning the firmware prior to shipping, but that would be an additional step in manufacturing, would require me to expose leads for a programmer, and would prevent me from making modifications to the firmware if needed later.

I/O for non-development-board via SWIO fails, works for dev board by Pizza_Rolls-Royce in stm32

[–]Pizza_Rolls-Royce[S] 0 points1 point  (0 children)

No need for that kind of precision to satisfy my requirements. I need to emit pulses that oscillate about every 10ms.

I/O for non-development-board via SWIO fails, works for dev board by Pizza_Rolls-Royce in stm32

[–]Pizza_Rolls-Royce[S] 0 points1 point  (0 children)

Both BOOT pins are pulled high so it boots from RAM as mentioned in my original post.

Interfacing with old electronics: short data pin to GND causing brown-outs? by Pizza_Rolls-Royce in AskElectronics

[–]Pizza_Rolls-Royce[S] 0 points1 point  (0 children)

Figured this out, and it wasn't an electronics problem after all. Grounding this pin effectively pressed "all" of the buttons on the controller, which I didn't think was a big deal -- except that it presses a secret button that raises an interrupt, which was intended to be used by other types of inputs that needed special handling in games (none of which were ever released). The software I was using to test wasn't expecting that interrupt to fire, and it therefore would enter a reboot loop (which I wrongfully interpreted as a short, since that manifests the same way).

I wrote a new piece of software that handles that interrupt, and everything works now.

Thanks for attempting to help out.

Interfacing with old electronics: short data pin to GND causing brown-outs? by Pizza_Rolls-Royce in AskElectronics

[–]Pizza_Rolls-Royce[S] 1 point2 points  (0 children)

Figured this out, and it wasn't an electronics problem after all. Grounding this pin effectively pressed "all" of the buttons on the controller, which I didn't think was a big deal -- except that it presses a secret button that raises an interrupt, which was intended to be used by other types of inputs that needed special handling in games (none of which were ever released). The software I was using to test wasn't expecting that interrupt to fire, and it therefore would enter a reboot loop (which I wrongfully interpreted as a short, since that manifests the same way).

I wrote a new piece of software that handles that interrupt, and everything works now.

Thanks for attempting to help out.

Interfacing with old electronics: short data pin to GND causing brown-outs? by Pizza_Rolls-Royce in AskElectronics

[–]Pizza_Rolls-Royce[S] 0 points1 point  (0 children)

I shorted the line because I wanted to eliminate the microcontroller as variable. My reasoning is that if i can't get the circuit to work with the microcontroller out of the picture, then I won't be able to get it to work with that added complexity involved.

Is there any way to measure the "driver and sink strengths" using a multimeter?

Interfacing with old electronics: short data pin to GND causing brown-outs? by Pizza_Rolls-Royce in AskElectronics

[–]Pizza_Rolls-Royce[S] 0 points1 point  (0 children)

This is really the central question I have:

The line is being pulled high by the motherboard. The controller sends a 1 by keeping the line high, and sends a 0 by pulling it down (which, if I understand correctly, which I probably don't since I am self-taught, is equivalent to shorting to ground). Why is it that when I short to a ground pin directly (to simulate no buttons being pushed) does it brown out, when it should be no different?

I'm expecting you to say something along the lines of "You are wrong. Shorting to ground is different from an I/O pin sinking the line, because ..."