masa miya / Mbed 2 deprecated DDS_AD9834_FSK

Dependencies:   TextLCD mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /*FSK with A9834 by MLabo 2011/07/17*/
00002 #include "mbed.h"
00003 #include "TextLCD.h"
00004 
00005 TextLCD lcd(p24, p26, p27, p28, p29, p30); //StarBoard Orenge
00006 DigitalOut FSELECT(p17);
00007 DigitalOut FSYNC(p18);
00008 DigitalOut SCLK(p19);
00009 DigitalOut SDATA(p20);
00010 
00011 void serial_out(uint16_t data) {
00012 
00013     FSYNC = 0;
00014     data & 0x8000? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
00015     data & 0x4000? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
00016     data & 0x2000? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
00017     data & 0x1000? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
00018     data & 0x0800? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
00019     data & 0x0400? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
00020     data & 0x0200? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
00021     data & 0x0100? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
00022     data & 0x0080? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
00023     data & 0x0040? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
00024     data & 0x0020? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
00025     data & 0x0010? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
00026     data & 0x0008? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
00027     data & 0x0004? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
00028     data & 0x0002? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
00029     data & 0x0001? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
00030     FSYNC = 1;
00031 }
00032 
00033 int main() {
00034 float SetFreq;
00035 uint32_t temp, freqdata;
00036 uint16_t Uptemp, Lowtemp;
00037 char l[63];
00038 
00039     SCLK = 1;
00040     SDATA = 0;
00041     FSYNC = 1;
00042     FSELECT = 0;
00043     
00044     lcd.cls();
00045     lcd.locate(0,0);
00046     lcd.printf("FSK With AD9834");
00047 
00048     l[0] = 0x01; //BLNK
00049     l[1] = 0x01; //BLNK
00050     l[2] = 0x01; //BLNK
00051     l[3] = 0x03; //T
00052     l[4] = 0x0B; //H
00053     l[5] = 0x21; //E
00054     l[6] = 0x09; //SP
00055     l[7] = 0x3B; //Q
00056     l[8] = 0x39; //U
00057     l[9] = 0x19; //I
00058     l[10] = 0x1D; //C
00059     l[11] = 0x3D; //K
00060     l[12] = 0x09; //SP
00061     l[13] = 0x27; //B
00062     l[14] = 0x15; //R
00063     l[15] = 0x07; //O
00064     l[16] = 0x33; //W
00065     l[17] = 0x0D; //N
00066     l[18] = 0x09; //SP
00067     l[19] = 0x2D; //F
00068     l[20] = 0x07; //O
00069     l[21] = 0x2F; //X
00070     l[22] = 0x09; //SP
00071     l[23] = 0x35; //J
00072     l[24] = 0x39; //U
00073     l[25] = 0x0F; //M
00074     l[26] = 0x1B; //P
00075     l[27] = 0x29; //S
00076     l[28] = 0x09; //SP
00077     l[29] = 0x07; //O
00078     l[30] = 0x1F; //V
00079     l[31] = 0x21; //E
00080     l[32] = 0x15; //R
00081     l[33] = 0x09; //SP
00082     l[34] = 0x03; //T
00083     l[35] = 0x0B; //H
00084     l[36] = 0x21; //E
00085     l[37] = 0x09; //SP
00086     l[38] = 0x13; //L
00087     l[39] = 0x31; //A
00088     l[40] = 0x23; //Z
00089     l[41] = 0x2B; //Y
00090     l[42] = 0x09; //SP
00091     l[43] = 0x25; //D
00092     l[44] = 0x07; //O
00093     l[45] = 0x17; //G
00094     l[46] = 0x37; //Figures
00095     l[47] = 0x0F; //.
00096     l[48] = 0x09; //SP
00097     l[49] = 0x37; //Figures
00098     l[50] = 0x3B; //1
00099     l[51] = 0x33; //2
00100     l[52] = 0x21; //3
00101     l[53] = 0x15; //4
00102     l[54] = 0x03; //5
00103     l[55] = 0x2B; //6
00104     l[56] = 0x39; //7
00105     l[57] = 0x19; //8
00106     l[58] = 0x07; //9
00107     l[59] = 0x1B; //0
00108     l[60] = 0x05; //CR
00109     l[61] = 0x11; //LF
00110     l[62] = 0x3F; //Letter
00111 
00112     freqdata = 7030000; //Space
00113     SetFreq = 5.592405 * (uint32_t)freqdata;
00114     temp = (uint32_t)SetFreq;
00115     Lowtemp = (uint16_t)(temp & 0x3FFF);
00116     Uptemp = (uint16_t)((temp/16384) & 0x3FFF);    
00117     serial_out(0x2228);
00118     serial_out(Lowtemp + 0x4000);
00119     serial_out(Uptemp + 0x4000);
00120 
00121     freqdata = 7030170; //Mark
00122     SetFreq = 5.592405 * (uint32_t)freqdata;
00123     temp = (uint32_t)SetFreq;
00124     Lowtemp = (uint16_t)(temp & 0x3FFF);
00125     Uptemp = (uint16_t)((temp/16384) & 0x3FFF); 
00126     serial_out(0x2A28);
00127     serial_out(Lowtemp + 0x8000);
00128     serial_out(Uptemp + 0x8000);
00129 
00130     while(1){
00131         for(int i = 0; i < 64; i++){
00132             for(int j = 0; j < 7; j++){
00133                 if((l[i] << j + 1) & 0x80) FSELECT = 1; else FSELECT = 0;
00134                 if(j != 6) wait_ms(22); else wait_ms(33);
00135             }
00136         } 
00137         wait_ms(1000);       
00138     }    
00139 }