Ben Gordon
/
Muscle_Controlled_Servo
Diff: SPI.cpp
- Revision:
- 2:b615682e3e4f
- Parent:
- 1:acc66d3a1a1c
- Child:
- 3:d6e142b6ead1
--- a/SPI.cpp Sun Apr 01 15:43:02 2018 +0000 +++ b/SPI.cpp Sun Apr 01 15:54:46 2018 +0000 @@ -12,8 +12,77 @@ DigitalIn DO_NOT_USE(PB_12); // MAKE PB_12 (D19) an INPUT do NOT make an OUTPUT under any circumstances !!!!! ************* !!!!!!!!!!! // This Pin is connected to the 5VDC from the FPGA card and an INPUT is 5V Tolerant +int adval_d; //A to D value read back +float adval_f; +int err; //error variable used for debugging, trapping etc., + +char adval[32]; //Ticker ticktock; +void SPI_INIT (void) +{ + cs = 1; // Chip must be deselected, Chip Select is active LOW + LCD_cs = 1; // Chip must be deselected, Chip Select is active LOW + ADC_cs = 1; // Chip must be deselected, Chip Select is active LOW + spi.format(16,0); // Setup the DATA frame SPI for 16 bit wide word, Clock Polarity 0 and Clock Phase 0 (0) + spi_cmd.format(8,0); // Setup the COMMAND SPI as 8 Bit wide word, Clock Polarity 0 and Clock Phase 0 (0) + spi.frequency(1000000); // 1MHz clock rate + spi_cmd.frequency(1000000); // 1MHz clock rate + + adval_d = 0; //A to D value read back + adval_f =0.0f; + err = 0; //error variable used for debugging, trapping etc., + +// Preload some arrays +// char hello_world[]="Hello World"; + char splash_screen1[]="Martin Simpson"; + char splash_screen2[]="Plymouth UNI"; + char DVM[]="Voltage="; +// Start up sequences + lcd_cls(); + lcd_locate(1,1); + lcd_display(splash_screen1); //Credit line 1 + lcd_locate(2,2); + lcd_display(splash_screen2); //Credit line 2 + wait(2); + lcd_cls(); + pulse_bar_graph(); //Flashy bargraph clear screen + lcd_locate(1,0); + lcd_display(DVM); //Type Voltage display + lcd_locate(1,13); + lcd_display("V"); //Units display +} +void SPI_TEST(void) +{ + adval_d = read_adc(); + + adval_f = 3.3f*((float)adval_d/4095);//Convert 12 bit to a float and scale + sprintf(adval,"%.3f",adval_f); //Store in an array string + lcd_locate(1,8); //and display on LCD + lcd_display(adval); // + + err = bar_graph(adval_d/255); // 16*256 =4096 12 bit ADC! + if (err < 0){printf("Display Overload\r\n");} + + read_switches(); + //LED Chaser display KIT lives on! + for (uint32_t i=1;i<=128;i*=2) + { + cs = 0; //Select the device by seting chip select LOW + spi_cmd.write(0); + spi.write(i); + cs = 1; //De-Select the device by seting chip select HIGH + wait_ms(20); + } + for (uint32_t i=128;i>=1;i/=2) + { + cs = 0; //Select the device by seting chip select LOW + spi_cmd.write(0); + spi.write(i); + cs = 1; //De-Select the device by seting chip select HIGH + wait_ms(20); + } +} int lcd_cls(void){ LCD_cs = 0;spi_cmd.write(0);spi.write(0x0001);LCD_cs = 1;wait_us(CD); //Clear Screen