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@0:fb3e19364d48, 2016-01-26 (annotated)
- Committer:
- EmbeddedSam
- Date:
- Tue Jan 26 12:54:37 2016 +0000
- Revision:
- 0:fb3e19364d48
Working
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| EmbeddedSam | 0:fb3e19364d48 | 1 | #include "mbed.h" |
| EmbeddedSam | 0:fb3e19364d48 | 2 | |
| EmbeddedSam | 0:fb3e19364d48 | 3 | #define TICKS_PER_REVOLUTION 12.0 |
| EmbeddedSam | 0:fb3e19364d48 | 4 | #define TICK_CHECK_PERIOD 0.1 |
| EmbeddedSam | 0:fb3e19364d48 | 5 | |
| EmbeddedSam | 0:fb3e19364d48 | 6 | DigitalOut myled(LED1); |
| EmbeddedSam | 0:fb3e19364d48 | 7 | Serial pc(USBTX, USBRX); // tx, rx |
| EmbeddedSam | 0:fb3e19364d48 | 8 | Ticker periodicTimer1, periodicTimer2; |
| EmbeddedSam | 0:fb3e19364d48 | 9 | |
| EmbeddedSam | 0:fb3e19364d48 | 10 | float speed_rpm, speed_rps, ticks_per_second; |
| EmbeddedSam | 0:fb3e19364d48 | 11 | volatile unsigned int tick_counter, final_count; |
| EmbeddedSam | 0:fb3e19364d48 | 12 | |
| EmbeddedSam | 0:fb3e19364d48 | 13 | InterruptIn freqInputPin(D2); |
| EmbeddedSam | 0:fb3e19364d48 | 14 | |
| EmbeddedSam | 0:fb3e19364d48 | 15 | void freqInputPin_Interrupt() { |
| EmbeddedSam | 0:fb3e19364d48 | 16 | //Triggers on the rising edge of the frequency signal |
| EmbeddedSam | 0:fb3e19364d48 | 17 | tick_counter++; |
| EmbeddedSam | 0:fb3e19364d48 | 18 | } |
| EmbeddedSam | 0:fb3e19364d48 | 19 | |
| EmbeddedSam | 0:fb3e19364d48 | 20 | void check_TickCount(){ |
| EmbeddedSam | 0:fb3e19364d48 | 21 | final_count = tick_counter; |
| EmbeddedSam | 0:fb3e19364d48 | 22 | //pc.printf("\n\rTick Count is : %d", final_count); |
| EmbeddedSam | 0:fb3e19364d48 | 23 | tick_counter = 0; |
| EmbeddedSam | 0:fb3e19364d48 | 24 | } |
| EmbeddedSam | 0:fb3e19364d48 | 25 | |
| EmbeddedSam | 0:fb3e19364d48 | 26 | void display_TickCount(){ |
| EmbeddedSam | 0:fb3e19364d48 | 27 | //pc.printf("\n\r Final Count is : %.2f", (float) final_count*(1.0/TICK_CHECK_PERIOD)); |
| EmbeddedSam | 0:fb3e19364d48 | 28 | pc.printf("\n\r Speed in RPM is : %.2f", (float)(final_count*(1.0/TICK_CHECK_PERIOD))*(60.0/TICKS_PER_REVOLUTION)); |
| EmbeddedSam | 0:fb3e19364d48 | 29 | } |
| EmbeddedSam | 0:fb3e19364d48 | 30 | |
| EmbeddedSam | 0:fb3e19364d48 | 31 | int main() { |
| EmbeddedSam | 0:fb3e19364d48 | 32 | freqInputPin.rise(&freqInputPin_Interrupt); //chain interrupt to rising edge |
| EmbeddedSam | 0:fb3e19364d48 | 33 | periodicTimer1.attach(&check_TickCount, TICK_CHECK_PERIOD); |
| EmbeddedSam | 0:fb3e19364d48 | 34 | periodicTimer2.attach(&display_TickCount, 1.0); //Display conut once a second |
| EmbeddedSam | 0:fb3e19364d48 | 35 | while(1) { |
| EmbeddedSam | 0:fb3e19364d48 | 36 | } |
| EmbeddedSam | 0:fb3e19364d48 | 37 | } |