Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of DMX by
DMX.h
- Committer:
- okini3939
- Date:
- 2013-01-13
- Revision:
- 6:9e7b4eeac6ec
- Parent:
- 5:72039cd4c874
- Child:
- 7:16d6874076dd
File content as of revision 6:9e7b4eeac6ec:
/*
* DMX512 send/recv library
* Copyright (c) 2013 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,
DMX_MODE_STOP,
};
/** 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 data
* @param addr DMX data address (0-511)
* @param data DMX data (0-255)
*/
void put (int addr, int data);
/** Send the data
* @param buf DMX data buffer
* @param addr DMX data address
* @param len data length
*/
void put (unsigned char *buf, int addr = 0, int len = DMX_SIZE);
/** Send the data
* @param ch DMX data address (0-511)
* @return DMX data (0-255)
*/
int get (int addr);
/** Send the data
* @param buf DMX data buffer
* @param addr DMX data address
* @param len data length
*/
void get (unsigned char *buf, int addr = 0, int len = DMX_SIZE);
/** Start DMX send operation
*/
void start ();
/** Stop DMX send operation
*/
void stop ();
volatile int is_recived, is_sent;
protected:
void int_timer ();
void int_tx ();
void int_rx ();
Serial _dmx;
Timeout timeout01;
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:
#if defined(TARGET_LPC1768) || defined(TARGET_LPC2368)
__IO uint8_t *uart_lcr;
__I uint8_t *uart_lsr;
__IO uint8_t *uart_thr;
__I uint8_t *uart_rbr;
#elif defined(TARGET_LPC11U24)
__IO uint32_t *uart_lcr;
__I uint32_t *uart_lsr;
__IO uint32_t *uart_thr;
__I uint32_t *uart_rbr;
#endif
};
#endif
