Advertisement
Guest User

sine_test.ino

a guest
Jan 4th, 2013
299
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.82 KB | None | 0 0
  1. // http://arduino.cc/forum/index.php/topic,45579.0.html
  2. #include <SPI.h>
  3.  
  4. int CS_pin = 9;
  5. int DREQ_pin = 3;
  6. byte received;
  7.  
  8. void setup()
  9. {
  10.     Serial.begin(9600);
  11.   pinMode(CS_pin, OUTPUT);
  12.   pinMode(DREQ_pin, INPUT);
  13.  
  14.   SPI.begin();
  15.   SPI.setBitOrder(MSBFIRST);
  16.  
  17.   //CPOL = 0, CPHA = 1
  18.   //see en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus#Mode_Numbers
  19.   //and decoder chip datasheet
  20.   SPI.setDataMode(SPI_MODE1);
  21.   //max SDI clock freq = CLKI/7 and (datasheet) CLKI = 36.864, hence max clock = 5MHz
  22.   //SPI clock arduino = 16MHz. 16/ 4 = 4MHz -- ok!
  23.   SPI.setClockDivider(SPI_CLOCK_DIV4);
  24.  
  25. }
  26.  
  27. void loop()
  28. {
  29.   digitalWrite(CS_pin, HIGH);
  30.   delay(5);
  31.  
  32.   // CHIP Write
  33.   // sets sci_mode register, SM_SDINEW, SM_SDISHARE, SM_TESTS.  pg 25, 26
  34.   byte aux;
  35.   digitalWrite(CS_pin, LOW);
  36.   delay(1);
  37.   SPI.transfer(0x02);  //write command
  38.   SPI.transfer(0x00); //SDI_MODE register
  39.   //extract and send higher byte of data
  40.   aux = 0x0c20 >> 8;
  41.   SPI.transfer(aux);
  42.   //extract and send lower byte of data
  43.   aux = 0x0c20 & 0b11111111;
  44.   SPI.transfer(aux);
  45.   //wait for the chip to finish executing command
  46.   while (!DREQ_pin){};
  47.   digitalWrite(CS_pin, HIGH);
  48.   delay(1);
  49.  
  50.   Serial.println("starting sine test");
  51.   // Start SINE test
  52.   digitalWrite(CS_pin, HIGH);
  53.   delay(1);
  54.   SPI.transfer(0x53);
  55.   SPI.transfer(0xEF);
  56.   SPI.transfer(0x6E);
  57.   SPI.transfer(0xAA); // 44100 Hz test tone frequency (pg 35)
  58.   SPI.transfer(0);
  59.   SPI.transfer(0);
  60.   SPI.transfer(0);
  61.   SPI.transfer(0);
  62.  
  63.   delay(200);
  64.  
  65.   // EXIT SINE test
  66.   digitalWrite(CS_pin, HIGH);
  67.   delay(1);
  68.   SPI.transfer(0x45);
  69.   SPI.transfer(0x78);
  70.   SPI.transfer(0x69);
  71.   SPI.transfer(0x74);
  72.   SPI.transfer(0);
  73.   SPI.transfer(0);
  74.   SPI.transfer(0);
  75.   SPI.transfer(0);
  76.  
  77.   Serial.println("exited sine test");
  78.  
  79.   delay(200);
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement