Files
2021-06-25 13:34:24 -04:00

65 lines
2.4 KiB
C

#include "SunseekerTelemetry2021.h"
#include "clock_init.h"
#include "interrupts.h"
#include "io_init.h"
#include "timers.h"
#include "usci.h"
long delayCounter = 0;
volatile unsigned char status_flag = FALSE;
char USBTransmitString[256];
char RS232TransmitString[] = "[DEBUG] Test Transmission String";
char RS232RelayString[256];
char* pUSBReceiveString;
char* pRS232ReceiveString;
int main(void) {
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer; `WDTPW` is the "WatchDog Timer PassWord", required for all `WDTCTL` operations
_DINT(); // Disable interrupts
clock_init(); // Configure HF and LF clocks
delay();
timerB_init(); // Initialize timer B
delay();
io_init(); // Initialize all input/output pins
delay();
usci_init(); // Initialize USCI modules
delay();
_EINT(); // Enable global interrupts
P8OUT |= LEDY0; // Initially set LEDY0 to High
sprintf(USBTransmitString, "Transmitted over RS-232: \"%s\"", RS232TransmitString);
pUSBReceiveString = calloc(1, 256 * sizeof(*pUSBReceiveString) + 1);
pRS232ReceiveString = calloc(1, 256 * sizeof(*pUSBReceiveString) + 1);
usci_A2_enable(); // Enable the USB interface
usci_A2_enableInterrupt(); // Enable interrupts for the USB interface
usci_A3_enable(); // Enable the RS-232 interface
usci_A3_enableInterrupt(); // Enable interrupts for the RS-232 interface
while(1)
{
// Repeating debug transmission string
if(delayCounter == 0){
usci_A3_transmitString(&RS232TransmitString[0]);
usci_A2_transmitString(&USBTransmitString[0]);
}else{
++delayCounter;
delayCounter %= 10000;
}
// String received, to be transmitted back
if(pRS232ReceiveString[0] != '\0'){
sprintf(RS232RelayString, "Received and Re-Transmitted over RS-232: \"%s\"", pRS232ReceiveString);
usci_A2_transmitString(&RS232RelayString[0]);
usci_A3_transmitString(pRS232ReceiveString);
pRS232ReceiveString[0] = '\0';
}
}
}