http://mbed.org/users/okini3939/notebook/melinverter

Dependents:   MelInverter_sample

Committer:
okini3939
Date:
Fri Sep 28 03:28:47 2012 +0000
Revision:
2:b1ef1c4d9c12
Parent:
1:5963d2a1c30f
fix baud

Who changed what in which revision?

UserRevisionLine numberNew 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 2:b1ef1c4d9c12 20 #define MELBAUD 19200
okini3939 0:db82bb30177e 21
okini3939 0:db82bb30177e 22 enum MELCMD {
okini3939 0:db82bb30177e 23 MELCMD_MODE_R = 0x7b,
okini3939 0:db82bb30177e 24 MELCMD_FREQ_R = 0x6f,
okini3939 0:db82bb30177e 25 MELCMD_CURRENT_R = 0x70,
okini3939 0:db82bb30177e 26 MELCMD_VOLT_R = 0x71,
okini3939 0:db82bb30177e 27 MELCMD_MONITOR_R = 0x73,
okini3939 0:db82bb30177e 28 MELCMD_STATUS = 0x79,
okini3939 0:db82bb30177e 29 MELCMD_RUN = 0xfa,
okini3939 0:db82bb30177e 30 MELCMD_FREQ = 0xed,
okini3939 0:db82bb30177e 31 MELCMD_FREQ_ROM = 0xee,
okini3939 0:db82bb30177e 32 MELCMD_RESET = 0xfd,
okini3939 0:db82bb30177e 33 MELCMD_ALLCLEAR = 0xfc,
okini3939 0:db82bb30177e 34 MELCMD_NAME_R = 0x7c,
okini3939 0:db82bb30177e 35 MELCMD_CAPA_R = 0x7d,
okini3939 0:db82bb30177e 36 };
okini3939 0:db82bb30177e 37
okini3939 0:db82bb30177e 38 enum MELMODE {
okini3939 0:db82bb30177e 39 MELMODE_NONE,
okini3939 0:db82bb30177e 40 MELMODE_STX,
okini3939 0:db82bb30177e 41 MELMODE_ACK,
okini3939 0:db82bb30177e 42 MELMODE_NAK,
okini3939 0:db82bb30177e 43 };
okini3939 0:db82bb30177e 44
okini3939 0:db82bb30177e 45 enum INVCTRL {
okini3939 0:db82bb30177e 46 INVCTRL_STX = 0x02,
okini3939 0:db82bb30177e 47 INVCTRL_ETX = 0x03,
okini3939 0:db82bb30177e 48 INVCTRL_ENQ = 0x05,
okini3939 0:db82bb30177e 49 INVCTRL_ACK = 0x06,
okini3939 0:db82bb30177e 50 INVCTRL_LF = 0x0a,
okini3939 0:db82bb30177e 51 INVCTRL_CR = 0x0d,
okini3939 0:db82bb30177e 52 INVCTRL_NAK = 0x15,
okini3939 0:db82bb30177e 53 };
okini3939 0:db82bb30177e 54
okini3939 0:db82bb30177e 55 /**
okini3939 0:db82bb30177e 56 * MelInverter class
okini3939 0:db82bb30177e 57 */
okini3939 0:db82bb30177e 58 class MelInverter {
okini3939 0:db82bb30177e 59 public:
okini3939 0:db82bb30177e 60 /**
okini3939 0:db82bb30177e 61 * Default constructor
okini3939 0:db82bb30177e 62 */
okini3939 2:b1ef1c4d9c12 63 MelInverter (PinName p_tx, PinName p_rx, int baud = MELBAUD);
okini3939 0:db82bb30177e 64
okini3939 0:db82bb30177e 65 int send (int iid, MELCMD, char *data);
okini3939 0:db82bb30177e 66
okini3939 0:db82bb30177e 67 int recv (int iid, char *buf, int len);
okini3939 0:db82bb30177e 68
okini3939 0:db82bb30177e 69 protected:
okini3939 0:db82bb30177e 70 int x2i (char c);
okini3939 0:db82bb30177e 71 char i2x (int i);
okini3939 0:db82bb30177e 72 void isr_mel ();
okini3939 0:db82bb30177e 73 void isr_ack ();
okini3939 0:db82bb30177e 74 void isr_nak ();
okini3939 0:db82bb30177e 75
okini3939 0:db82bb30177e 76 private:
okini3939 0:db82bb30177e 77 Serial _mel;
okini3939 0:db82bb30177e 78 volatile int _mel_ok, _mel_failure, _mel_recv;
okini3939 0:db82bb30177e 79 MELMODE _mel_mode;
okini3939 0:db82bb30177e 80 RingBuffer _buf_data;
okini3939 0:db82bb30177e 81 Timeout _res;
okini3939 2:b1ef1c4d9c12 82 volatile int _iid;
okini3939 0:db82bb30177e 83
okini3939 0:db82bb30177e 84 };
okini3939 0:db82bb30177e 85