Weird screen issue, please help!

I’ll add a note to make it more clear.

Yes it will for Leonardo / Micro (and other Atmega32u4 boards that have the same pins available like Itsybitsy 32u4 and Teensy 2.0).

Note that an Arduino Micro has the Rx and Tx LED are inverted. So those LEDs will be on when they are supposed to be off and vice versa when uploading original hex files.

1 Like

@Mr.Blinky, So I finally have my flash arrived.
Flashed an example from your repository.
It works but I have an issue with the boot-loader menu.
I can see only a splash screen. But after doing any navigation screen turns black.
However navigation actually occurs on the background (its just not visualised ) because I can burn a game from flash and play it.
My set up is: ProMicro (Standard wiring), ssd1309 screen, CS outs of flash and screen are connected to transistor (as mentioned a couple of comments above).
For some reason 2SA1015 transistor didn’t work for me so I found one with a similar parameters (russian KT209K).
Can not figure out where is the problem. Does anyone have a working prototype with a transistor?
Here is how my navigation looks like at the moment:

Just to double check: CS pin of the flash card should be connected to the 0 PORTD2 of the ProMicro and to base pin of the transistor via 10K resistor; and CS pin of the screen should be connected to the collector pin. Is it correct?

Never mind the question above. I had enough of those playings with a transistor and resistors so solved it radically. I followed @Cheungbx example and soldered 3 additional wires directly to the chip on ProMicro. Now everything works like a charm.
Just curious if anyone has a working prototype with a transistor…
Big thanks to Mr. Billy Cheung and to the whole community!!!

FYI you also need a pullup resistor (10k should be fine) between the collector and positive supply or the transistor wont work.

@sjm4306, you mean like this?

Thanks for the reply. Now there is no need in scheme with a transistor… Solution with soldering three tiny wires is much more elegant.

Oops, I misread and thought you were using an npn as a rtl inverter. The way you originally had it wired is correct for a pnp transistor. You may want to double check with the datasheet for your specific transistor though that the 10k base resistor is enough to bias the base with enough current to switch the transistor on in the saturation region (you may have to decrease the resistance if it isn’t turning on fully).

Sorry for the late reply. Good to hear you’ve got your homemade Arduboy working by breaking out the extra wires.

The transistor inverter is pretty general and was made as a sugestion at the time and I didn’t proof tested it.

This evening I found some time to test it and build a Pro Micro SSD1309 and flashcart on a breadboard. I don’t have a BC557(B) or 2N3906 so I used a BC309B and S8850 for testing.

It didn’t work as expected here either. But by reducing the base resistor value to 1K (for S8850) and 470 Ohm (BC309B) it works fine. blurry proof video below.

My appologies for causing any inconvenience

https://youtu.be/ScCT8xCNRJg

1 Like

Thanks for the reply, @Mr.Blinky. Good to hear that it works and someone can benefit from this. In the end I’m glad that I broke out those wires. Currently I’m in process of soldering everything permanently on prototype board after total verification of all functions.

Hi it looks like I’m in a similar boat to @gas . Ive got my ssd1309 screen wired up to a arduino pro micro standard wiring, Ive also got a flash cart wired up with a TXB0104 level shifter.

The problem I have is the menu on the flash cart is invisible but you can navigate it and flash a new game to the pro micro.

@gas mentions using a transistor but I can’t work out where to put it or do I even need it?

So you have connected the OLED chip select line to GND ? In which case I would expect you to see some garbage/distorted screen because all the data written to flash would also be written to the display.

The thing is both flash and the display share the same SPI bus. only one of the devices should be active at one time.

With the standard wiring the OLED chip select line is not available and the OLED chip select is connected to GND causing the display to be always selected. This is fine when there is no flash chip used. But when a flash chip is connected the OLED chip select must be inactive high whenever the flash is selected.

A way to achieve this is by connecting an inverted flash chip select to the OLED chip select. An inverter can be made out of a transistor or by using a (single gate) inverter chip.

here’s a schematic for transistor solution

Thanks for getting back to me so quick @Mr.Blinky does the CS on the flash chip still have to be connected to RX as well as the transistor?

Yes if you use RX as flash chip select (CART_CS) then you connect it to the transistors base resistor and the flash chips chip select pin. The schematic is just for generating an inverted chip select for the OLED display.

Ah I see, Ive only got a 2n2222 on hand would that work. Is VCC connected to the emitter the CART_CS connected to Base and the Collector connected to GND?

You could try (not sure if output would get low enough). You’ll have to wire it up like this (Vs == CART_CS and Vo == OLED_CS)

@facelessloser, I would really recommend you to give a try braking out three additional wires directly to chip - it’s quite easy and works great.
Check those out: ArduWideBoy + InchBoy
The other problem with alternative wiring is that you wont be able to patch binaries for ssd1309 screen. So the solution is three additional wires + selecting Leonardo/Micro board while flashing.
Good luck.

1 Like

That depends on your soldering skills ofcourse. But It’s easier to do if you have a Pro Micro with a big chip (See bottom right in this image )

The one with a big chip available here for example https://www.aliexpress.com/item/32846084988.html

So @Mr.Blinky I tried the 2n2222 but It didn’t work, the arduboy couldn’t see the flash cart. Ive ordered some 2n3906 transistors so will try again when they arrive.

@gas Oh wow that is some handy soldering, What do you connect these pins too?

In addition to that you could also consider using a Teensy 2.0 clone. Check the above image for advantages/ disadvantages.

@facelessloser, well, I soldered additional tiny wires directly to chip’s pins “Digital Pin 11(PB7)”, “Digital Pin 12(PD6)”, “Digital Pin 13(PC7)” according to this pinout: https://www.arduino.cc/en/Hacking/PinMapping32u4
I used them for “Arduboy Leonardo/Micro” wiring according to @Mr.Blinky 's Pin Wiring Table here: https://github.com/MrBlinky/Arduboy-homemade-package#pin-wiring-table.
Respectively PB7 (11 PORTB7) as Green led. PD6 (12 PORTD6) as OLED CS and PC7 ( 13 PORTC7) as speaker pin 2.
All other required pins are originally broken out on ProMicro.