SID mos6581 interfacing with arduino
heya, have tried best, cannot interface sid on own, call help: there has done before? appreciate schematics , or code, because doesn't seem work (or it's hardware...)
code: [select]
//define pin names
#define ad4 a0
#define ad3 a1
#define ad2 a2
#define ad1 a3
#define ad0 a4
#define cs a5
#define d 4
#define mhz 9
#define cp 6
#define res 7
//optional input
#define dcalc 2
#define ccalc 3
void setup(){
pinmode(ad0,output);
pinmode(ad1,output);
pinmode(ad2,output);
pinmode(ad3,output);
pinmode(ad4,output);
pinmode(cs,output);//inverted
pinmode(d,output);
pinmode(cp,output);
pinmode(res,output);//inverted
pinmode(dcalc,input);
pinmode(ccalc,input);
ddrb = _bv(ddb1); //set oc1a/pb1 output (arduino pin d9, dip pin 15)
tccr1a = _bv(com1a0); //toggle oc1a on compare match
ocr1a = 7; //top value counter
tccr1b = _bv(wgm12) | _bv(cs10); //ctc mode, prescaler clock/1
delay(5);
//set inverted pins
digitalwrite(cs,high);
digitalwrite(res,high);
//clear sid's registers
digitalwrite(res,low);
delay(2);//make sure they're empty
digitalwrite(res,high);
serial.begin(9600);
//default preset
regwrite(0x00,0xc7);//test tone c3 (least-significant)
regwrite(0x01,0x84);// (most-significant)
regwrite(0x02,0x50);//pulsewidth (least-significant)
regwrite(0x03,0x01);// (most-significant)
regwrite(0x04,b01000001);//gate,square
regwrite(0x05,0xa8);//attack,decay
regwrite(0x06,0xa9);//sustain,release
}
void loop(){
regwrite(0x04,b01000001);//gate,square
delay(500);
regwrite(0x04,b00100000);//gate=0,saw
delay(500);
}
void regwrite(int address, int data){
digitalwrite(ad0,bitread(address,0));
digitalwrite(ad1,bitread(address,1));
digitalwrite(ad2,bitread(address,2));
digitalwrite(ad3,bitread(address,3));
digitalwrite(ad4,bitread(address,4));
for(int i=0;i<=7;i+=1){
digitalwrite(d,bitread(address,i));
digitalwrite(cp,high);
delaymicroseconds(10);
digitalwrite(cp,low);
delaymicroseconds(10);
}
digitalwrite(cs,low);//cs inverted
delaymicroseconds(10);
digitalwrite(cs,high);
}
did last year , working quite : http://fullmaj.rd-h.fr/wiki/doku.php?id=sidaster
Arduino Forum > Using Arduino > Project Guidance > SID mos6581 interfacing with arduino
arduino
Comments
Post a Comment