sample
Dependencies: SDFileSystem USBDevice mbed
main.cpp@0:0b48f20e6d6e, 2014-09-12 (annotated)
- Committer:
- NT32
- Date:
- Fri Sep 12 05:12:02 2014 +0000
- Revision:
- 0:0b48f20e6d6e
sample
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
NT32 | 0:0b48f20e6d6e | 1 | #include "mbed.h" |
NT32 | 0:0b48f20e6d6e | 2 | #include "USBSerial.h" |
NT32 | 0:0b48f20e6d6e | 3 | #include "SDFileSystem.h" |
NT32 | 0:0b48f20e6d6e | 4 | |
NT32 | 0:0b48f20e6d6e | 5 | #define CW 0x01 |
NT32 | 0:0b48f20e6d6e | 6 | #define CCW 0x02 |
NT32 | 0:0b48f20e6d6e | 7 | #define STOP 0x03 |
NT32 | 0:0b48f20e6d6e | 8 | #define FREE 0x00 |
NT32 | 0:0b48f20e6d6e | 9 | |
NT32 | 0:0b48f20e6d6e | 10 | DigitalOut led(P1_28); |
NT32 | 0:0b48f20e6d6e | 11 | DigitalOut cs0(P0_20); |
NT32 | 0:0b48f20e6d6e | 12 | |
NT32 | 0:0b48f20e6d6e | 13 | DigitalIn sw(P0_1); |
NT32 | 0:0b48f20e6d6e | 14 | |
NT32 | 0:0b48f20e6d6e | 15 | PwmOut pwm(P1_26); |
NT32 | 0:0b48f20e6d6e | 16 | |
NT32 | 0:0b48f20e6d6e | 17 | USBSerial vcom; |
NT32 | 0:0b48f20e6d6e | 18 | |
NT32 | 0:0b48f20e6d6e | 19 | Timer t; |
NT32 | 0:0b48f20e6d6e | 20 | |
NT32 | 0:0b48f20e6d6e | 21 | SPI spi(P1_22, NC, P1_15); |
NT32 | 0:0b48f20e6d6e | 22 | BusOut mdrive0(P1_19, P1_25); |
NT32 | 0:0b48f20e6d6e | 23 | |
NT32 | 0:0b48f20e6d6e | 24 | SDFileSystem sd(P0_9, P0_8, P1_29, P1_31, "sd"); |
NT32 | 0:0b48f20e6d6e | 25 | |
NT32 | 0:0b48f20e6d6e | 26 | union MCP4922 |
NT32 | 0:0b48f20e6d6e | 27 | { |
NT32 | 0:0b48f20e6d6e | 28 | uint16_t command; |
NT32 | 0:0b48f20e6d6e | 29 | struct |
NT32 | 0:0b48f20e6d6e | 30 | { |
NT32 | 0:0b48f20e6d6e | 31 | //DAC data bits |
NT32 | 0:0b48f20e6d6e | 32 | uint16_t D :12; |
NT32 | 0:0b48f20e6d6e | 33 | //Output power down control bit |
NT32 | 0:0b48f20e6d6e | 34 | uint8_t SHDN:1; |
NT32 | 0:0b48f20e6d6e | 35 | //Outout gain select bit |
NT32 | 0:0b48f20e6d6e | 36 | uint8_t GA :1; |
NT32 | 0:0b48f20e6d6e | 37 | //Vref input buffer Control bit |
NT32 | 0:0b48f20e6d6e | 38 | uint8_t BUF :1; |
NT32 | 0:0b48f20e6d6e | 39 | //DACa or DACb select bit |
NT32 | 0:0b48f20e6d6e | 40 | uint8_t AB :1; |
NT32 | 0:0b48f20e6d6e | 41 | }bit; |
NT32 | 0:0b48f20e6d6e | 42 | }; |
NT32 | 0:0b48f20e6d6e | 43 | union MCP4922 dac = {0xF7F}; |
NT32 | 0:0b48f20e6d6e | 44 | |
NT32 | 0:0b48f20e6d6e | 45 | void systeminit(); |
NT32 | 0:0b48f20e6d6e | 46 | |
NT32 | 0:0b48f20e6d6e | 47 | int main(){ |
NT32 | 0:0b48f20e6d6e | 48 | uint16_t velocity = 0; |
NT32 | 0:0b48f20e6d6e | 49 | char str[64]; |
NT32 | 0:0b48f20e6d6e | 50 | systeminit(); |
NT32 | 0:0b48f20e6d6e | 51 | mdrive0 = CW; |
NT32 | 0:0b48f20e6d6e | 52 | pwm = 0.2; |
NT32 | 0:0b48f20e6d6e | 53 | while(1){ |
NT32 | 0:0b48f20e6d6e | 54 | led = !led; |
NT32 | 0:0b48f20e6d6e | 55 | velocity += 100; |
NT32 | 0:0b48f20e6d6e | 56 | if(velocity > 4095) velocity = 0; |
NT32 | 0:0b48f20e6d6e | 57 | dac.bit.D = velocity; |
NT32 | 0:0b48f20e6d6e | 58 | cs0 = 0; |
NT32 | 0:0b48f20e6d6e | 59 | spi.write(dac.command); |
NT32 | 0:0b48f20e6d6e | 60 | cs0 = 1; |
NT32 | 0:0b48f20e6d6e | 61 | if(sw == 0){ |
NT32 | 0:0b48f20e6d6e | 62 | mkdir("/sd/mydir", 0777); |
NT32 | 0:0b48f20e6d6e | 63 | |
NT32 | 0:0b48f20e6d6e | 64 | FILE *fp = fopen("/sd/mydir/sdtest.txt", "w"); |
NT32 | 0:0b48f20e6d6e | 65 | if(fp == NULL) |
NT32 | 0:0b48f20e6d6e | 66 | { |
NT32 | 0:0b48f20e6d6e | 67 | vcom.printf("Could not open file for write\n"); |
NT32 | 0:0b48f20e6d6e | 68 | break; |
NT32 | 0:0b48f20e6d6e | 69 | } |
NT32 | 0:0b48f20e6d6e | 70 | t.start(); |
NT32 | 0:0b48f20e6d6e | 71 | fprintf(fp, "Hello fun SD"); |
NT32 | 0:0b48f20e6d6e | 72 | t.stop(); |
NT32 | 0:0b48f20e6d6e | 73 | fclose(fp); |
NT32 | 0:0b48f20e6d6e | 74 | vcom.printf("The time taken was %d micro seconds\n", t.read_us()); |
NT32 | 0:0b48f20e6d6e | 75 | vcom.printf("goodbye\n"); |
NT32 | 0:0b48f20e6d6e | 76 | |
NT32 | 0:0b48f20e6d6e | 77 | while(sw == 0){} |
NT32 | 0:0b48f20e6d6e | 78 | } |
NT32 | 0:0b48f20e6d6e | 79 | wait(0.1); |
NT32 | 0:0b48f20e6d6e | 80 | } |
NT32 | 0:0b48f20e6d6e | 81 | } |
NT32 | 0:0b48f20e6d6e | 82 | |
NT32 | 0:0b48f20e6d6e | 83 | void systeminit(){ |
NT32 | 0:0b48f20e6d6e | 84 | sw.mode(PullUp); |
NT32 | 0:0b48f20e6d6e | 85 | wait(0.1); |
NT32 | 0:0b48f20e6d6e | 86 | cs0 = 1; |
NT32 | 0:0b48f20e6d6e | 87 | dac.bit.AB = 0; |
NT32 | 0:0b48f20e6d6e | 88 | dac.bit.BUF = 1; |
NT32 | 0:0b48f20e6d6e | 89 | dac.bit.GA = 1; |
NT32 | 0:0b48f20e6d6e | 90 | dac.bit.SHDN = 1; |
NT32 | 0:0b48f20e6d6e | 91 | dac.bit.D = 1024; |
NT32 | 0:0b48f20e6d6e | 92 | spi.format(16,0); |
NT32 | 0:0b48f20e6d6e | 93 | spi.frequency(20000000); |
NT32 | 0:0b48f20e6d6e | 94 | cs0 = 0; |
NT32 | 0:0b48f20e6d6e | 95 | spi.write(dac.command); |
NT32 | 0:0b48f20e6d6e | 96 | cs0 = 1; |
NT32 | 0:0b48f20e6d6e | 97 | } |