#include "mbed.h" #include "USBSerial.h" I2C i2c(p28,p27); int hz=100000; DigitalOut myled(LED1); unsigned int Re,Im; Serial pc(USBTX,USBRX); pc.baud(9600); //Set baud rate for UART module char dio[2],da; long int r,p,ag;//t, float sq; float impe,mag,gf; void write1(unsigned char addr, unsigned char dat); int read1(unsigned int addr); int main() { i2c.frequency(hz); //START FREQUENCY CODE /* if (da==0x01) { //start f reg = ox82, 83, 84 write1(0x82,0x00); write1(0x83,0x0D); write1(0x84,0x1B); //100hz fre=100; goto next; } else if (da==0x02) { write1(0x82,0x00); write1(0x83,0x41); write1(0x84,0x89); //500hz fre=500; goto next; } else if (da==0x03) { write1(0x82,0x00); write1(0x83,0x83); write1(0x84,0x12); //1khz fre=1000; goto next; } else *///if (da==0x04) // 0x04 /* { write1(0x82,0x02); write1(0x83,0x8F); write1(0x84,0x5c); //5khz fre=5; goto next; } else if (da==0x05) //0x05 { write1(0x82,0x05); write1(0x83,0x1E); write1(0x84,0xB8); //10khz fre=10; goto next; } else if (da==0x06) { write1(0x82,0x07); write1(0x83,0xAE); write1(0x84,0x14); //15khz fre=15000; goto next; } else if (da==0x07) //07 { write1(0x82,0x0A); write1(0x83,0x3D); write1(0x84,0x70); //20khz fre=20; goto next; } else if (da==0x08) { write1(0x82,0x0c); write1(0x83,0xcc); write1(0x84,0xCC); //25khz fre=25000; goto next; } else if (da==0x09) //09 { write1(0x82,0x0F); write1(0x83,0x5c); write1(0x84,0x28); //30khz fre=30; goto next; } else if (da==0x0A) { write1(0x82,0x11); write1(0x83,0xEB); write1(0x84,0x85); //35khz fre=35000; goto next; } else if (da==0x0b) //0b { write1(0x82,0x14); write1(0x83,0x7A); write1(0x84,0xE1); //40khz fre=40; goto next; } else if (da==0x0c) { write1(0x82,0x17); write1(0x83,0x07); write1(0x84,0x3D); //45khz fre=45000; goto next; } else if (da==0x0d) //d */ { write1(0x82,0x19); write1(0x83,0x99); write1(0x84,0x99); //50khz fre=50; goto next; } /* else if (da==0x0e) { write(0x82,0x1C); write(0x83,0x28); write(0x84,0xF5); //55khz fre=55000; goto next; } else if (da==0x0f) //0f { write(0x82,0x1E); write(0x83,0xB8); write(0x84,0x51); //60khz fre=60; goto next; } else if (da==0x10) { write(0x82,0x21); write1(0x83,0x47); write1(0x84,0xAE); //65khz fre=65000; goto next; } else if (da==0x11) //11 { write1(0x82,0x23); write1(0x83,0xD7); write1(0x84,0x0A); //70khz fre=70; goto next; } else if (da==0x12) { write1(0x82,0x26); write1(0x83,0x66); write1(0x84,0x66); //75khz fre=75000; goto next; } else if (da==0x13) //13 { write1(0x82,0x28); write1(0x83,0xf5); write1(0x84,0xc2); //80khz fre=80; goto next; } else if (da==0x14) //14 { write1(0x82,0x2e); write1(0x83,0x14); write1(0x84,0x7a); //90khz fre=90; goto next; } else if (da==0x15) //15 */ { // write1(0x82,0x33); write1(0x83,0x33); write1(0x84,0x33); //100khz//fre=100; //goto next; } next: //after freq ??, where 'next' come? /* write1(0x82,0x33); write1(0x83,0x33); write1(0x84,0x33); //100khz */ //NUMBER OF INCREMENTS for 256 pts write1(0x88,0x01); write1(0x89,0x00); //FREQUENCY INCREMENT write1(0x85,0x00); write1(0x86,0x00); write1(0x87,0x00); //STAND BY MODE write1(0x80,0xB1); //gain 1 while (1) { //Reset Command write1(0x81,0x10); //INITIALIZE WITH START FREQUENCY write1(0x80,0x11); //SETTLING TIME CYCLES write1(0x8a,0x02); write1(0x8b,0x80); //START FREQUENCY SWEEP write1(0x80,0x21); write1(0x81,0x00); while(!(read1(0x8f))&(0x02)); Re=read1(0x94); Re<<=8; Re+=read1(0x95); /*myled = 1; wait(0.2); myled = 0; wait(0.2); myled = 1; wait(0.2); myled = 0; wait(0.2);*/ Im=read1(0x96); Im<<=8; Im+=read1(0x97); if (Re>=32768) { Re=65536-Re; } if (Im>=32768) { Im=65536-Im; r=1; r=Re*r; r=Re*r; p=1; p=Im*p; p=Im*p; } pc.printf("real = %d\n", Re); pc.printf("image = %d\n",Im); } } int read1(unsigned int addr) { //char dio[1]; //int ADD; // ADD=&dio; i2c.start(); i2c.write(0x1A); i2c.write(0xB0); i2c.write(addr); i2c.stop(); // i2c.start(); //i2c.write(0x1B); i2c.read(0x0d,dio,1); // i2c.stop(); wait(0.01); return(dio[0]); } void write1(unsigned char addr, unsigned char dat) { i2c.start(); i2c.write(0x1A); i2c.write(addr); i2c.write(dat); i2c.stop(); wait(0.01); }