code ax12 petit robot 12/05/2017

Fork of command_AX12_petit_robot_V3 by CRAC Team

Committer:
ClementBreteau
Date:
Fri May 12 14:35:09 2017 +0000
Revision:
7:ad4a19e26b84
Parent:
2:99b1cb0d9f5e
position ax12

Who changed what in which revision?

UserRevisionLine numberNew contents of line
SquirrelGod 2:99b1cb0d9f5e 1 /* mbed Microcontroller Library - Ticker
SquirrelGod 2:99b1cb0d9f5e 2 * Copyright (c) 2007-2009 ARM Limited. All rights reserved.
SquirrelGod 2:99b1cb0d9f5e 3 */
SquirrelGod 2:99b1cb0d9f5e 4
SquirrelGod 2:99b1cb0d9f5e 5 #ifndef MBED_TICKER_H
SquirrelGod 2:99b1cb0d9f5e 6 #define MBED_TICKER_H
SquirrelGod 2:99b1cb0d9f5e 7
SquirrelGod 2:99b1cb0d9f5e 8 #include "TimerEvent.h"
SquirrelGod 2:99b1cb0d9f5e 9 #include "FunctionPointer.h"
SquirrelGod 2:99b1cb0d9f5e 10
SquirrelGod 2:99b1cb0d9f5e 11 namespace mbed {
SquirrelGod 2:99b1cb0d9f5e 12
SquirrelGod 2:99b1cb0d9f5e 13 /* Class: Ticker
SquirrelGod 2:99b1cb0d9f5e 14 * A Ticker is used to call a function at a recurring interval
SquirrelGod 2:99b1cb0d9f5e 15 *
SquirrelGod 2:99b1cb0d9f5e 16 * You can use as many seperate Ticker objects as you require.
SquirrelGod 2:99b1cb0d9f5e 17 *
SquirrelGod 2:99b1cb0d9f5e 18 * Example:
SquirrelGod 2:99b1cb0d9f5e 19 * > // Toggle the blinking led after 5 seconds
SquirrelGod 2:99b1cb0d9f5e 20 * >
SquirrelGod 2:99b1cb0d9f5e 21 * > #include "mbed.h"
SquirrelGod 2:99b1cb0d9f5e 22 * >
SquirrelGod 2:99b1cb0d9f5e 23 * > Ticker timer;
SquirrelGod 2:99b1cb0d9f5e 24 * > DigitalOut led1(LED1);
SquirrelGod 2:99b1cb0d9f5e 25 * > DigitalOut led2(LED2);
SquirrelGod 2:99b1cb0d9f5e 26 * >
SquirrelGod 2:99b1cb0d9f5e 27 * > int flip = 0;
SquirrelGod 2:99b1cb0d9f5e 28 * >
SquirrelGod 2:99b1cb0d9f5e 29 * > void attime() {
SquirrelGod 2:99b1cb0d9f5e 30 * > flip = !flip;
SquirrelGod 2:99b1cb0d9f5e 31 * > }
SquirrelGod 2:99b1cb0d9f5e 32 * >
SquirrelGod 2:99b1cb0d9f5e 33 * > int main() {
SquirrelGod 2:99b1cb0d9f5e 34 * > timer.attach(&attime, 5);
SquirrelGod 2:99b1cb0d9f5e 35 * > while(1) {
SquirrelGod 2:99b1cb0d9f5e 36 * > if(flip == 0) {
SquirrelGod 2:99b1cb0d9f5e 37 * > led1 = !led1;
SquirrelGod 2:99b1cb0d9f5e 38 * > } else {
SquirrelGod 2:99b1cb0d9f5e 39 * > led2 = !led2;
SquirrelGod 2:99b1cb0d9f5e 40 * > }
SquirrelGod 2:99b1cb0d9f5e 41 * > wait(0.2);
SquirrelGod 2:99b1cb0d9f5e 42 * > }
SquirrelGod 2:99b1cb0d9f5e 43 * > }
SquirrelGod 2:99b1cb0d9f5e 44 *
SquirrelGod 2:99b1cb0d9f5e 45 */
SquirrelGod 2:99b1cb0d9f5e 46 class Ticker : public TimerEvent {
SquirrelGod 2:99b1cb0d9f5e 47
SquirrelGod 2:99b1cb0d9f5e 48 public:
SquirrelGod 2:99b1cb0d9f5e 49
SquirrelGod 2:99b1cb0d9f5e 50 /* Function: attach
SquirrelGod 2:99b1cb0d9f5e 51 * Attach a function to be called by the Ticker, specifiying the interval in seconds
SquirrelGod 2:99b1cb0d9f5e 52 *
SquirrelGod 2:99b1cb0d9f5e 53 * Variables:
SquirrelGod 2:99b1cb0d9f5e 54 * fptr - pointer to the function to be called
SquirrelGod 2:99b1cb0d9f5e 55 * t - the time between calls in seconds
SquirrelGod 2:99b1cb0d9f5e 56 */
SquirrelGod 2:99b1cb0d9f5e 57 void attach(void (*fptr)(void), float t) {
SquirrelGod 2:99b1cb0d9f5e 58 attach_us(fptr, t * 1000000.0f);
SquirrelGod 2:99b1cb0d9f5e 59 }
SquirrelGod 2:99b1cb0d9f5e 60
SquirrelGod 2:99b1cb0d9f5e 61 /* Function: attach
SquirrelGod 2:99b1cb0d9f5e 62 * Attach a member function to be called by the Ticker, specifiying the interval in seconds
SquirrelGod 2:99b1cb0d9f5e 63 *
SquirrelGod 2:99b1cb0d9f5e 64 * Variables:
SquirrelGod 2:99b1cb0d9f5e 65 * tptr - pointer to the object to call the member function on
SquirrelGod 2:99b1cb0d9f5e 66 * mptr - pointer to the member function to be called
SquirrelGod 2:99b1cb0d9f5e 67 * t - the time between calls in seconds
SquirrelGod 2:99b1cb0d9f5e 68 */
SquirrelGod 2:99b1cb0d9f5e 69 template<typename T>
SquirrelGod 2:99b1cb0d9f5e 70 void attach(T* tptr, void (T::*mptr)(void), float t) {
SquirrelGod 2:99b1cb0d9f5e 71 attach_us(tptr, mptr, t * 1000000.0f);
SquirrelGod 2:99b1cb0d9f5e 72 }
SquirrelGod 2:99b1cb0d9f5e 73
SquirrelGod 2:99b1cb0d9f5e 74 /* Function: attach_us
SquirrelGod 2:99b1cb0d9f5e 75 * Attach a function to be called by the Ticker, specifiying the interval in micro-seconds
SquirrelGod 2:99b1cb0d9f5e 76 *
SquirrelGod 2:99b1cb0d9f5e 77 * Variables:
SquirrelGod 2:99b1cb0d9f5e 78 * fptr - pointer to the function to be called
SquirrelGod 2:99b1cb0d9f5e 79 * t - the time between calls in micro-seconds
SquirrelGod 2:99b1cb0d9f5e 80 */
SquirrelGod 2:99b1cb0d9f5e 81 void attach_us(void (*fptr)(void), unsigned int t) {
SquirrelGod 2:99b1cb0d9f5e 82 _function.attach(fptr);
SquirrelGod 2:99b1cb0d9f5e 83 setup(t);
SquirrelGod 2:99b1cb0d9f5e 84 }
SquirrelGod 2:99b1cb0d9f5e 85
SquirrelGod 2:99b1cb0d9f5e 86 /* Function: attach_us
SquirrelGod 2:99b1cb0d9f5e 87 * Attach a member function to be called by the Ticker, specifiying the interval in micro-seconds
SquirrelGod 2:99b1cb0d9f5e 88 *
SquirrelGod 2:99b1cb0d9f5e 89 * Variables:
SquirrelGod 2:99b1cb0d9f5e 90 * tptr - pointer to the object to call the member function on
SquirrelGod 2:99b1cb0d9f5e 91 * mptr - pointer to the member function to be called
SquirrelGod 2:99b1cb0d9f5e 92 * t - the time between calls in micro-seconds
SquirrelGod 2:99b1cb0d9f5e 93 */
SquirrelGod 2:99b1cb0d9f5e 94 template<typename T>
SquirrelGod 2:99b1cb0d9f5e 95 void attach_us(T* tptr, void (T::*mptr)(void), unsigned int t) {
SquirrelGod 2:99b1cb0d9f5e 96 _function.attach(tptr, mptr);
SquirrelGod 2:99b1cb0d9f5e 97 setup(t);
SquirrelGod 2:99b1cb0d9f5e 98 }
SquirrelGod 2:99b1cb0d9f5e 99
SquirrelGod 2:99b1cb0d9f5e 100 /* Function: detach
SquirrelGod 2:99b1cb0d9f5e 101 * Detach the function
SquirrelGod 2:99b1cb0d9f5e 102 */
SquirrelGod 2:99b1cb0d9f5e 103 void detach();
SquirrelGod 2:99b1cb0d9f5e 104
SquirrelGod 2:99b1cb0d9f5e 105 protected:
SquirrelGod 2:99b1cb0d9f5e 106
SquirrelGod 2:99b1cb0d9f5e 107 void setup(unsigned int t);
SquirrelGod 2:99b1cb0d9f5e 108 virtual void handler();
SquirrelGod 2:99b1cb0d9f5e 109
SquirrelGod 2:99b1cb0d9f5e 110 unsigned int _delay;
SquirrelGod 2:99b1cb0d9f5e 111 FunctionPointer _function;
SquirrelGod 2:99b1cb0d9f5e 112
SquirrelGod 2:99b1cb0d9f5e 113 };
SquirrelGod 2:99b1cb0d9f5e 114
SquirrelGod 2:99b1cb0d9f5e 115 } // namespace mbed
SquirrelGod 2:99b1cb0d9f5e 116
SquirrelGod 2:99b1cb0d9f5e 117 #endif