Features:
Stereo or Dual sid possible.
Dual pin pwm, 5bit+5bit for 10bit with less r/c filtering.
X/Y paddle adc.
Midi in/out, uses $d41d and $d41e
wildcard at $d41f, like small program download/firmware upload.
and for permanent settings.
Pad 5 and C(with analog) can be used for diy stuff,
like a wire for dual sid or a wire to Restore key that if you hold it down for 2sec it will pull C64 Reset low etc.
I will send a way for 3 pcb proto today, should have something built in 2 weeks,
then later I will start selling them at $29, software probably will be a group project.
my new SID board based on ST 8bit mcu
Moderator: Lemoners
- tonyp12
- Joe Blade
- Posts: 153
- Joined: Sat Jun 23, 2012 8:05 pm
- Location: Fort Lauderdale, FL
- Age: 54
- tonyp12
- Joe Blade
- Posts: 153
- Joined: Sat Jun 23, 2012 8:05 pm
- Location: Fort Lauderdale, FL
- Age: 54
Maybe you have a good sid and still want to use it,
stack it, as I edited it so it now got through holes.
But what to do about the Capacitor that is on the audio out on stsid-r/c ?,
it will filter the original sid's audio-out a little probably
Put a 220ohm series resistor on stsid as to isolate the cap a little?
I plan to use 740ohm & 0.01uf for a cut off freq of 21'518 Hz
Should I put a 1K pull-down on audio-in, as I plan to use that pin as
audio2-out, starting running out of space even for a 0603.
stack it, as I edited it so it now got through holes.
But what to do about the Capacitor that is on the audio out on stsid-r/c ?,
it will filter the original sid's audio-out a little probably
Put a 220ohm series resistor on stsid as to isolate the cap a little?
I plan to use 740ohm & 0.01uf for a cut off freq of 21'518 Hz
Should I put a 1K pull-down on audio-in, as I plan to use that pin as
audio2-out, starting running out of space even for a 0603.
Last edited by tonyp12 on Fri Oct 18, 2019 10:56 pm, edited 1 time in total.
- Zippy Zapp
- Jumpman
- Posts: 3734
- Joined: Wed Aug 14, 2013 4:15 pm
- Location: USA,CA
- tonyp12
- Joe Blade
- Posts: 153
- Joined: Sat Jun 23, 2012 8:05 pm
- Location: Fort Lauderdale, FL
- Age: 54
Sent to Oshpark (in USA) so now wait a week, first class mail from Oregon to Florida is super fast, normally takes 2days, so I should have it in 8-10 days.
Stats:
MCU 16Mhz STM8S003K3T
8K flash, 1K ram, 128bytes eeprom.
This 8bit mcu have many of the features of 16/32bit mcu.
20bit address space so no page flipping 256byte blocks.
32bit opcode, but similar to 6502 simplicity so I think writing software in
assembler for speed and time determinized.
PWM audio:
Though 16bit is possible, even at 16MHz a period would be 256Hz lol
10bit would be 16KHz period, reasonable but rms hum or freq cut-off in the r/c filter.
8bit a very good 65KHz period, but resolution is... 8bit
So 9bit:
Doubles the resolution but use a gpio as highbit to the resistor adder,
and 8bit pmw for the lower bits.
Or could do 6bit pwm + 6bit pwm as highbit gpio can also be on the same timer as compare2.
This timer only have 3 compares, so stereo would only be 9bit on one of the channels.
This mcu have another timer with 4 channels, but due to pin layout trying to be so data and address lines up on ports in a continues order, I did not try this at this reversion.
Stats:
MCU 16Mhz STM8S003K3T
8K flash, 1K ram, 128bytes eeprom.
This 8bit mcu have many of the features of 16/32bit mcu.
20bit address space so no page flipping 256byte blocks.
32bit opcode, but similar to 6502 simplicity so I think writing software in
assembler for speed and time determinized.
PWM audio:
Though 16bit is possible, even at 16MHz a period would be 256Hz lol
10bit would be 16KHz period, reasonable but rms hum or freq cut-off in the r/c filter.
8bit a very good 65KHz period, but resolution is... 8bit
So 9bit:
Doubles the resolution but use a gpio as highbit to the resistor adder,
and 8bit pmw for the lower bits.
Or could do 6bit pwm + 6bit pwm as highbit gpio can also be on the same timer as compare2.
This timer only have 3 compares, so stereo would only be 9bit on one of the channels.
This mcu have another timer with 4 channels, but due to pin layout trying to be so data and address lines up on ports in a continues order, I did not try this at this reversion.
-
- Jumpman
- Posts: 4665
- Joined: Tue May 15, 2012 4:31 am
- Location: LHC, AZ
- Age: 58
- Contact:
-
- Bionic Granny
- Posts: 8
- Joined: Mon Jan 10, 2005 1:50 pm
- Age: 49
- hugo_nl
- Joe Blade
- Posts: 273
- Joined: Wed Jun 20, 2018 6:40 am
- Location: The Netherlands
- Age: 48
It looks like it's just a pass-thru -- I am assuming the chip shoves the incoming MIDI packets into a ring-buffer. Reading from the specified address reads it, one byte at a time (been there, done that). The logic to decode the MIDI packets (decoding channel information, process MIDI commands, SysEx messages et cetera) still needs to be done by a C64 program. (I am incidentally working on a project that decodes MIDI on a MCU, delivering updates to SID I/O space only, so no heavy lifting is required on the C64 itself other than just copying values over.)
I hope the MIDI buffers have an adequate size -- MIDI is not the most compact protocol, too small a buffer and it gets overflowed real fast.
Edited to add I also suspect that having just a single byte for MIDI in may not be enough. Imagine $F7 is on it, and it gets read by a program. If no new data has come in yet, how is the program going to know when there is new valid data in the buffer? It cannot assume that by reading $00 there is no data, because $00 could be a valid MIDI data payload...
So it is probably a good idea to reserve an extra byte for MIDI in/out status flags (bit 0 = input buffer has data, bit 1 = output buffer full, and more bits for other status information).
I hope the MIDI buffers have an adequate size -- MIDI is not the most compact protocol, too small a buffer and it gets overflowed real fast.
Edited to add I also suspect that having just a single byte for MIDI in may not be enough. Imagine $F7 is on it, and it gets read by a program. If no new data has come in yet, how is the program going to know when there is new valid data in the buffer? It cannot assume that by reading $00 there is no data, because $00 could be a valid MIDI data payload...
So it is probably a good idea to reserve an extra byte for MIDI in/out status flags (bit 0 = input buffer has data, bit 1 = output buffer full, and more bits for other status information).
- tonyp12
- Joe Blade
- Posts: 153
- Joined: Sat Jun 23, 2012 8:05 pm
- Location: Fort Lauderdale, FL
- Age: 54
Yes just having 0x00 or 0xFE for midi buffer empty is probably not going to work.
So all reads will start with a 1byte header, or use the IRQ out hocked up to a CIA.
But one problem I could see is that the 16MHz mcu is not fast enough to reply back on address reads as the 6510 expect data-bus to be set in ~100ns (I guess)
I guess most sid tunes don't do read-n-modify on registers? just plan write?
Though I could see programs do reads on random generator register.
So all reads will start with a 1byte header, or use the IRQ out hocked up to a CIA.
But one problem I could see is that the 16MHz mcu is not fast enough to reply back on address reads as the 6510 expect data-bus to be set in ~100ns (I guess)
I guess most sid tunes don't do read-n-modify on registers? just plan write?
Though I could see programs do reads on random generator register.
-
- Jumpman
- Posts: 4675
- Joined: Sun Oct 28, 2018 12:46 pm
- Contact:
Who is online
Users browsing this forum: mik64 and 4 guests