| adrian ( @ 2006-01-01 22:47:00 |
SID board: update
* two SID chips are now wired up and working
* LCD code mostly debugged: they're slow pieces of crap to talk to
* rotary encoder mostly debugged: they're annoying to poll. I can easily rewire the connector to wire both to seperate interrupt pins and do them off interrupts which I may end up doing.
The main problems seen so far:
* having to talk at 1mhz to the SID and even slower (!) to the LCD means my 4mhz/8mhz microcontroller will spend a lot of time executing NOP instructions ..
* .. unless I cleverly start interleaving work with the SID/LCD updates.
* I'm out of pins to implement the keypad and I have no pins whatsoever to implement LEDs. The plan is to steal a couple of leftover bits for a latch for 8/16 LEDs and a bit to implement "keyboard" enable, doubling up on the SID databus. I can't use the LCD data bus because the LCD doesn't do high-impedance: it doesn't have a "chipselect" line, just some "enable" line which valid data exists on high, falling edge and part low. Its trippy.
* only having 256 bytes of RAM is cramping my style: especially since I'm using 64 bytes to store the SID 'registers' so I can twiddle things without reading from the chip (since almost all registers are write-only) - yes, this does mean I'm actually using /global variables/ almost everywhere so I don't have to worry about a stack (and thus will have the compiler complain I'm out of memory, rather than the thing randomly wrapping and writing garbage where it shouldn't be.)
What I'll do differently when I route an actual board:
* I'll use shift-registers to talk to the LCD and SIDs. This means I don't have to sprinkle as many NOPs around as I'll be spending time latching in data to the shift registers. It does mean that the SID and LCD IO take 4 bits each: instead of the 8 + 8 + 5 bits they're taking now.
* More LEDs
* Probably implement a couple of analog sliders using the AVR ADC.
* Actually start writing some music with the thing.
I'll take some photos when I've built the keypad and LED daughterboard and have some software to show for it.
* two SID chips are now wired up and working
* LCD code mostly debugged: they're slow pieces of crap to talk to
* rotary encoder mostly debugged: they're annoying to poll. I can easily rewire the connector to wire both to seperate interrupt pins and do them off interrupts which I may end up doing.
The main problems seen so far:
* having to talk at 1mhz to the SID and even slower (!) to the LCD means my 4mhz/8mhz microcontroller will spend a lot of time executing NOP instructions ..
* .. unless I cleverly start interleaving work with the SID/LCD updates.
* I'm out of pins to implement the keypad and I have no pins whatsoever to implement LEDs. The plan is to steal a couple of leftover bits for a latch for 8/16 LEDs and a bit to implement "keyboard" enable, doubling up on the SID databus. I can't use the LCD data bus because the LCD doesn't do high-impedance: it doesn't have a "chipselect" line, just some "enable" line which valid data exists on high, falling edge and part low. Its trippy.
* only having 256 bytes of RAM is cramping my style: especially since I'm using 64 bytes to store the SID 'registers' so I can twiddle things without reading from the chip (since almost all registers are write-only) - yes, this does mean I'm actually using /global variables/ almost everywhere so I don't have to worry about a stack (and thus will have the compiler complain I'm out of memory, rather than the thing randomly wrapping and writing garbage where it shouldn't be.)
What I'll do differently when I route an actual board:
* I'll use shift-registers to talk to the LCD and SIDs. This means I don't have to sprinkle as many NOPs around as I'll be spending time latching in data to the shift registers. It does mean that the SID and LCD IO take 4 bits each: instead of the 8 + 8 + 5 bits they're taking now.
* More LEDs
* Probably implement a couple of analog sliders using the AVR ADC.
* Actually start writing some music with the thing.
I'll take some photos when I've built the keypad and LED daughterboard and have some software to show for it.