An initial port to the FRDM-K46Z based on the the following: https://developer.mbed.org/users/okini3939/notebook/dmx512/

Dependents:   FRDM-Dowser

Fork of DMX by Suga koubou

Need to update the UART references to the K46Z. The KE02 Sub-Family Reference Manual provides us with the required information.

The modifications are wrapped with the target for the K46: For example, defined(TARGET_KL46Z)

Committer:
rosienej
Date:
Fri Mar 27 17:51:07 2015 +0000
Revision:
21:59c200304b47
Parent:
19:8a86e35e54a9
rx_int update

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 0:cbff6bf41542 1 /*
okini3939 0:cbff6bf41542 2 * DMX512 send/recv library
okini3939 6:9e7b4eeac6ec 3 * Copyright (c) 2013 Hiroshi Suga
okini3939 0:cbff6bf41542 4 * Released under the MIT License: http://mbed.org/license/mit
okini3939 0:cbff6bf41542 5 */
okini3939 0:cbff6bf41542 6
okini3939 7:16d6874076dd 7 /** @file
okini3939 0:cbff6bf41542 8 * @brief DMX512 send/recv
okini3939 0:cbff6bf41542 9 */
okini3939 0:cbff6bf41542 10
rosienej 16:84a017ef96f8 11
rosienej 16:84a017ef96f8 12
okini3939 0:cbff6bf41542 13 #ifndef DMX_H
okini3939 0:cbff6bf41542 14 #define DMX_H
okini3939 0:cbff6bf41542 15
okini3939 0:cbff6bf41542 16 #include "mbed.h"
okini3939 14:cef8749fd54d 17 #include "RawSerial.h"
okini3939 0:cbff6bf41542 18
rosienej 16:84a017ef96f8 19
okini3939 1:f0d988e15810 20 #define DMX_UART_DIRECT
okini3939 0:cbff6bf41542 21
okini3939 0:cbff6bf41542 22 #define DMX_SIZE 512
okini3939 9:e687f321c428 23 #define DMX_TIME_BREAK 100 // 100us (88us-1s)
okini3939 9:e687f321c428 24 #define DMX_TIME_MAB 10 // 10us (8us-1s)
okini3939 15:4ea4a31c7609 25 #define DMX_TIME_BETWEEN 200 // 10us (0-1s)
okini3939 9:e687f321c428 26 #define DMX_START_CODE 0
okini3939 0:cbff6bf41542 27
okini3939 0:cbff6bf41542 28 enum DMX_MODE {
okini3939 0:cbff6bf41542 29 DMX_MODE_BEGIN,
okini3939 0:cbff6bf41542 30 DMX_MODE_START,
okini3939 0:cbff6bf41542 31 DMX_MODE_BREAK,
okini3939 0:cbff6bf41542 32 DMX_MODE_MAB,
okini3939 0:cbff6bf41542 33 DMX_MODE_DATA,
okini3939 0:cbff6bf41542 34 DMX_MODE_ERROR,
okini3939 4:dd0544c80096 35 DMX_MODE_STOP,
okini3939 0:cbff6bf41542 36 };
okini3939 0:cbff6bf41542 37
okini3939 0:cbff6bf41542 38 /** DMX512 class (sender/client)
okini3939 0:cbff6bf41542 39 */
okini3939 0:cbff6bf41542 40 class DMX {
okini3939 0:cbff6bf41542 41 public:
okini3939 0:cbff6bf41542 42 /** init DMX class
okini3939 0:cbff6bf41542 43 * @param p_tx TX serial port (p9, p13, p28)
okini3939 0:cbff6bf41542 44 * @param p_rx RX serial port (p10, p14, p27)
okini3939 0:cbff6bf41542 45 */
okini3939 0:cbff6bf41542 46 DMX (PinName p_tx, PinName p_rx);
okini3939 0:cbff6bf41542 47
okini3939 6:9e7b4eeac6ec 48 /** Send the data
okini3939 6:9e7b4eeac6ec 49 * @param addr DMX data address (0-511)
okini3939 0:cbff6bf41542 50 * @param data DMX data (0-255)
okini3939 0:cbff6bf41542 51 */
okini3939 6:9e7b4eeac6ec 52 void put (int addr, int data);
okini3939 6:9e7b4eeac6ec 53 /** Send the data
okini3939 6:9e7b4eeac6ec 54 * @param buf DMX data buffer
okini3939 6:9e7b4eeac6ec 55 * @param addr DMX data address
okini3939 6:9e7b4eeac6ec 56 * @param len data length
okini3939 6:9e7b4eeac6ec 57 */
okini3939 6:9e7b4eeac6ec 58 void put (unsigned char *buf, int addr = 0, int len = DMX_SIZE);
okini3939 0:cbff6bf41542 59
okini3939 6:9e7b4eeac6ec 60 /** Send the data
okini3939 7:16d6874076dd 61 * @param addr DMX data address (0-511)
okini3939 0:cbff6bf41542 62 * @return DMX data (0-255)
okini3939 0:cbff6bf41542 63 */
okini3939 6:9e7b4eeac6ec 64 int get (int addr);
okini3939 6:9e7b4eeac6ec 65 /** Send the data
okini3939 6:9e7b4eeac6ec 66 * @param buf DMX data buffer
okini3939 6:9e7b4eeac6ec 67 * @param addr DMX data address
okini3939 6:9e7b4eeac6ec 68 * @param len data length
okini3939 6:9e7b4eeac6ec 69 */
okini3939 6:9e7b4eeac6ec 70 void get (unsigned char *buf, int addr = 0, int len = DMX_SIZE);
okini3939 0:cbff6bf41542 71
okini3939 6:9e7b4eeac6ec 72 /** Start DMX send operation
okini3939 4:dd0544c80096 73 */
okini3939 4:dd0544c80096 74 void start ();
okini3939 6:9e7b4eeac6ec 75 /** Stop DMX send operation
okini3939 4:dd0544c80096 76 */
okini3939 4:dd0544c80096 77 void stop ();
okini3939 12:1f176eee2d28 78 /** Clear DMX data
okini3939 12:1f176eee2d28 79 */
okini3939 12:1f176eee2d28 80 void clear ();
rosienej 19:8a86e35e54a9 81
rosienej 19:8a86e35e54a9 82 /** Get the receiver Mode
rosienej 19:8a86e35e54a9 83 */
rosienej 19:8a86e35e54a9 84 int get_mode_rx(){return mode_rx;}
okini3939 3:2eb66b4d99bd 85
okini3939 0:cbff6bf41542 86 volatile int is_recived, is_sent;
okini3939 0:cbff6bf41542 87
okini3939 0:cbff6bf41542 88 protected:
okini3939 0:cbff6bf41542 89
okini3939 0:cbff6bf41542 90 void int_timer ();
okini3939 0:cbff6bf41542 91 void int_tx ();
okini3939 0:cbff6bf41542 92 void int_rx ();
okini3939 0:cbff6bf41542 93
okini3939 14:cef8749fd54d 94 // Serial _dmx;
okini3939 13:9841af9ac344 95 RawSerial _dmx;
okini3939 0:cbff6bf41542 96 Timeout timeout01;
okini3939 6:9e7b4eeac6ec 97 volatile DMX_MODE mode_tx, mode_rx;
okini3939 6:9e7b4eeac6ec 98 volatile int addr_tx, addr_rx;
okini3939 6:9e7b4eeac6ec 99 unsigned char data_tx[DMX_SIZE];
okini3939 6:9e7b4eeac6ec 100 unsigned char data_rx[DMX_SIZE];
okini3939 6:9e7b4eeac6ec 101
okini3939 6:9e7b4eeac6ec 102 private:
rosienej 16:84a017ef96f8 103
okini3939 13:9841af9ac344 104 #if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088)
okini3939 8:d4a45bba41d2 105 LPC_UART_TypeDef *_uart;
okini3939 15:4ea4a31c7609 106 #elif defined(TARGET_LPC11UXX)
okini3939 8:d4a45bba41d2 107 LPC_USART_Type *_uart;
stanly88 10:b748aab8404c 108 #elif defined(TARGET_LPC11XX)
stanly88 10:b748aab8404c 109 LPC_UART_TypeDef *_uart;
rosienej 16:84a017ef96f8 110 #elif defined(TARGET_KL46Z)
rosienej 18:6303931e4102 111 /**
rosienej 18:6303931e4102 112 The UART type changes for the Freescale KL46Z
rosienej 18:6303931e4102 113 */
rosienej 16:84a017ef96f8 114 UARTLP_Type *_uart;
okini3939 13:9841af9ac344 115 #else
rosienej 18:6303931e4102 116 #error "this CPU not supported."
okini3939 5:72039cd4c874 117 #endif
okini3939 0:cbff6bf41542 118
okini3939 0:cbff6bf41542 119 };
okini3939 0:cbff6bf41542 120
okini3939 0:cbff6bf41542 121 #endif