Nicholas Slocombe / Mbed 2 deprecated Measure_Part1

Dependencies:   C12832_lcd mbed

Files at this revision

API Documentation at this revision

Comitter:
nicholasslocombe
Date:
Sun May 07 19:13:35 2017 +0000
Commit message:
commimerertn

Changed in this revision

C12832_lcd.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/C12832_lcd.lib	Sun May 07 19:13:35 2017 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/dreschpe/code/C12832_lcd/#8f86576007d6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun May 07 19:13:35 2017 +0000
@@ -0,0 +1,125 @@
+/* measure.cpp verion 1.0 */
+/* wajw  25/08/15  */
+
+/* Prog to measure period of rotation of flywheel */
+/* and display value on the Application Board LCD */
+/* Generates interrupt on +ve edge of CAP2.0 (mbed pin 30) and display capture regt */
+/* ISR Stores captured Timer2 value as 'period', resets Timer 2 and sets flag */
+
+/* For test purposes, a Ticker is producing pulses on pin 29,*/
+/* and these can be used to drive CAP2.0 on pin 30 */
+/* Ticker also drives LED1 which switches after 10 pulses as health check */
+
+/* To use the Ticker - need to join pins 29 and 30 */
+
+
+#include "mbed.h"
+#include "C12832_lcd.h"
+
+//Global Variables:
+
+volatile int count = 0, period = 0;
+volatile int pflag = 0, sflag = 0;
+C12832_LCD lcd;
+
+// Function Prototypes:
+
+void led_switch(void);  
+void Tick1_isr (void);
+void Timer2_isr (void);
+void Timer2_init (void);
+
+// Diagnostic Features:
+
+Ticker Tick; //Tick produces a periodic interrupt
+DigitalOut myled(LED1); //myled is diagnostic O/P driven by Ticker
+DigitalOut displed(LED2); //displed is diagnostic O/P driven by Timer2_isr()
+DigitalOut pulse(p29); //Pulse output for testing measure software
+
+//Function Declarations:
+
+void led_switch() 
+// Function which Toggles LED1 
+{ 
+    myled=!myled;
+}
+
+void Timer2_init()
+{
+// Connect pin 30 to CAP2.0:
+
+   LPC_PINCON->PINSEL0 |= (0x3<<8);    // Bits 9,8 = 1,1 = pin function CAP2.0 (p30)
+
+//Configure Timer 2:
+
+   LPC_SC->PCONP |= (0x01 << 22); // Enable Timer 2
+   LPC_SC->PCLKSEL1 |= (0x01 << 12) ; //Timer2 to use CCLK
+   LPC_TIM2->PR = 9600 - 1; //Set Timer2 prescale 
+   LPC_TIM2->TCR |= (0x01); //Enable Timer2
+   LPC_TIM2->CTCR |= (0x00); // Timer2 in timer mode
+   LPC_TIM2->TC = (0x00); //Initialise Timer2  
+   
+//Configure Capture input mode:
+
+   LPC_TIM2->CCR |= (0x01);  //Capture on +ve edge of CAP2.0
+   LPC_TIM2->CCR |= (0x01 << 2);  //Generate Interrupt on +ve edge CAP2.0
+}
+
+void T1_isr() 
+//ISR which flips the ulse O/P and sets sflag after 1 second
+{  
+    pulse = !pulse; //  flip the pulse O/P
+    count++; 
+    if (count >= 10) { 
+      count = 0;   //1 second has passed
+      sflag = 1;
+      }
+}
+
+void Timer2_isr()
+ //Interrupt caused by +ve pulse on CAP2.0
+ //Captured value = period 
+ 
+ {
+     if ((LPC_TIM2->IR & 0x10) != 0) {    //Check CAP2.0 Interrupt?
+         period = LPC_TIM2->CR0;        //save period
+         LPC_TIM2->TC = (0x00);         //Reset Timer2    
+         LPC_TIM2->IR = 0x10;           // clear CAP2.0 interrupt
+         displed = !displed;            //toggle diagnostic LED
+         pflag = 1;                     //New period available           
+         }
+ }
+ 
+ 
+int main()
+{ 
+
+   Timer2_init();
+   
+   Tick.attach_us(&T1_isr, 50000);   //initializes the ticker with period of 50msec
+                                  //and attaches it to T1 ISR
+
+
+//Associate Timer2_isr to Interrupt from Timer 2:
+
+   NVIC_SetVector(TIMER2_IRQn, (uint32_t)Timer2_isr); 
+   NVIC_EnableIRQ(TIMER2_IRQn); //Enable Interrupts on Timer 2
+
+  
+
+   lcd.cls();
+   lcd.locate(0,0);
+   lcd.printf("Period in Timer 2 Counts");
+    while(1) {
+        if (pflag == 1) // new data?
+        {        
+        lcd.locate(0,15);
+        lcd.printf("Period: %d", period); //display captured data
+        pflag = 0; //reset flag
+        }
+        if (sflag ==1){
+            led_switch(); //blink light
+            sflag = 0;
+            }
+        }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Sun May 07 19:13:35 2017 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/mbed_official/code/mbed/builds/856d2700e60b
\ No newline at end of file