diff options
Diffstat (limited to 'src/switch.cpp')
-rw-r--r-- | src/switch.cpp | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/src/switch.cpp b/src/switch.cpp deleted file mode 100644 index 2381640..0000000 --- a/src/switch.cpp +++ /dev/null @@ -1,104 +0,0 @@ -#include "mbed.h" -#include "Adafruit_SSD1306.h" - -//Switch input definition -#define SW_PIN p22 - -//Sampling period for the switch oscillator (us) -#define SW_PERIOD 20000 - -//Display interface pin definitions -#define D_MOSI_PIN p5 -#define D_CLK_PIN p7 -#define D_DC_PIN p8 -#define D_RST_PIN p9 -#define D_CS_PIN p10 - -//an SPI sub-class that sets up format and clock speed -class SPIPreInit:public SPI { - public: - SPIPreInit(PinName mosi, PinName miso, PinName clk):SPI(mosi, miso, clk) { - format(8, 3); - frequency(2000000); - }; -}; - -//Interrupt Service Routine prototypes (functions defined below) -void sedge(); -void tout(); - -//Output for the alive LED -DigitalOut alive(LED1); - -//External interrupt input from the switch oscillator -InterruptIn swin(SW_PIN); - -//Switch sampling timer -Ticker swtimer; - -//Registers for the switch counter, switch counter latch register and update flag -volatile uint16_t scounter = 0; -volatile uint16_t scount = 0; -volatile uint16_t update = 0; - -//Initialise SPI instance for communication with the display -SPIPreInit gSpi(D_MOSI_PIN, NC, D_CLK_PIN); //MOSI,MISO,CLK - -//Initialise display driver instance -Adafruit_SSD1306_Spi gOled1(gSpi, D_DC_PIN, D_RST_PIN, D_CS_PIN, 64, 128); //SPI,DC,RST,CS,Height,Width - -int main() -{ - //Initialisation - gOled1.setRotation(2); //Set display rotation - - //Attach switch oscillator counter ISR to the switch input instance for a rising edge - swin.rise(&sedge); - - //Attach switch sampling timer ISR to the timer instance with the required period - swtimer.attach_us(&tout, SW_PERIOD); - - //Write some sample text - gOled1.printf("%ux%u OLED Display\r\n", gOled1.width(), - gOled1.height()); - - //Main loop - while (1) { - //Has the update flag been set? - if (update) { - //Clear the update flag - update = 0; - - //Set text cursor - gOled1.setTextCursor(0, 0); - - //Write the latest switch osciallor count - gOled1.printf("\n%05u ", scount); - - //Copy the display buffer to the display - gOled1.display(); - - //Toggle the alive LED - alive = !alive; - } - - } -} - -//Interrupt Service Routine for rising edge on the switch oscillator input -void sedge() -{ - //Increment the edge counter - scounter++; -} - -//Interrupt Service Routine for the switch sampling timer -void tout() -{ - //Read the edge counter into the output register - scount = scounter; - //Reset the edge counter - scounter = 0; - //Trigger a display update in the main loop - update = 1; -} |