-
Notifications
You must be signed in to change notification settings - Fork 6
Description
Don't you try to use RTS Flow Control pin of your (how can i see here https://youtu.be/jR-SqXLgBNo?si=fxcYasmZsukg4pLC&t=384) cheep pl2303hxd USB2TTL convertor?
As datasheet declare (at page 8 of https://cdn-shop.adafruit.com/datasheets/PL2303HX.pdf ) - it should have up to 384-byte (9.6lines of your VRAM) inbound buffer.
The others:
- FT232RL & CH340 chips has 128B (3.2 lines) https://ftdichip.com/wp-content/uploads/2020/08/DS_FT232R.pdf
- CH340B = 512B (12.8lines) as is answer by chineese ChatGPT about chineese uC
- CP2102 = 640B (16 lines) https://www.silabs.com/documents/public/data-sheets/CP2102-9.pdf
So you can hold flow (and interrupts) by default, and resume only between lines or frame back porch (when youre single ATmega328p have time to process it)
And so can make more compact "USB-serial to VGA devboard" just by soldering single 74HC166 atop of standart nano board.
This can be practicaly usefull
As example to connect direct youre mini VGA display
- To raspberyPi (as multiple solution) for cases like info display wall
- To some USB router under open-wrt, and pass to it some usefull metrics (may be with PS/2 input to controll it)
Btw: you can off every second frame and it affects only on screen brightness (i was test it)
The other way you can off every odd line in one frame and even in second (it free more "real" time treadoff from this brightness)
The frame switching also can be used for layers, and the most (IMHO) representative feature is to masking VRAM text line to 2 step brightness, by fading every second frame for all charaters witch sould (it expensive for memory, so it need save in some RLE struct) In fact it can ever use masked basic color for first frame and masked oposite color for second, to RLE 3 color text.
P.S. for do the masking is useful add a line buffer (witch preparing between lines) it is old console graphics techninque. For 320px@1bpp lines it take just 40B and between line you have enougth time to prepare it.
P.P.S. Above this if you add some biger line heght you can prepare x2 more, add freq.doubler by a flip-flop triggered on front and fall of clock and cast 16width chars (from prepared linear line buffer), or try more chars, but its harder cause of mem. Although may zip chars to 6bit format like SIXBIT DEC (Digital Equipment Corporation), or use space for some metrics overlay such us editor line counter and scrollbar
ld r26, X+ ; 2
; lpm r21, Z ; 0 (not need cause loading from prepared bufer)
out PORTD, r26 ; 1
out PORTB, r19 ; 1 next CLOCK will load px
out PORTB, r18 ; 1 now CLOCK will pump out the px (doubled rate)
ld r26, X+ ; 2 (+4 bit poped form shf reg)
; lpm r21, Z ; 0 (not need cause loading from prepared bufer)
out PORTD, r26 ; 1 (+2 bit poped form shf reg)
out PORTB, r19 ; 1 (+2 bit poped form shf reg and it is empty)
out PORTB, r18 ; 1 (+2 emtpy CLOCK a little increase gap between char)