This is just a bunch of random information and links to stuff related to the Micro SwinSID
- SwinSID is designed for 8580 compability. It supports all 8580 combined waveforms and has comparable filter response.
- The new SwinSID is designed to run at 32MHz and has higher 41,6KHz sampling rate. This means 30% lower distortions and improved sound of filter and noise waveform. For best overclocking results i suggest using ATMEGA88PA - new version of ATMEGA88, built with new manufacturing process. Crisp's prototype runs fine with 40MHz clock with this chip, while standard ATMEGA88 hangs just after 32MHz.
- At 24MHz SwinSID can run up to 1MHz bus or a bit more, with 32MHz it ends at 1,5MHz I suppose. There is small chance to work with C16 without additional buffers.
- Micro SwinSID PCB produces sound by PWM modulation and it is possible that your amplifier is sensitive to the high frequencies passed by the internal (low-quality) lowpass filter in the C64. I tested PWM output on my TV and works without any hissing, Crisp also didn't experience this. Please include mp3 recording of sound output.
The volume level is limited mainly by R3 resistor. Remove it if you have old 6581 board (There is bug in my PCB description where it says opposite)
- SwinSID works asynchronously and writing is triggered by falling edge of the CS signal.
- The R3 controls only output volume level and it is not related to this bug. This bug exists in all SwinSID revisions and it affects very small part of tunes. SwinSID is checking for envelope triggering only once per sample and when then registers are changed inbetween you can hear randomly triggering or fading volume level. To fix this checking must be done every register access and this requires more processing power. With faster 32MHz CPU there is a chance to implement this in further firmware updates for ATMega88.
- Micro SwinSID uses two 8bit PWM channels running at 16MHz carrier frequency. This gives 41,6KHz sampling rate with 16bit resolution thanks to 2bit DAC at output.
- You should remove R3 resistor when replacing old 12V 6581 SID or if volume level is very low.
- March 14th 2012 - Current swinsid firmware generates sound that is synchronized with 32MHz oscillator, not the C64 CPU clock, so it always plays the same pitch on both PAL and NTSC systems. 32MHz clock is divided to get 1.0 MHz base frequency used to update pitch registers, while PAL SID is clocked at 0.985 MHz and NTSC at 1.02 MHz. This is the reason why it sounds a little bit out of tune when comparing SwinSID to SID. It is not a big deal when listening to music or playing games but this may be a problem when using SwinISD with other instruments or real SID.
There are two method to fix this: One is to change sampling frequency but this will give a little bit of aliasing effect. And the second method requires more CPU power to recalculate pitch value.
- TDA1543 DAC is realy hard to find so I recommend to use ATMEGA88 which is easier to build and has reduced aliasing distortions thanks to higher samplerate and CPU speed.
Well, Atmel don't make it easy to find this info out, but after spending a lot of time investigating and buying different chips, I can tell you that same letter coded chips in different sizes should work identically, i.e. ATMega88PU is identical to the 168PU (of course except flash size), but the A's P's and PA's are different in some small and usually meaningless way, except when you are pushing the envelope (excuse the pun :P) or trying to figure out why something isn't working and then it can be this 'gotcha'. A good source of info for the differences are the AVRxxx notes which talk about migrating from ATMega2313 to ATMega2313A for example, the only problem being that they don't seem to be entirely comprehensive. And yes, by the way, the older chips are the ones without letters.
In order of age from oldest to newest you have:
ATMega88/168/328 - original versions 8K/16K/32K flash. These are also marked up as ATMegaxxxPU (see below!)
ATMega88P/168P/328P - improved versions, better silicon and better speed voltage range, bug fixes.
ATMegaxxxA - again improved versions, better silicon and better speed voltage range, bug fixes.
ATMegaxxxPA - again improved versions, better silicon and better speed voltage range, bug fixes.
Warning: I found out that PU does not mean 'P' it means the chip number without any letters ( for example ATMega88 ). The PU in this case just means its a DIP/DIL package.
There are also other versions around, namely the ones with a 'V' suffix. These are low power capable, and therefore also have lower clock capability. AFAIK they are obsolete now because the P chips and later can also do the same low power mode, and yet reach the higher rated clockspeed.
Going back to the original question that prompted your reply, if the OP can find ATMega168PA at a better price than the 88PA (entirely possible in volume driven pricing models today) then go for it. However I bet you won't find a ATMega328PA in Europe very easily - they are all being gobbled up by Arduino fanboys (I had to order a bulk amount of 328P's from the US last week).
That being said (this must be my record for my first forum post any where), I should build a SwinSID micro this week sometime and test these 88/168/328P's I have at 32Mhz...