Si5351Aを使用したクロックジェネレータ1MHzから1MHz単位で任意のパルスを出力できる。出力電圧はLM317で変更可能
Dependencies: ACM1602NI DigitalSw Si5351A mbed
main.cpp@0:443d2954b3c3, 2017-06-19 (annotated)
- Committer:
- suupen
- Date:
- Mon Jun 19 11:09:29 2017 +0000
- Revision:
- 0:443d2954b3c3
??;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
suupen | 0:443d2954b3c3 | 1 | #include "mbed.h" |
suupen | 0:443d2954b3c3 | 2 | #include "ACM1602NI.h" //https://developer.mbed.org/users/takuo/code/ACM1602NI/docs/661827681a12/classACM1602NI.html |
suupen | 0:443d2954b3c3 | 3 | #include "DigitalSw.h" |
suupen | 0:443d2954b3c3 | 4 | #include "si5351a.h" //https://developer.mbed.org/users/kenjiArai/code/Si5351A/file/af2d99cfb3f0/si5351a.cpp |
suupen | 0:443d2954b3c3 | 5 | |
suupen | 0:443d2954b3c3 | 6 | //#define LPC1114 |
suupen | 0:443d2954b3c3 | 7 | /* |
suupen | 0:443d2954b3c3 | 8 | #ifdef LPC1114 |
suupen | 0:443d2954b3c3 | 9 | I2C i2c(dp5, dp27); // sda, scl |
suupen | 0:443d2954b3c3 | 10 | #else |
suupen | 0:443d2954b3c3 | 11 | I2C i2c(p9, p10); |
suupen | 0:443d2954b3c3 | 12 | #endif |
suupen | 0:443d2954b3c3 | 13 | */ |
suupen | 0:443d2954b3c3 | 14 | |
suupen | 0:443d2954b3c3 | 15 | // I2C pins: p9 = sda, p10 = scl |
suupen | 0:443d2954b3c3 | 16 | ACM1602NI lcd(p9, p10); // (sda, scl) |
suupen | 0:443d2954b3c3 | 17 | // ACM1602NI lcd(p28, p27); // (sda, scl) |
suupen | 0:443d2954b3c3 | 18 | |
suupen | 0:443d2954b3c3 | 19 | // Vout mesure |
suupen | 0:443d2954b3c3 | 20 | AnalogIn Vout(p20); |
suupen | 0:443d2954b3c3 | 21 | |
suupen | 0:443d2954b3c3 | 22 | //************************************************************** |
suupen | 0:443d2954b3c3 | 23 | // Si5351a |
suupen | 0:443d2954b3c3 | 24 | SI5351A clk(p28, p27, 25000000UL); // Base clock = 25MHz |
suupen | 0:443d2954b3c3 | 25 | |
suupen | 0:443d2954b3c3 | 26 | // Digital Sw |
suupen | 0:443d2954b3c3 | 27 | #ifdef LPC1114 |
suupen | 0:443d2954b3c3 | 28 | DigitalSw upSw(dp18); |
suupen | 0:443d2954b3c3 | 29 | DigitalSw downSw(dp17); |
suupen | 0:443d2954b3c3 | 30 | DigitalSw startSw(dp16); |
suupen | 0:443d2954b3c3 | 31 | #else |
suupen | 0:443d2954b3c3 | 32 | DigitalSw upSw(p18); |
suupen | 0:443d2954b3c3 | 33 | DigitalSw downSw(p17); |
suupen | 0:443d2954b3c3 | 34 | DigitalSw startSw(p15); |
suupen | 0:443d2954b3c3 | 35 | #endif |
suupen | 0:443d2954b3c3 | 36 | |
suupen | 0:443d2954b3c3 | 37 | int16_t frequency = 1; |
suupen | 0:443d2954b3c3 | 38 | |
suupen | 0:443d2954b3c3 | 39 | DigitalOut myled(LED1); |
suupen | 0:443d2954b3c3 | 40 | |
suupen | 0:443d2954b3c3 | 41 | void swProcess(void) |
suupen | 0:443d2954b3c3 | 42 | { |
suupen | 0:443d2954b3c3 | 43 | if(upSw.getOnEdge() == 1){ |
suupen | 0:443d2954b3c3 | 44 | if(frequency < 50){frequency++;} |
suupen | 0:443d2954b3c3 | 45 | clk.set_frequency(SI5351_CLK0, frequency * 1000000); |
suupen | 0:443d2954b3c3 | 46 | |
suupen | 0:443d2954b3c3 | 47 | } |
suupen | 0:443d2954b3c3 | 48 | |
suupen | 0:443d2954b3c3 | 49 | if(downSw.getOnEdge() == 1){ |
suupen | 0:443d2954b3c3 | 50 | if(frequency > 1){frequency--;} |
suupen | 0:443d2954b3c3 | 51 | clk.set_frequency(SI5351_CLK0, frequency * 1000000); |
suupen | 0:443d2954b3c3 | 52 | } |
suupen | 0:443d2954b3c3 | 53 | |
suupen | 0:443d2954b3c3 | 54 | if(startSw.getOnEdge() == 1){ |
suupen | 0:443d2954b3c3 | 55 | frequency = 25; |
suupen | 0:443d2954b3c3 | 56 | clk.set_frequency(SI5351_CLK0, frequency * 1000000); |
suupen | 0:443d2954b3c3 | 57 | } |
suupen | 0:443d2954b3c3 | 58 | |
suupen | 0:443d2954b3c3 | 59 | } |
suupen | 0:443d2954b3c3 | 60 | |
suupen | 0:443d2954b3c3 | 61 | |
suupen | 0:443d2954b3c3 | 62 | int main() { |
suupen | 0:443d2954b3c3 | 63 | clk.set_frequency(SI5351_CLK0, frequency * 1000000); |
suupen | 0:443d2954b3c3 | 64 | |
suupen | 0:443d2954b3c3 | 65 | while(1) { |
suupen | 0:443d2954b3c3 | 66 | |
suupen | 0:443d2954b3c3 | 67 | swProcess(); |
suupen | 0:443d2954b3c3 | 68 | |
suupen | 0:443d2954b3c3 | 69 | lcd.printf("Vout = %3.2f [V]\n", Vout * 3.3); |
suupen | 0:443d2954b3c3 | 70 | lcd.printf("%2d [MHz]\n",frequency); |
suupen | 0:443d2954b3c3 | 71 | myled = 1; |
suupen | 0:443d2954b3c3 | 72 | wait(0.2); |
suupen | 0:443d2954b3c3 | 73 | myled = 0; |
suupen | 0:443d2954b3c3 | 74 | wait(0.2); |
suupen | 0:443d2954b3c3 | 75 | } |
suupen | 0:443d2954b3c3 | 76 | } |