for learning

Dependencies:   mbed FastPWM

Committer:
Lightvalve
Date:
Fri Feb 19 11:23:51 2021 +0000
Revision:
253:0246366e0dcb
Parent:
170:42c938a40313
Child:
255:aa424a9ca332
210219 - forcesensor sign changed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
GiJeongKim 0:51c43836c1d7 1 #include "mbed.h"
GiJeongKim 0:51c43836c1d7 2 #include "setting.h"
GiJeongKim 0:51c43836c1d7 3 #include "SPI_EEP_ENC.h"
GiJeongKim 0:51c43836c1d7 4
GiJeongKim 0:51c43836c1d7 5 // EEPROM
Lightvalve 170:42c938a40313 6 void spi_eeprom_ready(void){
Lightvalve 170:42c938a40313 7 int temp1, temp2;
Lightvalve 170:42c938a40313 8 do{
Lightvalve 170:42c938a40313 9 eeprom_cs=0;
Lightvalve 170:42c938a40313 10 eeprom.write(0x06); //write enable
Lightvalve 170:42c938a40313 11 eeprom_cs=1;
Lightvalve 170:42c938a40313 12
Lightvalve 170:42c938a40313 13 eeprom_cs=0;
Lightvalve 170:42c938a40313 14 temp1 = eeprom.write(0x05);
Lightvalve 170:42c938a40313 15 temp2 = eeprom.write(0x00);
Lightvalve 170:42c938a40313 16 eeprom_cs=1;
Lightvalve 170:42c938a40313 17 temp2=(temp2&(0x03))!= 0x02;
Lightvalve 170:42c938a40313 18 } while(temp2); // before writing or reading
Lightvalve 170:42c938a40313 19 }
Lightvalve 170:42c938a40313 20
Lightvalve 253:0246366e0dcb 21 // void spi_eeprom_write(unsigned short add, unsigned int data){
Lightvalve 253:0246366e0dcb 22 // spi_eeprom_ready();
Lightvalve 253:0246366e0dcb 23 // add=add*4;
Lightvalve 253:0246366e0dcb 24 // eeprom_cs=0;
Lightvalve 253:0246366e0dcb 25 // eeprom.write(0x02);
Lightvalve 253:0246366e0dcb 26 // eeprom.write(0xff&(add>>8));
Lightvalve 253:0246366e0dcb 27 // eeprom.write(0xff&add);
Lightvalve 253:0246366e0dcb 28 // eeprom.write(0xff&data);
Lightvalve 253:0246366e0dcb 29 // eeprom.write(0xff&(data>>8));
Lightvalve 253:0246366e0dcb 30 // eeprom.write(0xff&(data>>16));
Lightvalve 253:0246366e0dcb 31 // eeprom.write(0xff&(data>>24));
Lightvalve 253:0246366e0dcb 32 // eeprom_cs=1;
Lightvalve 253:0246366e0dcb 33 //}
Lightvalve 253:0246366e0dcb 34 void spi_eeprom_write(unsigned short add, int data){
Lightvalve 170:42c938a40313 35 spi_eeprom_ready();
Lightvalve 170:42c938a40313 36 add=add*4;
Lightvalve 170:42c938a40313 37 eeprom_cs=0;
Lightvalve 170:42c938a40313 38 eeprom.write(0x02);
Lightvalve 170:42c938a40313 39 eeprom.write(0xff&(add>>8));
Lightvalve 170:42c938a40313 40 eeprom.write(0xff&add);
Lightvalve 170:42c938a40313 41 eeprom.write(0xff&data);
Lightvalve 170:42c938a40313 42 eeprom.write(0xff&(data>>8));
Lightvalve 170:42c938a40313 43 eeprom.write(0xff&(data>>16));
Lightvalve 170:42c938a40313 44 eeprom.write(0xff&(data>>24));
Lightvalve 170:42c938a40313 45 eeprom_cs=1;
Lightvalve 170:42c938a40313 46 }
Lightvalve 170:42c938a40313 47
Lightvalve 253:0246366e0dcb 48 //unsigned int spi_eeprom_read(unsigned short add){
Lightvalve 253:0246366e0dcb 49 // add=add*4;
Lightvalve 253:0246366e0dcb 50 // eeprom_cs=0;
Lightvalve 253:0246366e0dcb 51 // eeprom.write(0x03);
Lightvalve 253:0246366e0dcb 52 // eeprom.write(0xff&(add>>8));
Lightvalve 253:0246366e0dcb 53 // eeprom.write(0xff&add);
Lightvalve 253:0246366e0dcb 54 //
Lightvalve 253:0246366e0dcb 55 // int a1 = eeprom.write(0x00);
Lightvalve 253:0246366e0dcb 56 // int a2 = eeprom.write(0x00);
Lightvalve 253:0246366e0dcb 57 // int a3 = eeprom.write(0x00);
Lightvalve 253:0246366e0dcb 58 // int a4 = eeprom.write(0x00);
Lightvalve 253:0246366e0dcb 59 // eeprom_cs=1;
Lightvalve 253:0246366e0dcb 60 // //unsigned int final = (a4<<24)+(a3<<16) + (a2<<8) + a1;
Lightvalve 253:0246366e0dcb 61 // unsigned int final = (int32_t) (a1 | a2 << 8 | a3 << 16 | a4 << 24);
Lightvalve 253:0246366e0dcb 62 // return final;
Lightvalve 253:0246366e0dcb 63 // }
Lightvalve 253:0246366e0dcb 64 int spi_eeprom_read(unsigned short add){
Lightvalve 170:42c938a40313 65 add=add*4;
Lightvalve 170:42c938a40313 66 eeprom_cs=0;
Lightvalve 170:42c938a40313 67 eeprom.write(0x03);
Lightvalve 170:42c938a40313 68 eeprom.write(0xff&(add>>8));
Lightvalve 170:42c938a40313 69 eeprom.write(0xff&add);
Lightvalve 170:42c938a40313 70
Lightvalve 170:42c938a40313 71 int a1 = eeprom.write(0x00);
Lightvalve 170:42c938a40313 72 int a2 = eeprom.write(0x00);
Lightvalve 170:42c938a40313 73 int a3 = eeprom.write(0x00);
Lightvalve 170:42c938a40313 74 int a4 = eeprom.write(0x00);
Lightvalve 170:42c938a40313 75 eeprom_cs=1;
Lightvalve 170:42c938a40313 76 //unsigned int final = (a4<<24)+(a3<<16) + (a2<<8) + a1;
Lightvalve 253:0246366e0dcb 77 int final = (int32_t) (a1 | a2 << 8 | a3 << 16 | a4 << 24);
Lightvalve 170:42c938a40313 78 return final;
Lightvalve 170:42c938a40313 79 }
GiJeongKim 0:51c43836c1d7 80
GiJeongKim 0:51c43836c1d7 81
GiJeongKim 0:51c43836c1d7 82 // ENCODER
GiJeongKim 0:51c43836c1d7 83 void spi_enc_set_clear(void){
GiJeongKim 0:51c43836c1d7 84 unsigned int temp;
GiJeongKim 0:51c43836c1d7 85 enc_cs = 0;
GiJeongKim 0:51c43836c1d7 86 temp = enc.write(0b00100000);
GiJeongKim 0:51c43836c1d7 87 enc_cs = 1;
GiJeongKim 0:51c43836c1d7 88 }
GiJeongKim 0:51c43836c1d7 89
GiJeongKim 0:51c43836c1d7 90 void spi_enc_set_init(void){
GiJeongKim 0:51c43836c1d7 91 unsigned int temp, i, temp1, temp2;
GiJeongKim 0:51c43836c1d7 92
GiJeongKim 0:51c43836c1d7 93 // write MDR0 -> 0b11 -> x4 quadrature count mode
GiJeongKim 0:51c43836c1d7 94 enc_cs = 0;
GiJeongKim 0:51c43836c1d7 95 temp = enc.write(0b10001000); // WR + MDR0
GiJeongKim 0:51c43836c1d7 96 temp = enc.write(0b00000011); // quadratue mode
GiJeongKim 0:51c43836c1d7 97 enc_cs = 1;
GiJeongKim 0:51c43836c1d7 98
GiJeongKim 0:51c43836c1d7 99 // write MDR1 -> 0b10 -> 2-byte counter mode
GiJeongKim 0:51c43836c1d7 100 for(i=0;i<100;i++);
GiJeongKim 0:51c43836c1d7 101 enc_cs = 0;
GiJeongKim 0:51c43836c1d7 102 temp = enc.write(0b10010000); // WR + MDR1
GiJeongKim 0:51c43836c1d7 103 //temp = enc.write(0b00000010); // 2 byte mode
GiJeongKim 0:51c43836c1d7 104 temp = enc.write(0b00000000); // 4 byte mode
GiJeongKim 0:51c43836c1d7 105 enc_cs = 1;
GiJeongKim 0:51c43836c1d7 106
GiJeongKim 0:51c43836c1d7 107 // clear
GiJeongKim 0:51c43836c1d7 108 spi_enc_set_clear();
GiJeongKim 0:51c43836c1d7 109 }
GiJeongKim 0:51c43836c1d7 110
GiJeongKim 0:51c43836c1d7 111
GiJeongKim 0:51c43836c1d7 112 int spi_enc_read(void){
GiJeongKim 0:51c43836c1d7 113 //for(t_i=0;t_i<100;t_i++);
GiJeongKim 0:51c43836c1d7 114 unsigned int t_dummy, t_b1, t_b2, t_b3, t_b4, t_i;
GiJeongKim 0:51c43836c1d7 115 enc_cs = 0;
GiJeongKim 0:51c43836c1d7 116 t_dummy = enc.write(0b01100000); // Read Commend
GiJeongKim 0:51c43836c1d7 117 t_b1 = enc.write(0x00); // Dummy data for clock
GiJeongKim 0:51c43836c1d7 118 t_b2 = enc.write(0x00); // Dummy data for clock
GiJeongKim 0:51c43836c1d7 119 t_b3 = enc.write(0x00); // Dummy data for clock
GiJeongKim 0:51c43836c1d7 120 t_b4 = enc.write(0x00); // Dummy data for clock
GiJeongKim 0:51c43836c1d7 121 enc_cs = 1;
GiJeongKim 0:51c43836c1d7 122
GiJeongKim 0:51c43836c1d7 123 return((t_b1<<24) + (t_b2<<16) + (t_b3<<8) + t_b4);
GiJeongKim 0:51c43836c1d7 124 }