Maciej Zemlo
/
PRS_R1_AssTest
netemera prs
main.cpp
- Committer:
- yabool2001
- Date:
- 2019-03-26
- Revision:
- 2:9342176884e3
- Parent:
- 1:db05ea2d0fe7
File content as of revision 2:9342176884e3:
#include "mbed.h" Serial serial ( PA_9 , NC ); //SPI conf SPI spi ( PB_15 , PB_14 , PB_13 ); //FRAM SPI CS conf DigitalOut fram_cs ( PB_12 ); DigitalOut led_blue ( PA_5 ); DigitalOut led_red ( PA_8 ); DigitalOut led_orange ( PA_10 ); DigitalIn pulse ( PA_2 ); DigitalIn pulse_safe ( PB_5 ); DigitalIn flow_dir ( PB_9 ); DigitalIn case_open ( PA_3 ); DigitalIn sw1 ( PB_2 ); DigitalIn sw2 ( PB_6 ); DigitalIn sw3 ( PB_7 ); int fram_rdsr = 0x01; int bit = 0; InterruptIn int_pa_0 ( PA_0 ); // Toggle LED void toggle_led () { serial .printf ( "int_pa_0 happened!:\n\r" ); wait (0.1); if ( pulse == 1 ) led_blue = !led_blue; if ( pulse_safe == 1 ) led_red = !led_red; if ( flow_dir == 1 ) led_orange = !led_orange; } void fram_cs_free () { wait_us ( 10 ); fram_cs = 1; wait_us ( 10 ); } void fram_cs_busy () { wait_us ( 10 ); fram_cs = 0; wait_us ( 10 ); } int main() { //DIP switch pin set the mode to Pull Up sw1 .mode (PullUp); sw2 .mode (PullUp); sw3 .mode (PullUp); led_blue = 1; led_red = 1; led_orange = 1; wait (1); // SPI conf spi.format ( 8 , 0 ); spi.frequency ( 8000000 ); // FRAM RDSR ( Read Status Register ) fram_cs_busy (); spi.write ( 0x05 ); fram_rdsr = spi.write ( 0x00 ); fram_cs_free (); serial.printf ( "FRAM RDSR = 0x%X\n\r" , fram_rdsr ); bit = ( fram_rdsr >> 1 ) & 1U; serial.printf ( "FRAM RDSR WEL bit = %u\n\r" , bit ); // FRAM WRSR ( Write Status Register ) Toggle WEL bit fram_rdsr ^= 1UL << 1; fram_cs_busy (); if ( !bit ) spi.write ( 0x06 ); // Set Write Enable Latch spi.write ( 0x01 ); // Write Status Register spi.write ( fram_rdsr ); // Write toggled WEL bit fram_cs_free (); serial.printf ( "Toggle WEL bit"); // FRAM RDSR ( Read Status Register ) fram_cs_busy (); spi.write ( 0x05 ); fram_rdsr = spi.write ( 0x00 ); fram_cs_free (); serial.printf ( "FRAM RDSR = 0x%X\n\r" , fram_rdsr ); bit = ( fram_rdsr >> 1 ) & 1U; serial.printf ( "FRAM RDSR WEL bit = %u\n\r" , bit ); // Change LEDs blinking frequency when pulse int_pa_0.rise ( &toggle_led ); while ( 1 ) { wait ( 5 ); serial.printf ( "DIP switch status:\n\r" ); ( sw1 ) ? serial .printf ( "SW1 = 1\n\r" ) : serial .printf ( "SW1 = 0\n\r" ); ( sw2 ) ? serial .printf ( "SW2 = 1\n\r" ) : serial .printf ( "SW2 = 0\n\r" ); ( sw3 ) ? serial .printf ( "SW3 = 1\n\r" ) : serial .printf ( "SW3 = 0\n\r" ); serial.printf ( "Pulse status:\n\r" ); ( pulse ) ? serial .printf ( "pulse = 1\n\r" ) : serial .printf ( "pulse = 0\n\r" ); ( pulse_safe ) ? serial .printf ( "pulse_safe = 1\n\r" ) : serial .printf ( "pulse_safe = 0\n\r" ); ( flow_dir ) ? serial .printf ( "flow_dir = 1\n\r" ) : serial .printf ( "flow_dir = 0\n\r" ); } }