Bavo Van Achte
/
MLX90418_I2C_master
Fork
main.cpp@2:9bdcd2c966de, 2020-12-08 (annotated)
- Committer:
- wuliqunyy
- Date:
- Tue Dec 08 13:53:10 2020 +0000
- Revision:
- 2:9bdcd2c966de
- Parent:
- 1:47cc6952e346
- Child:
- 3:557d5725b1bb
running motor
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
wuliqunyy | 0:fe3c7dde9771 | 1 | #include "mbed.h" |
wuliqunyy | 0:fe3c7dde9771 | 2 | #include "i2c_mbed_fpga.h" |
wuliqunyy | 0:fe3c7dde9771 | 3 | //#include "serial_fsm.h" |
wuliqunyy | 0:fe3c7dde9771 | 4 | |
wuliqunyy | 0:fe3c7dde9771 | 5 | /*Digital outputs*/ |
wuliqunyy | 0:fe3c7dde9771 | 6 | DigitalOut led1(LED1); |
wuliqunyy | 0:fe3c7dde9771 | 7 | DigitalOut led2(LED2); |
wuliqunyy | 0:fe3c7dde9771 | 8 | DigitalOut led3(LED3); |
wuliqunyy | 0:fe3c7dde9771 | 9 | DigitalOut led4(LED4); |
wuliqunyy | 0:fe3c7dde9771 | 10 | DigitalOut fpga_rstb(p21); //p21 of MBED is connectted to p4 of the FPGA CMOD for 90415FPGA_EVB2 |
wuliqunyy | 0:fe3c7dde9771 | 11 | |
wuliqunyy | 0:fe3c7dde9771 | 12 | /*Creat serial port to coummunicate with pc*/ |
wuliqunyy | 0:fe3c7dde9771 | 13 | Serial pc(USBTX, USBRX); |
wuliqunyy | 0:fe3c7dde9771 | 14 | |
wuliqunyy | 0:fe3c7dde9771 | 15 | ///*Creat I2C master*/ |
wuliqunyy | 0:fe3c7dde9771 | 16 | I2C i2c_master(p9, p10); |
wuliqunyy | 0:fe3c7dde9771 | 17 | |
wuliqunyy | 0:fe3c7dde9771 | 18 | void serial_init(){ |
wuliqunyy | 0:fe3c7dde9771 | 19 | pc.format(8, SerialBase::None, 1); |
wuliqunyy | 0:fe3c7dde9771 | 20 | pc.baud(38400); |
wuliqunyy | 0:fe3c7dde9771 | 21 | } |
wuliqunyy | 0:fe3c7dde9771 | 22 | |
wuliqunyy | 0:fe3c7dde9771 | 23 | void i2c_init(){ |
wuliqunyy | 2:9bdcd2c966de | 24 | i2c_master.frequency(35000); |
wuliqunyy | 0:fe3c7dde9771 | 25 | } |
wuliqunyy | 0:fe3c7dde9771 | 26 | |
wuliqunyy | 0:fe3c7dde9771 | 27 | void main_init(){ |
wuliqunyy | 0:fe3c7dde9771 | 28 | led1 = 1; |
wuliqunyy | 0:fe3c7dde9771 | 29 | led2 = 0; |
wuliqunyy | 0:fe3c7dde9771 | 30 | led3 = 0; |
wuliqunyy | 0:fe3c7dde9771 | 31 | led4 = 0; |
wuliqunyy | 0:fe3c7dde9771 | 32 | |
wuliqunyy | 0:fe3c7dde9771 | 33 | fpga_rstb = 0; |
wuliqunyy | 0:fe3c7dde9771 | 34 | |
wuliqunyy | 0:fe3c7dde9771 | 35 | i2c_init(); |
wuliqunyy | 0:fe3c7dde9771 | 36 | serial_init(); |
wuliqunyy | 0:fe3c7dde9771 | 37 | |
wuliqunyy | 0:fe3c7dde9771 | 38 | i2c_master.start(); |
wuliqunyy | 0:fe3c7dde9771 | 39 | |
wuliqunyy | 0:fe3c7dde9771 | 40 | pc.printf("Mbed is ready!"); |
wuliqunyy | 0:fe3c7dde9771 | 41 | } |
wuliqunyy | 0:fe3c7dde9771 | 42 | |
wuliqunyy | 0:fe3c7dde9771 | 43 | /* Main function */ |
wuliqunyy | 0:fe3c7dde9771 | 44 | int main() { |
wuliqunyy | 0:fe3c7dde9771 | 45 | |
wuliqunyy | 1:47cc6952e346 | 46 | char i2cWriteTest[4] = {0x13, 0x8a, 0xac, 0x35}; |
wuliqunyy | 1:47cc6952e346 | 47 | char i2cReadTest[4] = {0x13, 0x8a, 0x00, 0x00}; |
wuliqunyy | 2:9bdcd2c966de | 48 | char i2cStartMotor[4] = {0x13, 0xa4, 0xca, 0xfe}; //Start motor to skip the 1s |
wuliqunyy | 2:9bdcd2c966de | 49 | char i2cPositionPulseSetup[4] = {0x13, 0x82, 0xc6, 0x00}; //Start motor to skip the 1s |
wuliqunyy | 2:9bdcd2c966de | 50 | char i2cStartUpRead[4] = {0x13, 0x84, 0x00, 0x00}; //Start motor to skip the 1s |
wuliqunyy | 2:9bdcd2c966de | 51 | |
wuliqunyy | 0:fe3c7dde9771 | 52 | int ack; |
wuliqunyy | 0:fe3c7dde9771 | 53 | |
wuliqunyy | 0:fe3c7dde9771 | 54 | main_init(); |
wuliqunyy | 0:fe3c7dde9771 | 55 | |
wuliqunyy | 0:fe3c7dde9771 | 56 | while (1) { |
wuliqunyy | 0:fe3c7dde9771 | 57 | char c = pc.getc(); |
wuliqunyy | 0:fe3c7dde9771 | 58 | if(c=='s'){ |
wuliqunyy | 0:fe3c7dde9771 | 59 | fpga_rstb = 0; //reset FPGA |
wuliqunyy | 2:9bdcd2c966de | 60 | wait_ms(100); |
wuliqunyy | 0:fe3c7dde9771 | 61 | fpga_rstb = 1; //enable FPGA |
wuliqunyy | 0:fe3c7dde9771 | 62 | wait_ms(10); |
wuliqunyy | 0:fe3c7dde9771 | 63 | //i2c_keyEntry(i2c_master); |
wuliqunyy | 2:9bdcd2c966de | 64 | ack+=i2c_word_write(i2c_master,i2cPositionPulseSetup); |
wuliqunyy | 2:9bdcd2c966de | 65 | wait_ms(10); |
wuliqunyy | 2:9bdcd2c966de | 66 | ack+=i2c_word_write(i2c_master,i2cStartMotor); |
wuliqunyy | 0:fe3c7dde9771 | 67 | wait_ms(10); |
wuliqunyy | 2:9bdcd2c966de | 68 | //ack+=i2c_word_read(i2c_master,i2cStartUpRead); |
wuliqunyy | 0:fe3c7dde9771 | 69 | led1 = ack; |
wuliqunyy | 2:9bdcd2c966de | 70 | //pc.printf("d[0]=%2d\n",i2cStartUpRead[3]); |
wuliqunyy | 2:9bdcd2c966de | 71 | //pc.printf("d[1]=%2d\n",i2cStartUpRead[2]); |
wuliqunyy | 0:fe3c7dde9771 | 72 | } |
wuliqunyy | 0:fe3c7dde9771 | 73 | if(c=='t'){ |
wuliqunyy | 0:fe3c7dde9771 | 74 | fpga_rstb = 0; //disable FPGA |
wuliqunyy | 0:fe3c7dde9771 | 75 | led1 = 0; |
wuliqunyy | 0:fe3c7dde9771 | 76 | |
wuliqunyy | 0:fe3c7dde9771 | 77 | } |
wuliqunyy | 0:fe3c7dde9771 | 78 | } |
wuliqunyy | 0:fe3c7dde9771 | 79 | |
wuliqunyy | 0:fe3c7dde9771 | 80 | |
wuliqunyy | 0:fe3c7dde9771 | 81 | |
wuliqunyy | 0:fe3c7dde9771 | 82 | // fpga_rstb.write(1); |
wuliqunyy | 0:fe3c7dde9771 | 83 | // |
wuliqunyy | 0:fe3c7dde9771 | 84 | // wait_us(10000); //10ms |
wuliqunyy | 0:fe3c7dde9771 | 85 | // |
wuliqunyy | 0:fe3c7dde9771 | 86 | //// i2c_master.start(); |
wuliqunyy | 0:fe3c7dde9771 | 87 | //// wait_ms(200); |
wuliqunyy | 0:fe3c7dde9771 | 88 | //// i2c_master.stop(); |
wuliqunyy | 0:fe3c7dde9771 | 89 | // |
wuliqunyy | 0:fe3c7dde9771 | 90 | // ack+=i2c_keyEntry(i2c_master); |
wuliqunyy | 0:fe3c7dde9771 | 91 | // |
wuliqunyy | 0:fe3c7dde9771 | 92 | // //ack+=ctrPort_ReadActive(i2c_master); |
wuliqunyy | 0:fe3c7dde9771 | 93 | // buff[0] = 0x00; |
wuliqunyy | 0:fe3c7dde9771 | 94 | // buff[1] = 0x30; |
wuliqunyy | 0:fe3c7dde9771 | 95 | // buff[2] = 0x00; |
wuliqunyy | 0:fe3c7dde9771 | 96 | // buff[3] = 0x01; |
wuliqunyy | 0:fe3c7dde9771 | 97 | // |
wuliqunyy | 0:fe3c7dde9771 | 98 | // ack+=i2c_word_write(i2c_master, buff); |
wuliqunyy | 0:fe3c7dde9771 | 99 | // buff[0] = 0x00; |
wuliqunyy | 0:fe3c7dde9771 | 100 | // buff[1] = 0x0A; |
wuliqunyy | 0:fe3c7dde9771 | 101 | // buff[2] = 0x00; |
wuliqunyy | 0:fe3c7dde9771 | 102 | // buff[3] = 0x00; |
wuliqunyy | 0:fe3c7dde9771 | 103 | // |
wuliqunyy | 0:fe3c7dde9771 | 104 | // ack+=i2c_word_read(i2c_master, buff); |
wuliqunyy | 0:fe3c7dde9771 | 105 | // |
wuliqunyy | 0:fe3c7dde9771 | 106 | // wait_us(100); |
wuliqunyy | 0:fe3c7dde9771 | 107 | // |
wuliqunyy | 0:fe3c7dde9771 | 108 | // pc.printf("d[0]=%2d\n", buff[3]); |
wuliqunyy | 0:fe3c7dde9771 | 109 | // pc.printf("d[1]=%2d\n", buff[2]); |
wuliqunyy | 0:fe3c7dde9771 | 110 | // pc.printf("ack=%2d\n", ack); |
wuliqunyy | 0:fe3c7dde9771 | 111 | // pc.printf("endl\n"); |
wuliqunyy | 0:fe3c7dde9771 | 112 | // |
wuliqunyy | 0:fe3c7dde9771 | 113 | // |
wuliqunyy | 0:fe3c7dde9771 | 114 | // while (1) { |
wuliqunyy | 0:fe3c7dde9771 | 115 | // led1 = !led1; |
wuliqunyy | 0:fe3c7dde9771 | 116 | // wait(1); |
wuliqunyy | 0:fe3c7dde9771 | 117 | // } |
wuliqunyy | 0:fe3c7dde9771 | 118 | } |