使用普通IO口作为红外发射和红外接收功能

Dependents:   Nucleo_F411RE_OS_Robot_Tank

Committer:
adaphoto
Date:
Tue Jun 19 12:24:24 2018 +0000
Revision:
0:355a854280cd
??????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
adaphoto 0:355a854280cd 1 /**
adaphoto 0:355a854280cd 2 * IR receiver (Version 0.0.4)
adaphoto 0:355a854280cd 3 *
adaphoto 0:355a854280cd 4 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
adaphoto 0:355a854280cd 5 * http://shinta.main.jp/
adaphoto 0:355a854280cd 6 */
adaphoto 0:355a854280cd 7
adaphoto 0:355a854280cd 8 #ifndef _RECEIVER_IR_H_
adaphoto 0:355a854280cd 9 #define _RECEIVER_IR_H_
adaphoto 0:355a854280cd 10
adaphoto 0:355a854280cd 11 #include <mbed.h>
adaphoto 0:355a854280cd 12
adaphoto 0:355a854280cd 13 #include "RemoteIR.h"
adaphoto 0:355a854280cd 14
adaphoto 0:355a854280cd 15 /**
adaphoto 0:355a854280cd 16 * IR receiver class.
adaphoto 0:355a854280cd 17 */
adaphoto 0:355a854280cd 18 class ReceiverIR {
adaphoto 0:355a854280cd 19 public:
adaphoto 0:355a854280cd 20
adaphoto 0:355a854280cd 21 /**
adaphoto 0:355a854280cd 22 * Constructor.
adaphoto 0:355a854280cd 23 *
adaphoto 0:355a854280cd 24 * @param rxpin Pin for receive IR signal.
adaphoto 0:355a854280cd 25 */
adaphoto 0:355a854280cd 26 explicit ReceiverIR(PinName rxpin);
adaphoto 0:355a854280cd 27
adaphoto 0:355a854280cd 28 /**
adaphoto 0:355a854280cd 29 * Destructor.
adaphoto 0:355a854280cd 30 */
adaphoto 0:355a854280cd 31 ~ReceiverIR();
adaphoto 0:355a854280cd 32
adaphoto 0:355a854280cd 33 /**
adaphoto 0:355a854280cd 34 * State.
adaphoto 0:355a854280cd 35 */
adaphoto 0:355a854280cd 36 typedef enum {
adaphoto 0:355a854280cd 37 Idle,
adaphoto 0:355a854280cd 38 Receiving,
adaphoto 0:355a854280cd 39 Received
adaphoto 0:355a854280cd 40 } State;
adaphoto 0:355a854280cd 41
adaphoto 0:355a854280cd 42 /**
adaphoto 0:355a854280cd 43 * Get state.
adaphoto 0:355a854280cd 44 *
adaphoto 0:355a854280cd 45 * @return Current state.
adaphoto 0:355a854280cd 46 */
adaphoto 0:355a854280cd 47 State getState();
adaphoto 0:355a854280cd 48
adaphoto 0:355a854280cd 49 /**
adaphoto 0:355a854280cd 50 * Get data.
adaphoto 0:355a854280cd 51 *
adaphoto 0:355a854280cd 52 * @param format Pointer to format.
adaphoto 0:355a854280cd 53 * @param buf Buffer of a data.
adaphoto 0:355a854280cd 54 * @param bitlength Bit length of the buffer.
adaphoto 0:355a854280cd 55 *
adaphoto 0:355a854280cd 56 * @return Data bit length.
adaphoto 0:355a854280cd 57 */
adaphoto 0:355a854280cd 58 int getData(RemoteIR::Format *format, uint8_t *buf, int bitlength);
adaphoto 0:355a854280cd 59
adaphoto 0:355a854280cd 60 private:
adaphoto 0:355a854280cd 61
adaphoto 0:355a854280cd 62 typedef struct {
adaphoto 0:355a854280cd 63 RemoteIR::Format format;
adaphoto 0:355a854280cd 64 int bitcount;
adaphoto 0:355a854280cd 65 uint8_t buffer[64];
adaphoto 0:355a854280cd 66 } data_t;
adaphoto 0:355a854280cd 67
adaphoto 0:355a854280cd 68 typedef struct {
adaphoto 0:355a854280cd 69 State state;
adaphoto 0:355a854280cd 70 int c1;
adaphoto 0:355a854280cd 71 int c2;
adaphoto 0:355a854280cd 72 int c3;
adaphoto 0:355a854280cd 73 int d1;
adaphoto 0:355a854280cd 74 int d2;
adaphoto 0:355a854280cd 75 } work_t;
adaphoto 0:355a854280cd 76
adaphoto 0:355a854280cd 77 InterruptIn evt; /**< Interrupt based input for input. */
adaphoto 0:355a854280cd 78 Timer timer; /**< Timer for WDT. */
adaphoto 0:355a854280cd 79 Ticker ticker; /**< Tciker for tick. */
adaphoto 0:355a854280cd 80 Timeout timeout; /**< Timeout for tail. */
adaphoto 0:355a854280cd 81
adaphoto 0:355a854280cd 82 data_t data;
adaphoto 0:355a854280cd 83 work_t work;
adaphoto 0:355a854280cd 84
adaphoto 0:355a854280cd 85 void init_state(void);
adaphoto 0:355a854280cd 86
adaphoto 0:355a854280cd 87 void isr_wdt(void);
adaphoto 0:355a854280cd 88 void isr_fall(void);
adaphoto 0:355a854280cd 89 void isr_rise(void);
adaphoto 0:355a854280cd 90
adaphoto 0:355a854280cd 91 /**
adaphoto 0:355a854280cd 92 * ISR timeout for tail detection.
adaphoto 0:355a854280cd 93 */
adaphoto 0:355a854280cd 94 void isr_timeout(void);
adaphoto 0:355a854280cd 95
adaphoto 0:355a854280cd 96 };
adaphoto 0:355a854280cd 97
adaphoto 0:355a854280cd 98 #endif