mirror of
https://github.com/DCC-EX/CommandStation-EX.git
synced 2024-11-26 09:36:13 +01:00
static constants
This commit is contained in:
parent
45f4bf2041
commit
0433b87445
|
@ -57,14 +57,6 @@ class I2CRailcom : public IODevice {
|
||||||
private:
|
private:
|
||||||
// SC16IS752 defines
|
// SC16IS752 defines
|
||||||
uint8_t _UART_CH=0x00;
|
uint8_t _UART_CH=0x00;
|
||||||
// Communication parameters for the DFPlayer are fixed at 8 bit, No parity, 1 stopbit
|
|
||||||
const uint8_t WORD_LEN = 0x03; // Value LCR bit 0,1
|
|
||||||
const uint8_t STOP_BIT = 0x00; // Value LCR bit 2
|
|
||||||
const uint8_t PARITY_ENA = 0x00; // Value LCR bit 3
|
|
||||||
const uint8_t PARITY_TYPE = 0x00; // Value LCR bit 4
|
|
||||||
const uint32_t BAUD_RATE = 250000;
|
|
||||||
const uint8_t PRESCALER = 0x01; // Value MCR bit 7
|
|
||||||
const unsigned long SC16IS752_XTAL_FREQ_RAILCOM = 16000000; // Baud rate for Railcom signal
|
|
||||||
byte _inbuf[65];
|
byte _inbuf[65];
|
||||||
byte _outbuf[2];
|
byte _outbuf[2];
|
||||||
public:
|
public:
|
||||||
|
@ -155,10 +147,18 @@ private:
|
||||||
// DLL least significant part of divisor
|
// DLL least significant part of divisor
|
||||||
//
|
//
|
||||||
// BAUD_RATE, WORD_LEN, STOP_BIT, PARITY_ENA and PARITY_TYPE have been defined and initialized
|
// BAUD_RATE, WORD_LEN, STOP_BIT, PARITY_ENA and PARITY_TYPE have been defined and initialized
|
||||||
//
|
//
|
||||||
|
// Communication parameters 8 bit, No parity, 1 stopbit
|
||||||
|
static const uint8_t WORD_LEN = 0x03; // Value LCR bit 0,1
|
||||||
|
static const uint8_t STOP_BIT = 0x00; // Value LCR bit 2
|
||||||
|
static const uint8_t PARITY_ENA = 0x00; // Value LCR bit 3
|
||||||
|
static const uint8_t PARITY_TYPE = 0x00; // Value LCR bit 4
|
||||||
|
static const uint32_t BAUD_RATE = 250000;
|
||||||
|
static const uint8_t PRESCALER = 0x01; // Value MCR bit 7
|
||||||
|
static const unsigned long SC16IS752_XTAL_FREQ_RAILCOM = 16000000; // Baud rate for Railcom signal
|
||||||
|
static const uint16_t _divisor = (SC16IS752_XTAL_FREQ_RAILCOM / PRESCALER) / (BAUD_RATE * 16);
|
||||||
|
|
||||||
void Init_SC16IS752(){
|
void Init_SC16IS752(){
|
||||||
//uint16_t _divisor = (SC16IS752_XTAL_FREQ / PRESCALER) / (BAUD_RATE * 16);
|
|
||||||
const uint16_t _divisor = (SC16IS752_XTAL_FREQ_RAILCOM / PRESCALER) / (BAUD_RATE * 16); // Calculate _divisor for baudrate
|
|
||||||
|
|
||||||
if (_UART_CH==0) {
|
if (_UART_CH==0) {
|
||||||
// only reset on channel 0}
|
// only reset on channel 0}
|
||||||
|
@ -168,13 +168,16 @@ private:
|
||||||
|
|
||||||
UART_WriteRegister(REG_FCR, 0x07,false); // Reset FIFO, clear RX & TX FIFO (write only)
|
UART_WriteRegister(REG_FCR, 0x07,false); // Reset FIFO, clear RX & TX FIFO (write only)
|
||||||
UART_WriteRegister(REG_MCR, 0x00); // Set MCR to all 0, includes Clock divisor
|
UART_WriteRegister(REG_MCR, 0x00); // Set MCR to all 0, includes Clock divisor
|
||||||
UART_WriteRegister(REG_LCR, 0x80 | WORD_LEN | STOP_BIT | PARITY_ENA | PARITY_TYPE); // Divisor latch enabled
|
UART_WriteRegister(REG_LCR, 0x80); // Divisor latch enabled
|
||||||
UART_WriteRegister(REG_DLL, _divisor); // Write DLL
|
UART_WriteRegister(REG_DLL, _divisor); // Write DLL
|
||||||
UART_WriteRegister(REG_DLH, (uint8_t)(_divisor >> 8)); // Write DLH
|
UART_WriteRegister(REG_DLH, (uint8_t)(_divisor >> 8)); // Write DLH
|
||||||
UART_WriteRegister(REG_LCR, UART_ReadRegister(REG_LCR) & 0x7F); // Divisor latch disabled
|
UART_WriteRegister(REG_LCR, WORD_LEN | STOP_BIT | PARITY_ENA | PARITY_TYPE); // Divisor latch disabled
|
||||||
|
UART_WriteRegister(REG_FCR, 0x07,false); // Reset FIFO, clear RX & TX FIFO (write only)
|
||||||
|
|
||||||
if (_deviceState==DEVSTATE_INITIALISING) {
|
if (_deviceState==DEVSTATE_INITIALISING) {
|
||||||
DIAG(F("UART %d init complete"),_UART_CH);
|
DIAG(F("UART %d init complete"),_UART_CH);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user