Add support new target MCU: LPC1114FN28 or LPC11XX

Fork of DMX by Suga koubou

DMX.h

Committer:
okini3939
Date:
2012-09-28
Revision:
3:2eb66b4d99bd
Parent:
1:f0d988e15810
Child:
4:dd0544c80096

File content as of revision 3:2eb66b4d99bd:

/*
 * DMX512 send/recv library
 * Copyright (c) 2011 Hiroshi Suga
 * Released under the MIT License: http://mbed.org/license/mit
 */

/** @file DMX.h
 * @brief DMX512 send/recv
 */
 
#ifndef DMX_H
#define DMX_H

#include "mbed.h"

#define DMX_UART_DIRECT

#define DMX_SIZE 512
#define DMX_TIME_BREAK 100 // 100us
#define DMX_TIME_MAB 10 // 10us
#define DMX_TIME_BETWEEN 10 // 10us

enum DMX_MODE {
    DMX_MODE_BEGIN,
    DMX_MODE_START,
    DMX_MODE_BREAK,
    DMX_MODE_MAB,
    DMX_MODE_DATA,
    DMX_MODE_ERROR,
};

/** DMX512 class (sender/client)
 */
class DMX {
public:
    /** init DMX class
     * @param p_tx TX serial port (p9, p13, p28)
     * @param p_rx RX serial port (p10, p14, p27)
     */
    DMX (PinName p_tx, PinName p_rx); 

    /** Send the message
     * @param ch DMX data address (0-511)
     * @param data DMX data (0-255)
     */
    void put (int ch, int data);

    /** Send the message
     * @param ch DMX data address (0-511)
     * @return DMX data (0-255)
     */
    int get (int ch);

    void reset ();

    volatile int is_recived, is_sent;

protected:

    void int_timer ();
    void int_tx ();
    void int_rx ();

    Serial dmx;
    Timeout timeout01;
    __IO uint8_t *uart_lcr;
    __I  uint8_t *uart_lsr;
    __IO uint8_t *uart_thr;
    __I  uint8_t *uart_rbr;
    volatile DMX_MODE mode_tx, mode_rx;
    volatile int addr_tx, addr_rx;
    unsigned char data_tx[DMX_SIZE];
    unsigned char data_rx[DMX_SIZE];

private:

};

#endif