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
00001 /* 00002 * DMX512 send/recv library 00003 * Copyright (c) 2013 Hiroshi Suga 00004 * Released under the MIT License: http://mbed.org/license/mit 00005 */ 00006 00007 /** @file 00008 * @brief DMX512 send/recv 00009 */ 00010 00011 #ifndef DMX_H 00012 #define DMX_H 00013 00014 #include "mbed.h" 00015 #include "RawSerial.h" 00016 00017 //#define DMX_UART_DIRECT 00018 00019 #define DMX_SIZE 512 00020 #define DMX_START_CODE 0 00021 00022 #define DMX_TIME_BREAK 100 // 100us (88us-1s) 00023 #define DMX_TIME_MAB 12 // 12us (8us-1s) 00024 #define DMX_TIME_MBB 200 // 10us (0-1s) 00025 00026 enum DMX_MODE { 00027 DMX_MODE_BEGIN, 00028 DMX_MODE_START, 00029 DMX_MODE_BREAK, 00030 DMX_MODE_MAB, 00031 DMX_MODE_DATA, 00032 DMX_MODE_ERROR, 00033 DMX_MODE_STOP, 00034 }; 00035 00036 /** DMX512 class (sender/client) 00037 */ 00038 class DMX { 00039 public: 00040 /** init DMX class 00041 * @param p_tx TX serial port (p9, p13, p28) 00042 * @param p_rx RX serial port (p10, p14, p27) 00043 */ 00044 DMX (PinName p_tx, PinName p_rx); 00045 00046 /** Send the data 00047 * @param addr DMX data address (0-511) 00048 * @param data DMX data (0-255) 00049 */ 00050 void put (int addr, int data); 00051 /** Send the data 00052 * @param buf DMX data buffer 00053 * @param addr DMX data address 00054 * @param len data length 00055 */ 00056 void put (unsigned char *buf, int addr = 0, int len = DMX_SIZE); 00057 00058 /** Send the data 00059 * @param addr DMX data address (0-511) 00060 * @return DMX data (0-255) 00061 */ 00062 int get (int addr); 00063 /** Send the data 00064 * @param buf DMX data buffer 00065 * @param addr DMX data address 00066 * @param len data length 00067 */ 00068 void get (unsigned char *buf, int addr = 0, int len = DMX_SIZE); 00069 00070 /** Start DMX send operation 00071 */ 00072 void start (); 00073 /** Stop DMX send operation 00074 */ 00075 void stop (); 00076 /** Clear DMX data 00077 */ 00078 void clear (); 00079 00080 int isReceived (); 00081 int isSent (); 00082 unsigned char *getRxBuffer (); 00083 unsigned char *getTxBuffer (); 00084 int setTimingParameters (int breaktime, int mab, int mbb); 00085 00086 void attach(void (*function)(void)); 00087 00088 protected: 00089 00090 void int_timer (); 00091 void int_tx (); 00092 void int_rx (); 00093 void on_received(); 00094 00095 // Serial _dmx; 00096 RawSerial _dmx; 00097 Timeout timeout01; 00098 volatile DMX_MODE mode_tx, mode_rx; 00099 volatile int addr_tx, addr_rx; 00100 unsigned char data_tx[DMX_SIZE]; 00101 unsigned char data_rx_working[DMX_SIZE]; 00102 unsigned char data_rx[DMX_SIZE]; 00103 int is_received, is_sent; 00104 int time_break, time_mab, time_mbb; 00105 Callback<void()> on_rx; 00106 00107 private: 00108 #if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088) 00109 LPC_UART_TypeDef *_uart; 00110 #elif defined(TARGET_LPC11UXX) 00111 LPC_USART_Type *_uart; 00112 #elif defined(TARGET_LPC11XX) 00113 LPC_UART_TypeDef *_uart; 00114 #elif defined(TARGET_STM) 00115 USART_TypeDef *_uart; 00116 #else 00117 #error "this CPU not supported." 00118 #endif 00119 00120 }; 00121 00122 #endif
Generated on Wed Jul 20 2022 05:54:08 by
1.7.2
