Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Muscle_Controlled_Servo by
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
