http://mbed.org/users/okini3939/notebook/melinverter
Dependents: MelInverter_sample
MelInverter.h@1:5963d2a1c30f, 2012-09-18 (annotated)
- Committer:
- okini3939
- Date:
- Tue Sep 18 14:30:22 2012 +0000
- Revision:
- 1:5963d2a1c30f
- Parent:
- 0:db82bb30177e
- Child:
- 2:b1ef1c4d9c12
add timeout
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okini3939 | 0:db82bb30177e | 1 | /** |
okini3939 | 0:db82bb30177e | 2 | * Mitsubishi Inverter Protocol library for mbed |
okini3939 | 0:db82bb30177e | 3 | * Copyright (c) 2012 Suga |
okini3939 | 0:db82bb30177e | 4 | * Released under the MIT License: http://mbed.org/license/mit |
okini3939 | 0:db82bb30177e | 5 | */ |
okini3939 | 0:db82bb30177e | 6 | |
okini3939 | 0:db82bb30177e | 7 | /** @file |
okini3939 | 0:db82bb30177e | 8 | * @brief Mitsubishi Inverter Protocol library for mbed |
okini3939 | 0:db82bb30177e | 9 | * @note need: http://mbed.org/users/okini3939/libraries/RingBuffer/latest |
okini3939 | 0:db82bb30177e | 10 | * FR-E700 |
okini3939 | 0:db82bb30177e | 11 | * Pr.79=2, Pr.340=1, Pr.549=0 |
okini3939 | 0:db82bb30177e | 12 | * 19200bps, 8bit data, Stop 2bit, Even parity, CR |
okini3939 | 0:db82bb30177e | 13 | */ |
okini3939 | 0:db82bb30177e | 14 | |
okini3939 | 0:db82bb30177e | 15 | #include "mbed.h" |
okini3939 | 0:db82bb30177e | 16 | #include "RingBuffer.h" |
okini3939 | 0:db82bb30177e | 17 | |
okini3939 | 0:db82bb30177e | 18 | #define MELDELAY 0 |
okini3939 | 1:5963d2a1c30f | 19 | #define MELTIMEOUT 100 |
okini3939 | 0:db82bb30177e | 20 | |
okini3939 | 0:db82bb30177e | 21 | enum MELCMD { |
okini3939 | 0:db82bb30177e | 22 | MELCMD_MODE_R = 0x7b, |
okini3939 | 0:db82bb30177e | 23 | MELCMD_FREQ_R = 0x6f, |
okini3939 | 0:db82bb30177e | 24 | MELCMD_CURRENT_R = 0x70, |
okini3939 | 0:db82bb30177e | 25 | MELCMD_VOLT_R = 0x71, |
okini3939 | 0:db82bb30177e | 26 | MELCMD_MONITOR_R = 0x73, |
okini3939 | 0:db82bb30177e | 27 | MELCMD_STATUS = 0x79, |
okini3939 | 0:db82bb30177e | 28 | MELCMD_RUN = 0xfa, |
okini3939 | 0:db82bb30177e | 29 | MELCMD_FREQ = 0xed, |
okini3939 | 0:db82bb30177e | 30 | MELCMD_FREQ_ROM = 0xee, |
okini3939 | 0:db82bb30177e | 31 | MELCMD_RESET = 0xfd, |
okini3939 | 0:db82bb30177e | 32 | MELCMD_ALLCLEAR = 0xfc, |
okini3939 | 0:db82bb30177e | 33 | MELCMD_NAME_R = 0x7c, |
okini3939 | 0:db82bb30177e | 34 | MELCMD_CAPA_R = 0x7d, |
okini3939 | 0:db82bb30177e | 35 | }; |
okini3939 | 0:db82bb30177e | 36 | |
okini3939 | 0:db82bb30177e | 37 | enum MELMODE { |
okini3939 | 0:db82bb30177e | 38 | MELMODE_NONE, |
okini3939 | 0:db82bb30177e | 39 | MELMODE_STX, |
okini3939 | 0:db82bb30177e | 40 | MELMODE_ACK, |
okini3939 | 0:db82bb30177e | 41 | MELMODE_NAK, |
okini3939 | 0:db82bb30177e | 42 | }; |
okini3939 | 0:db82bb30177e | 43 | |
okini3939 | 0:db82bb30177e | 44 | enum INVCTRL { |
okini3939 | 0:db82bb30177e | 45 | INVCTRL_STX = 0x02, |
okini3939 | 0:db82bb30177e | 46 | INVCTRL_ETX = 0x03, |
okini3939 | 0:db82bb30177e | 47 | INVCTRL_ENQ = 0x05, |
okini3939 | 0:db82bb30177e | 48 | INVCTRL_ACK = 0x06, |
okini3939 | 0:db82bb30177e | 49 | INVCTRL_LF = 0x0a, |
okini3939 | 0:db82bb30177e | 50 | INVCTRL_CR = 0x0d, |
okini3939 | 0:db82bb30177e | 51 | INVCTRL_NAK = 0x15, |
okini3939 | 0:db82bb30177e | 52 | }; |
okini3939 | 0:db82bb30177e | 53 | |
okini3939 | 0:db82bb30177e | 54 | /** |
okini3939 | 0:db82bb30177e | 55 | * MelInverter class |
okini3939 | 0:db82bb30177e | 56 | */ |
okini3939 | 0:db82bb30177e | 57 | class MelInverter { |
okini3939 | 0:db82bb30177e | 58 | public: |
okini3939 | 0:db82bb30177e | 59 | /** |
okini3939 | 0:db82bb30177e | 60 | * Default constructor |
okini3939 | 0:db82bb30177e | 61 | */ |
okini3939 | 0:db82bb30177e | 62 | MelInverter (PinName p_tx, PinName p_rx); |
okini3939 | 0:db82bb30177e | 63 | |
okini3939 | 0:db82bb30177e | 64 | int send (int iid, MELCMD, char *data); |
okini3939 | 0:db82bb30177e | 65 | |
okini3939 | 0:db82bb30177e | 66 | int recv (int iid, char *buf, int len); |
okini3939 | 0:db82bb30177e | 67 | |
okini3939 | 0:db82bb30177e | 68 | protected: |
okini3939 | 0:db82bb30177e | 69 | int x2i (char c); |
okini3939 | 0:db82bb30177e | 70 | char i2x (int i); |
okini3939 | 0:db82bb30177e | 71 | void isr_mel (); |
okini3939 | 0:db82bb30177e | 72 | void isr_ack (); |
okini3939 | 0:db82bb30177e | 73 | void isr_nak (); |
okini3939 | 0:db82bb30177e | 74 | |
okini3939 | 0:db82bb30177e | 75 | private: |
okini3939 | 0:db82bb30177e | 76 | Serial _mel; |
okini3939 | 0:db82bb30177e | 77 | volatile int _mel_ok, _mel_failure, _mel_recv; |
okini3939 | 0:db82bb30177e | 78 | MELMODE _mel_mode; |
okini3939 | 0:db82bb30177e | 79 | RingBuffer _buf_data; |
okini3939 | 0:db82bb30177e | 80 | Timeout _res; |
okini3939 | 0:db82bb30177e | 81 | int _iid; |
okini3939 | 0:db82bb30177e | 82 | |
okini3939 | 0:db82bb30177e | 83 | }; |
okini3939 | 0:db82bb30177e | 84 |