FM-test
Dependencies: MODSERIAL mbed-rtos mbed
Fork of Master by
fm.cpp@0:4f07ba929908, 2014-09-11 (annotated)
- Committer:
- 9uS7
- Date:
- Thu Sep 11 10:15:34 2014 +0000
- Revision:
- 0:4f07ba929908
- Child:
- 1:e1cfb5850088
main_program
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
9uS7 | 0:4f07ba929908 | 1 | #include "mbed.h" |
9uS7 | 0:4f07ba929908 | 2 | #include "fm.h" |
9uS7 | 0:4f07ba929908 | 3 | |
9uS7 | 0:4f07ba929908 | 4 | |
9uS7 | 0:4f07ba929908 | 5 | void i2cSetup(unsigned int _f) |
9uS7 | 0:4f07ba929908 | 6 | { |
9uS7 | 0:4f07ba929908 | 7 | freq = _f; //freq/10.MHz 760~910 |
9uS7 | 0:4f07ba929908 | 8 | if(freq > 870){ |
9uS7 | 0:4f07ba929908 | 9 | freqB = freq - 870; |
9uS7 | 0:4f07ba929908 | 10 | freqH = freqB>>2; |
9uS7 | 0:4f07ba929908 | 11 | freqL = (freqB&3)<<6; // Shift channel selection for matching register 0x03 |
9uS7 | 0:4f07ba929908 | 12 | }else{ |
9uS7 | 0:4f07ba929908 | 13 | freqB = freq-760; |
9uS7 | 0:4f07ba929908 | 14 | freqH = freqB>>2; |
9uS7 | 0:4f07ba929908 | 15 | freqL = (freqB&3)<<6; |
9uS7 | 0:4f07ba929908 | 16 | } |
9uS7 | 0:4f07ba929908 | 17 | |
9uS7 | 0:4f07ba929908 | 18 | i2c.start(); |
9uS7 | 0:4f07ba929908 | 19 | i2c.write(addr); |
9uS7 | 0:4f07ba929908 | 20 | i2c.write(0x02); |
9uS7 | 0:4f07ba929908 | 21 | i2c.write(0xC0); |
9uS7 | 0:4f07ba929908 | 22 | i2c.write(0x03); |
9uS7 | 0:4f07ba929908 | 23 | i2c.stop(); |
9uS7 | 0:4f07ba929908 | 24 | wait(0.5); // wait 500ms |
9uS7 | 0:4f07ba929908 | 25 | |
9uS7 | 0:4f07ba929908 | 26 | i2c.start(); |
9uS7 | 0:4f07ba929908 | 27 | i2c.write(addr); |
9uS7 | 0:4f07ba929908 | 28 | i2c.write(0x02); |
9uS7 | 0:4f07ba929908 | 29 | i2c.write(0xC0); |
9uS7 | 0:4f07ba929908 | 30 | i2c.write(0x0D); |
9uS7 | 0:4f07ba929908 | 31 | i2c.stop(); |
9uS7 | 0:4f07ba929908 | 32 | wait(0.5); |
9uS7 | 0:4f07ba929908 | 33 | |
9uS7 | 0:4f07ba929908 | 34 | if(freq > 870){ |
9uS7 | 0:4f07ba929908 | 35 | freqL=freqL | 0x10; |
9uS7 | 0:4f07ba929908 | 36 | }else{ |
9uS7 | 0:4f07ba929908 | 37 | freqL=freqL | 0x14; |
9uS7 | 0:4f07ba929908 | 38 | } |
9uS7 | 0:4f07ba929908 | 39 | i2c.start(); |
9uS7 | 0:4f07ba929908 | 40 | i2c.write(addr); |
9uS7 | 0:4f07ba929908 | 41 | i2c.write(0x03); |
9uS7 | 0:4f07ba929908 | 42 | i2c.write(freqH); |
9uS7 | 0:4f07ba929908 | 43 | i2c.write(freqL); |
9uS7 | 0:4f07ba929908 | 44 | i2c.stop(); |
9uS7 | 0:4f07ba929908 | 45 | wait(0.5); |
9uS7 | 0:4f07ba929908 | 46 | |
9uS7 | 0:4f07ba929908 | 47 | char temp0 = 0x00; |
9uS7 | 0:4f07ba929908 | 48 | char temp1 = 0x00; |
9uS7 | 0:4f07ba929908 | 49 | i2c.read(addr,&temp0,1); |
9uS7 | 0:4f07ba929908 | 50 | i2c.read(addr,&temp1,1); |
9uS7 | 0:4f07ba929908 | 51 | temp0 &= 0xff; |
9uS7 | 0:4f07ba929908 | 52 | temp1 &= 0xf0; |
9uS7 | 0:4f07ba929908 | 53 | temp0 |= 0x00; |
9uS7 | 0:4f07ba929908 | 54 | temp1 |= 0x01; |
9uS7 | 0:4f07ba929908 | 55 | i2c.start(); |
9uS7 | 0:4f07ba929908 | 56 | i2c.write(addr); |
9uS7 | 0:4f07ba929908 | 57 | i2c.write(0x40); |
9uS7 | 0:4f07ba929908 | 58 | i2c.write(temp0); |
9uS7 | 0:4f07ba929908 | 59 | i2c.write(temp1); |
9uS7 | 0:4f07ba929908 | 60 | i2c.stop(); |
9uS7 | 0:4f07ba929908 | 61 | wait(0.5); |
9uS7 | 0:4f07ba929908 | 62 | |
9uS7 | 0:4f07ba929908 | 63 | i2c.start(); |
9uS7 | 0:4f07ba929908 | 64 | i2c.write(addr); |
9uS7 | 0:4f07ba929908 | 65 | i2c.write(0x42); |
9uS7 | 0:4f07ba929908 | 66 | i2c.write(0x03); |
9uS7 | 0:4f07ba929908 | 67 | i2c.write(0x0F); |
9uS7 | 0:4f07ba929908 | 68 | i2c.stop(); |
9uS7 | 0:4f07ba929908 | 69 | |
9uS7 | 0:4f07ba929908 | 70 | wait(0.5); |
9uS7 | 0:4f07ba929908 | 71 | } |