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.
main.cpp
00001 #include "mbed.h" 00002 00003 Serial serial ( PA_9 , NC ); 00004 00005 //SPI conf 00006 SPI spi ( PB_15 , PB_14 , PB_13 ); 00007 //FRAM SPI CS conf 00008 DigitalOut fram_cs ( PB_12 ); 00009 00010 DigitalOut led_blue ( PA_5 ); 00011 DigitalOut led_red ( PA_8 ); 00012 DigitalOut led_orange ( PA_10 ); 00013 00014 DigitalIn pulse ( PA_2 ); 00015 DigitalIn pulse_safe ( PB_5 ); 00016 DigitalIn flow_dir ( PB_9 ); 00017 DigitalIn case_open ( PA_3 ); 00018 DigitalIn sw1 ( PB_2 ); 00019 DigitalIn sw2 ( PB_6 ); 00020 DigitalIn sw3 ( PB_7 ); 00021 00022 int fram_rdsr = 0x01; 00023 int bit = 0; 00024 00025 InterruptIn int_pa_0 ( PA_0 ); 00026 00027 // Toggle LED 00028 void toggle_led () 00029 { 00030 serial .printf ( "int_pa_0 happened!:\n\r" ); 00031 wait (0.1); 00032 if ( pulse == 1 ) led_blue = !led_blue; 00033 if ( pulse_safe == 1 ) led_red = !led_red; 00034 if ( flow_dir == 1 ) led_orange = !led_orange; 00035 } 00036 void fram_cs_free () 00037 { 00038 wait_us ( 10 ); fram_cs = 1; wait_us ( 10 ); 00039 } 00040 void fram_cs_busy () 00041 { 00042 wait_us ( 10 ); fram_cs = 0; wait_us ( 10 ); 00043 } 00044 00045 int main() { 00046 00047 //DIP switch pin set the mode to Pull Up 00048 sw1 .mode (PullUp); 00049 sw2 .mode (PullUp); 00050 sw3 .mode (PullUp); 00051 00052 led_blue = 1; 00053 led_red = 1; 00054 led_orange = 1; 00055 00056 wait (1); 00057 // SPI conf 00058 spi.format ( 8 , 0 ); 00059 spi.frequency ( 8000000 ); 00060 00061 // FRAM RDSR ( Read Status Register ) 00062 fram_cs_busy (); 00063 spi.write ( 0x05 ); 00064 fram_rdsr = spi.write ( 0x00 ); 00065 fram_cs_free (); 00066 serial.printf ( "FRAM RDSR = 0x%X\n\r" , fram_rdsr ); 00067 bit = ( fram_rdsr >> 1 ) & 1U; 00068 serial.printf ( "FRAM RDSR WEL bit = %u\n\r" , bit ); 00069 00070 // FRAM WRSR ( Write Status Register ) Toggle WEL bit 00071 fram_rdsr ^= 1UL << 1; 00072 fram_cs_busy (); 00073 if ( !bit ) 00074 spi.write ( 0x06 ); // Set Write Enable Latch 00075 spi.write ( 0x01 ); // Write Status Register 00076 spi.write ( fram_rdsr ); // Write toggled WEL bit 00077 fram_cs_free (); 00078 serial.printf ( "Toggle WEL bit"); 00079 00080 // FRAM RDSR ( Read Status Register ) 00081 fram_cs_busy (); 00082 spi.write ( 0x05 ); 00083 fram_rdsr = spi.write ( 0x00 ); 00084 fram_cs_free (); 00085 serial.printf ( "FRAM RDSR = 0x%X\n\r" , fram_rdsr ); 00086 bit = ( fram_rdsr >> 1 ) & 1U; 00087 serial.printf ( "FRAM RDSR WEL bit = %u\n\r" , bit ); 00088 00089 // Change LEDs blinking frequency when pulse 00090 int_pa_0.rise ( &toggle_led ); 00091 00092 while ( 1 ) 00093 { 00094 wait ( 5 ); 00095 00096 serial.printf ( "DIP switch status:\n\r" ); 00097 ( sw1 ) ? serial .printf ( "SW1 = 1\n\r" ) : serial .printf ( "SW1 = 0\n\r" ); 00098 ( sw2 ) ? serial .printf ( "SW2 = 1\n\r" ) : serial .printf ( "SW2 = 0\n\r" ); 00099 ( sw3 ) ? serial .printf ( "SW3 = 1\n\r" ) : serial .printf ( "SW3 = 0\n\r" ); 00100 00101 serial.printf ( "Pulse status:\n\r" ); 00102 ( pulse ) ? serial .printf ( "pulse = 1\n\r" ) : serial .printf ( "pulse = 0\n\r" ); 00103 ( pulse_safe ) ? serial .printf ( "pulse_safe = 1\n\r" ) : serial .printf ( "pulse_safe = 0\n\r" ); 00104 ( flow_dir ) ? serial .printf ( "flow_dir = 1\n\r" ) : serial .printf ( "flow_dir = 0\n\r" ); 00105 } 00106 }
Generated on Wed Aug 3 2022 04:53:43 by
1.7.2