masa miya
/
DDS_AD9834_FSK
FSK with AD9834 DDS
main.cpp@0:46f203a79acf, 2011-07-17 (annotated)
- Committer:
- jf1vrr
- Date:
- Sun Jul 17 16:01:41 2011 +0000
- Revision:
- 0:46f203a79acf
Rev.1.01A new 2011/07/17 MLabo
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jf1vrr | 0:46f203a79acf | 1 | /*FSK with A9834 by MLabo 2011/07/17*/ |
jf1vrr | 0:46f203a79acf | 2 | #include "mbed.h" |
jf1vrr | 0:46f203a79acf | 3 | #include "TextLCD.h" |
jf1vrr | 0:46f203a79acf | 4 | |
jf1vrr | 0:46f203a79acf | 5 | TextLCD lcd(p24, p26, p27, p28, p29, p30); //StarBoard Orenge |
jf1vrr | 0:46f203a79acf | 6 | DigitalOut FSELECT(p17); |
jf1vrr | 0:46f203a79acf | 7 | DigitalOut FSYNC(p18); |
jf1vrr | 0:46f203a79acf | 8 | DigitalOut SCLK(p19); |
jf1vrr | 0:46f203a79acf | 9 | DigitalOut SDATA(p20); |
jf1vrr | 0:46f203a79acf | 10 | |
jf1vrr | 0:46f203a79acf | 11 | void serial_out(uint16_t data) { |
jf1vrr | 0:46f203a79acf | 12 | |
jf1vrr | 0:46f203a79acf | 13 | FSYNC = 0; |
jf1vrr | 0:46f203a79acf | 14 | data & 0x8000? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1; |
jf1vrr | 0:46f203a79acf | 15 | data & 0x4000? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1; |
jf1vrr | 0:46f203a79acf | 16 | data & 0x2000? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1; |
jf1vrr | 0:46f203a79acf | 17 | data & 0x1000? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1; |
jf1vrr | 0:46f203a79acf | 18 | data & 0x0800? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1; |
jf1vrr | 0:46f203a79acf | 19 | data & 0x0400? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1; |
jf1vrr | 0:46f203a79acf | 20 | data & 0x0200? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1; |
jf1vrr | 0:46f203a79acf | 21 | data & 0x0100? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1; |
jf1vrr | 0:46f203a79acf | 22 | data & 0x0080? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1; |
jf1vrr | 0:46f203a79acf | 23 | data & 0x0040? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1; |
jf1vrr | 0:46f203a79acf | 24 | data & 0x0020? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1; |
jf1vrr | 0:46f203a79acf | 25 | data & 0x0010? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1; |
jf1vrr | 0:46f203a79acf | 26 | data & 0x0008? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1; |
jf1vrr | 0:46f203a79acf | 27 | data & 0x0004? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1; |
jf1vrr | 0:46f203a79acf | 28 | data & 0x0002? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1; |
jf1vrr | 0:46f203a79acf | 29 | data & 0x0001? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1; |
jf1vrr | 0:46f203a79acf | 30 | FSYNC = 1; |
jf1vrr | 0:46f203a79acf | 31 | } |
jf1vrr | 0:46f203a79acf | 32 | |
jf1vrr | 0:46f203a79acf | 33 | int main() { |
jf1vrr | 0:46f203a79acf | 34 | float SetFreq; |
jf1vrr | 0:46f203a79acf | 35 | uint32_t temp, freqdata; |
jf1vrr | 0:46f203a79acf | 36 | uint16_t Uptemp, Lowtemp; |
jf1vrr | 0:46f203a79acf | 37 | char l[63]; |
jf1vrr | 0:46f203a79acf | 38 | |
jf1vrr | 0:46f203a79acf | 39 | SCLK = 1; |
jf1vrr | 0:46f203a79acf | 40 | SDATA = 0; |
jf1vrr | 0:46f203a79acf | 41 | FSYNC = 1; |
jf1vrr | 0:46f203a79acf | 42 | FSELECT = 0; |
jf1vrr | 0:46f203a79acf | 43 | |
jf1vrr | 0:46f203a79acf | 44 | lcd.cls(); |
jf1vrr | 0:46f203a79acf | 45 | lcd.locate(0,0); |
jf1vrr | 0:46f203a79acf | 46 | lcd.printf("FSK With AD9834"); |
jf1vrr | 0:46f203a79acf | 47 | |
jf1vrr | 0:46f203a79acf | 48 | l[0] = 0x01; //BLNK |
jf1vrr | 0:46f203a79acf | 49 | l[1] = 0x01; //BLNK |
jf1vrr | 0:46f203a79acf | 50 | l[2] = 0x01; //BLNK |
jf1vrr | 0:46f203a79acf | 51 | l[3] = 0x03; //T |
jf1vrr | 0:46f203a79acf | 52 | l[4] = 0x0B; //H |
jf1vrr | 0:46f203a79acf | 53 | l[5] = 0x21; //E |
jf1vrr | 0:46f203a79acf | 54 | l[6] = 0x09; //SP |
jf1vrr | 0:46f203a79acf | 55 | l[7] = 0x3B; //Q |
jf1vrr | 0:46f203a79acf | 56 | l[8] = 0x39; //U |
jf1vrr | 0:46f203a79acf | 57 | l[9] = 0x19; //I |
jf1vrr | 0:46f203a79acf | 58 | l[10] = 0x1D; //C |
jf1vrr | 0:46f203a79acf | 59 | l[11] = 0x3D; //K |
jf1vrr | 0:46f203a79acf | 60 | l[12] = 0x09; //SP |
jf1vrr | 0:46f203a79acf | 61 | l[13] = 0x27; //B |
jf1vrr | 0:46f203a79acf | 62 | l[14] = 0x15; //R |
jf1vrr | 0:46f203a79acf | 63 | l[15] = 0x07; //O |
jf1vrr | 0:46f203a79acf | 64 | l[16] = 0x33; //W |
jf1vrr | 0:46f203a79acf | 65 | l[17] = 0x0D; //N |
jf1vrr | 0:46f203a79acf | 66 | l[18] = 0x09; //SP |
jf1vrr | 0:46f203a79acf | 67 | l[19] = 0x2D; //F |
jf1vrr | 0:46f203a79acf | 68 | l[20] = 0x07; //O |
jf1vrr | 0:46f203a79acf | 69 | l[21] = 0x2F; //X |
jf1vrr | 0:46f203a79acf | 70 | l[22] = 0x09; //SP |
jf1vrr | 0:46f203a79acf | 71 | l[23] = 0x35; //J |
jf1vrr | 0:46f203a79acf | 72 | l[24] = 0x39; //U |
jf1vrr | 0:46f203a79acf | 73 | l[25] = 0x0F; //M |
jf1vrr | 0:46f203a79acf | 74 | l[26] = 0x1B; //P |
jf1vrr | 0:46f203a79acf | 75 | l[27] = 0x29; //S |
jf1vrr | 0:46f203a79acf | 76 | l[28] = 0x09; //SP |
jf1vrr | 0:46f203a79acf | 77 | l[29] = 0x07; //O |
jf1vrr | 0:46f203a79acf | 78 | l[30] = 0x1F; //V |
jf1vrr | 0:46f203a79acf | 79 | l[31] = 0x21; //E |
jf1vrr | 0:46f203a79acf | 80 | l[32] = 0x15; //R |
jf1vrr | 0:46f203a79acf | 81 | l[33] = 0x09; //SP |
jf1vrr | 0:46f203a79acf | 82 | l[34] = 0x03; //T |
jf1vrr | 0:46f203a79acf | 83 | l[35] = 0x0B; //H |
jf1vrr | 0:46f203a79acf | 84 | l[36] = 0x21; //E |
jf1vrr | 0:46f203a79acf | 85 | l[37] = 0x09; //SP |
jf1vrr | 0:46f203a79acf | 86 | l[38] = 0x13; //L |
jf1vrr | 0:46f203a79acf | 87 | l[39] = 0x31; //A |
jf1vrr | 0:46f203a79acf | 88 | l[40] = 0x23; //Z |
jf1vrr | 0:46f203a79acf | 89 | l[41] = 0x2B; //Y |
jf1vrr | 0:46f203a79acf | 90 | l[42] = 0x09; //SP |
jf1vrr | 0:46f203a79acf | 91 | l[43] = 0x25; //D |
jf1vrr | 0:46f203a79acf | 92 | l[44] = 0x07; //O |
jf1vrr | 0:46f203a79acf | 93 | l[45] = 0x17; //G |
jf1vrr | 0:46f203a79acf | 94 | l[46] = 0x37; //Figures |
jf1vrr | 0:46f203a79acf | 95 | l[47] = 0x0F; //. |
jf1vrr | 0:46f203a79acf | 96 | l[48] = 0x09; //SP |
jf1vrr | 0:46f203a79acf | 97 | l[49] = 0x37; //Figures |
jf1vrr | 0:46f203a79acf | 98 | l[50] = 0x3B; //1 |
jf1vrr | 0:46f203a79acf | 99 | l[51] = 0x33; //2 |
jf1vrr | 0:46f203a79acf | 100 | l[52] = 0x21; //3 |
jf1vrr | 0:46f203a79acf | 101 | l[53] = 0x15; //4 |
jf1vrr | 0:46f203a79acf | 102 | l[54] = 0x03; //5 |
jf1vrr | 0:46f203a79acf | 103 | l[55] = 0x2B; //6 |
jf1vrr | 0:46f203a79acf | 104 | l[56] = 0x39; //7 |
jf1vrr | 0:46f203a79acf | 105 | l[57] = 0x19; //8 |
jf1vrr | 0:46f203a79acf | 106 | l[58] = 0x07; //9 |
jf1vrr | 0:46f203a79acf | 107 | l[59] = 0x1B; //0 |
jf1vrr | 0:46f203a79acf | 108 | l[60] = 0x05; //CR |
jf1vrr | 0:46f203a79acf | 109 | l[61] = 0x11; //LF |
jf1vrr | 0:46f203a79acf | 110 | l[62] = 0x3F; //Letter |
jf1vrr | 0:46f203a79acf | 111 | |
jf1vrr | 0:46f203a79acf | 112 | freqdata = 7030000; //Space |
jf1vrr | 0:46f203a79acf | 113 | SetFreq = 5.592405 * (uint32_t)freqdata; |
jf1vrr | 0:46f203a79acf | 114 | temp = (uint32_t)SetFreq; |
jf1vrr | 0:46f203a79acf | 115 | Lowtemp = (uint16_t)(temp & 0x3FFF); |
jf1vrr | 0:46f203a79acf | 116 | Uptemp = (uint16_t)((temp/16384) & 0x3FFF); |
jf1vrr | 0:46f203a79acf | 117 | serial_out(0x2228); |
jf1vrr | 0:46f203a79acf | 118 | serial_out(Lowtemp + 0x4000); |
jf1vrr | 0:46f203a79acf | 119 | serial_out(Uptemp + 0x4000); |
jf1vrr | 0:46f203a79acf | 120 | |
jf1vrr | 0:46f203a79acf | 121 | freqdata = 7030170; //Mark |
jf1vrr | 0:46f203a79acf | 122 | SetFreq = 5.592405 * (uint32_t)freqdata; |
jf1vrr | 0:46f203a79acf | 123 | temp = (uint32_t)SetFreq; |
jf1vrr | 0:46f203a79acf | 124 | Lowtemp = (uint16_t)(temp & 0x3FFF); |
jf1vrr | 0:46f203a79acf | 125 | Uptemp = (uint16_t)((temp/16384) & 0x3FFF); |
jf1vrr | 0:46f203a79acf | 126 | serial_out(0x2A28); |
jf1vrr | 0:46f203a79acf | 127 | serial_out(Lowtemp + 0x8000); |
jf1vrr | 0:46f203a79acf | 128 | serial_out(Uptemp + 0x8000); |
jf1vrr | 0:46f203a79acf | 129 | |
jf1vrr | 0:46f203a79acf | 130 | while(1){ |
jf1vrr | 0:46f203a79acf | 131 | for(int i = 0; i < 64; i++){ |
jf1vrr | 0:46f203a79acf | 132 | for(int j = 0; j < 7; j++){ |
jf1vrr | 0:46f203a79acf | 133 | if((l[i] << j + 1) & 0x80) FSELECT = 1; else FSELECT = 0; |
jf1vrr | 0:46f203a79acf | 134 | if(j != 6) wait_ms(22); else wait_ms(33); |
jf1vrr | 0:46f203a79acf | 135 | } |
jf1vrr | 0:46f203a79acf | 136 | } |
jf1vrr | 0:46f203a79acf | 137 | wait_ms(1000); |
jf1vrr | 0:46f203a79acf | 138 | } |
jf1vrr | 0:46f203a79acf | 139 | } |