Intial code push
This commit is contained in:
122
Telem_Debug/Debug2/UART.h
Normal file
122
Telem_Debug/Debug2/UART.h
Normal file
@@ -0,0 +1,122 @@
|
||||
#ifndef UART_H
|
||||
#define UART_H
|
||||
|
||||
#define UART1CTL1 (*(volatile unsigned char *)(0x0600+0x00))
|
||||
#define UART1CTL0 (*(volatile unsigned char *)(0x0600+0x01))
|
||||
#define UART1BRW (*(volatile unsigned int *)(0x0600+0x06))
|
||||
#define UART1MCTL (*(volatile unsigned char *)(0x0600+0x08))
|
||||
#define UART1STAT (*(volatile unsigned char *)(0x0600+0x0A))
|
||||
#define UART1RXBUF (*(volatile unsigned char *)(0x0600+0x0C))
|
||||
#define UART1TXBUF (*(volatile unsigned char *)(0x0600+0x0E))
|
||||
#define UART1ABCTL (*(volatile unsigned char *)(0x0600+0x10))
|
||||
#define UART1IE (*(volatile unsigned char *)(0x0600+0x1C))
|
||||
#define UART1IFG (*(volatile unsigned char *)(0x0600+0x1D))
|
||||
#define UART1IV (*(volatile unsigned int *)(0x0600+0x1E))
|
||||
|
||||
#define UART2CTL1 (*(volatile unsigned char *)(0x0640+0x00))
|
||||
#define UART2CTL0 (*(volatile unsigned char *)(0x0640+0x01))
|
||||
#define UART2BRW (*(volatile unsigned int *)(0x0640+0x06))
|
||||
#define UART2MCTL (*(volatile unsigned char *)(0x0640+0x08))
|
||||
#define UART2STAT (*(volatile unsigned char *)(0x0640+0x0A))
|
||||
#define UART2RXBUF (*(volatile unsigned char *)(0x0640+0x0C))
|
||||
#define UART2TXBUF (*(volatile unsigned char *)(0x0640+0x0E))
|
||||
#define UART2ABCTL (*(volatile unsigned char *)(0x0640+0x10))
|
||||
#define UART2IE (*(volatile unsigned char *)(0x0640+0x1C))
|
||||
#define UART2IFG (*(volatile unsigned char *)(0x0640+0x1D))
|
||||
#define UART2IV (*(volatile unsigned int *)(0x0640+0x1E))
|
||||
|
||||
//USB interface
|
||||
#define UART3CTL1 (*(volatile unsigned char *)(0x0680+0x00))
|
||||
#define UART3CTL0 (*(volatile unsigned char *)(0x0680+0x01))
|
||||
#define UART3BRW (*(volatile unsigned int *)(0x0680+0x06))
|
||||
#define UART3MCTL (*(volatile unsigned char *)(0x0680+0x08))
|
||||
#define UART3STAT (*(volatile unsigned char *)(0x0680+0x0A))
|
||||
#define UART3RXBUF (*(volatile unsigned char *)(0x0680+0x0C))
|
||||
#define UART3TXBUF (*(volatile unsigned char *)(0x0680+0x0E))
|
||||
#define UART3ABCTL (*(volatile unsigned char *)(0x0680+0x10))
|
||||
#define UART3IE (*(volatile unsigned char *)(0x0680+0x1C))
|
||||
#define UART3IFG (*(volatile unsigned char *)(0x0680+0x1D))
|
||||
#define UART3IV (*(volatile unsigned int *)(0x0680+0x1E))
|
||||
|
||||
//UART1 init is in MODEM_init()!
|
||||
|
||||
//public functions
|
||||
static void uart2_init() {
|
||||
//1. Set UCSWRST
|
||||
//2. Initialize all USCI registers with UCSWRST = 1 including UCAxCTL1
|
||||
//3. Configure Ports
|
||||
//4. Clear UCSWRST via software
|
||||
//5. Enable interrupts (optional) via UCRXIE a/o UCTXI
|
||||
|
||||
UART2CTL1 |= UCSWRST | UCSSEL_2; //put state machine in reset & SMCLK
|
||||
UART2CTL0 |= UCMODE_0;
|
||||
|
||||
UART2BRW = (int)(SMCLK_RATE/UART_BR); //1MHZ 115200
|
||||
UART2MCTL |= UCBRF_0 + (char)UART_UCBRS; //modulation UCBRSx=6 UCBRFx=0
|
||||
|
||||
UART2IFG &= ~UCTXIFG; //Clear Xmit and Rec interrupt flags
|
||||
UART2IFG &= ~UCRXIFG;
|
||||
UART2CTL1 &= ~UCSWRST; //initalize state machine
|
||||
UART2ABCTL |= UCABDEN;
|
||||
|
||||
//UART2IE |= UCRXIE|UCTXIE; //enable TX & RX interrupts
|
||||
}
|
||||
|
||||
static inline void tx1_poll ()
|
||||
{
|
||||
int z;
|
||||
//this works!
|
||||
//while(UCA1IFG & UCTXIFG);
|
||||
//for (int z = 0; z < 50; z++);
|
||||
while((UART1IFG & UCTXIFG) == 0);
|
||||
for (z = 0; z < 1000; z++);
|
||||
}
|
||||
|
||||
static inline void UART1_TXN(char data[], int size)
|
||||
{
|
||||
int z;
|
||||
|
||||
for (z = 0; z < size; z++) {
|
||||
tx1_poll();
|
||||
UART1TXBUF = data[z];
|
||||
}
|
||||
}
|
||||
|
||||
static inline void UART1_TX(char data[])
|
||||
{
|
||||
int z = 0;
|
||||
|
||||
while(data[z] != '\0')
|
||||
{
|
||||
tx1_poll();
|
||||
UART1TXBUF = data[z++];
|
||||
}
|
||||
}
|
||||
|
||||
static inline void UART1_RX(char data[])
|
||||
{
|
||||
int z = 0;
|
||||
// int i;
|
||||
|
||||
do
|
||||
{
|
||||
while((UART1IFG & UCRXIFG) == 0);
|
||||
// for (i = 0; i < 1000; i++);
|
||||
data[z++] = UART1RXBUF;
|
||||
} while(data[z-1] != '\0');
|
||||
}
|
||||
|
||||
static inline void UART1_RXN(char data[], int size)
|
||||
{
|
||||
int z = 0;
|
||||
// int i;
|
||||
|
||||
do
|
||||
{
|
||||
while((UART1IFG & UCRXIFG) == 0);
|
||||
// for (i = 0; i < 1000; i++);
|
||||
data[z++] = UART1RXBUF;
|
||||
} while(z < size);
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user