aboutsummaryrefslogtreecommitdiff
path: root/AT91SAM7S256/Source/d_hispeed.r
diff options
context:
space:
mode:
Diffstat (limited to 'AT91SAM7S256/Source/d_hispeed.r')
-rw-r--r--AT91SAM7S256/Source/d_hispeed.r25
1 files changed, 11 insertions, 14 deletions
diff --git a/AT91SAM7S256/Source/d_hispeed.r b/AT91SAM7S256/Source/d_hispeed.r
index 52d5e14..371b76d 100644
--- a/AT91SAM7S256/Source/d_hispeed.r
+++ b/AT91SAM7S256/Source/d_hispeed.r
@@ -27,7 +27,7 @@
#define PER_ID6_UART_0 0x40
#define UART0_INQ 0x40
-#define BAUD_RATE 921600L
+#define BAUD_RATE 921600L
#define SIZE_OF_INBUF 128
#define NO_OF_INBUFFERS 2
@@ -46,14 +46,13 @@ static UBYTE MsgIn;
static UBYTE InBufOutCnt;
#define HIGHSPEEDInit {\
- *AT91C_PIOA_PER = HIGHSPEED_TX_PIN | HIGHSPEED_RTS_PIN | HIGHSPEED_RX_PIN; /* Enable PIO on PA07, PA06 & PA05 */\
- *AT91C_PIOA_PPUDR = HIGHSPEED_RX_PIN | HIGHSPEED_TX_PIN | HIGHSPEED_RTS_PIN; /* Disable Pull-up resistor */\
+ *AT91C_PIOA_PER = HIGHSPEED_TX_PIN | HIGHSPEED_RTS_PIN | HIGHSPEED_RX_PIN; /* Enable PIO on PA07, PA06 & PA05 */\
+ *AT91C_PIOA_PPUDR = HIGHSPEED_RX_PIN | HIGHSPEED_TX_PIN | HIGHSPEED_RTS_PIN; /* Disable Pull-up resistor */\
*AT91C_PIOA_OER = HIGHSPEED_TX_PIN | HIGHSPEED_RTS_PIN | HIGHSPEED_RX_PIN; /* PA07 & PA06 set to Output */\
- *AT91C_PIOA_CODR = HIGHSPEED_TX_PIN | HIGHSPEED_RTS_PIN | HIGHSPEED_RX_PIN; /* Set output low */\
+ *AT91C_PIOA_CODR = HIGHSPEED_TX_PIN | HIGHSPEED_RTS_PIN | HIGHSPEED_RX_PIN; /* Set output low */\
}
-
-#define HIGHSPEEDSetupUart {\
+#define HIGHSPEEDSetupUart(_baud, _mode) {\
UBYTE Tmp;\
InBufInPtr = 0;\
for(Tmp = 0; Tmp < NO_OF_INBUFFERS; Tmp++)\
@@ -66,18 +65,16 @@ static UBYTE InBufOutCnt;
*AT91C_PIOA_ASR = HIGHSPEED_TX_PIN | HIGHSPEED_RTS_PIN | HIGHSPEED_RX_PIN;; /* Enable Per. A on PA5, PA6 & PA7 */\
*AT91C_US0_CR = AT91C_US_RSTSTA; /* Resets pins on UART0 */\
*AT91C_US0_CR = AT91C_US_STTTO; /* Start timeout functionality after 1 byte */\
- *AT91C_US0_RTOR = 2400; /* Approxitely 20 mS,x times bit time with 115200 bit pr s */\
+ *AT91C_US0_RTOR = ((_baud)/400); /* Approxitely 20 mS,x times bit time with 115200 bit pr s */\
*AT91C_US0_IDR = AT91C_US_TIMEOUT; /* Disable interrupt on timeout */\
*AT91C_AIC_IDCR = UART0_INQ; /* Disable UART0 interrupt */\
*AT91C_AIC_ICCR = UART0_INQ; /* Clear interrupt register */\
*AT91C_US0_MR = AT91C_US_USMODE_RS485; /* Set UART to RUN RS485 Mode*/\
*AT91C_US0_MR &= ~AT91C_US_SYNC; /* Set UART in asynchronous mode */\
*AT91C_US0_MR |= AT91C_US_CLKS_CLOCK; /* Clock setup MCK*/\
- *AT91C_US0_MR |= AT91C_US_CHRL_8_BITS; /* UART using 8-bit */\
- *AT91C_US0_MR |= AT91C_US_PAR_NONE; /* UART using none parity bit */\
- *AT91C_US0_MR |= AT91C_US_NBSTOP_1_BIT; /* UART using 1 stop bit */\
- *AT91C_US0_MR |= AT91C_US_OVER; /* UART is using 8-bit sampling */\
- *AT91C_US0_BRGR = ((OSC/8/BAUD_RATE) | (((OSC/8) - ((OSC/8/BAUD_RATE) * BAUD_RATE)) / ((BAUD_RATE + 4)/8)) << 16);\
+ *AT91C_US0_MR |= AT91C_US_OVER; /* UART is using over sampling mode */\
+ *AT91C_US0_MR |= (_mode); /* default is 8n1 */\
+ *AT91C_US0_BRGR = ((OSC/8/(_baud)) | (((OSC/8) - ((OSC/8/(_baud)) * (_baud))) / (((_baud) + 4)/8)) << 16);\
*AT91C_US0_PTCR = (AT91C_PDC_RXTDIS | AT91C_PDC_TXTDIS); /* Disable of TX & RX with DMA */\
*AT91C_US0_RCR = 0; /* Receive Counter Register */\
*AT91C_US0_TCR = 0; /* Transmit Counter Register */\
@@ -97,7 +94,7 @@ static UBYTE InBufOutCnt;
#define HIGHSPEEDInitReceiver(InputBuffer)\
{\
- UBYTE Tmp;\
+ UBYTE Tmp;\
pBuffer = InputBuffer;\
*AT91C_US0_PTCR = (AT91C_PDC_RXTDIS | AT91C_PDC_TXTDIS); /* Disable of TX & RX with DMA */\
*AT91C_US0_RCR = 0; /* Receive Counter Register */\
@@ -177,7 +174,7 @@ static UBYTE InBufOutCnt;
#define HIGHSPEEDExit {\
*AT91C_PMC_PCDR = PER_ID6_UART_0; /* Disable PMC clock for UART 0*/\
*AT91C_PIOA_PER = HIGHSPEED_TX_PIN | HIGHSPEED_RTS_PIN | HIGHSPEED_RX_PIN; /* Enable PIO on PA07, PA06 & PA05 */\
- *AT91C_PIOA_PPUDR = HIGHSPEED_RX_PIN | HIGHSPEED_TX_PIN | HIGHSPEED_RTS_PIN; /* Disable Pull-up resistor */\
+ *AT91C_PIOA_PPUDR = HIGHSPEED_RX_PIN | HIGHSPEED_TX_PIN | HIGHSPEED_RTS_PIN; /* Disable Pull-up resistor */\
*AT91C_PIOA_OER = HIGHSPEED_TX_PIN | HIGHSPEED_RTS_PIN | HIGHSPEED_RX_PIN; /* PA07 & PA06 set to Output */\
*AT91C_PIOA_CODR = HIGHSPEED_TX_PIN | HIGHSPEED_RTS_PIN | HIGHSPEED_RX_PIN; /* Set output low */\
}