Maciej Zemlo / Mbed 2 deprecated PRS_R1_AssTest

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }