/* * customer.c * */ //* DriverLib Includes */ #include "driverlib.h" /* Standard Includes */ #include #include /* variable intialization */ static volatile uint16_t curADCResult,dval,i,j; static volatile uint32_t dec; static volatile float resultsBuffer[UINT16_MAX],d; static volatile uint16_t resPos; char itos[9]={0,}; /* UART configuration with 9600 baud rate and 48MHZ clock*/ /* * 8bytes at 1M baud - 6.7ms, sampling rate is 12Khz, 83us */ const eUSCI_UART_Config uartConfig = { EUSCI_A_UART_CLOCKSOURCE_SMCLK, // SMCLK Clock Source 1, // BRDIV = 78 8, // UCxBRF = 2 0, // UCxBRS = 0 EUSCI_A_UART_NO_PARITY, // No Parity EUSCI_A_UART_LSB_FIRST, // MSB First EUSCI_A_UART_ONE_STOP_BIT, // One stop bit EUSCI_A_UART_MODE, // UART mode EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION // Oversampling }; int main(void) { /* Halting the Watchdog */ MAP_WDT_A_holdTimer(); /* temporary and count variable*/ curADCResult = 0; resPos = 0; /* * If going to run DCO at 48Mhz then you need to run at * Vcore1 and Flash wait state 1 */ MAP_PCM_setCoreVoltageLevel(PCM_VCORE1); /* * Revision C silicon supports wait states of 1 at 48Mhz * Revision B (black launchpad) requires 2 */ MAP_FlashCtl_setWaitState(FLASH_BANK0, 2); MAP_FlashCtl_setWaitState(FLASH_BANK1, 2); /* Setting DCO to 48MHz */ MAP_CS_setDCOCenteredFrequency(CS_DCO_FREQUENCY_48); /* Setting MCLK to REFO at 48MHz for LF mode */ MAP_CS_initClockSignal(CS_MCLK, CS_DCOCLK_SELECT, CS_CLOCK_DIVIDER_1); /* * USE SMCLK for ADC and not MCLK */ MAP_CS_initClockSignal(CS_SMCLK, CS_DCOCLK_SELECT, CS_CLOCK_DIVIDER_2); /* * LF mode suggest 125Khz */ // MAP_PCM_setPowerState(PCM_AM_LF_VCORE0); /* Enabling the FPU for floating point operation */ MAP_FPU_enableModule(); MAP_FPU_enableLazyStacking(); /* Selecting P1.2 and P1.3 in UART mode */ MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P1, GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3, GPIO_PRIMARY_MODULE_FUNCTION); /*setting P2.5 as output and initializing to 0*/ MAP_GPIO_setAsOutputPin(GPIO_PORT_P2, GPIO_PIN5); MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P2, GPIO_PIN5); /*setting LED Pin P1.0 as output and initializing to 0*/ MAP_GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0); MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P1, GPIO_PIN0); /* Configuring GPIOs (5.5 A0) */ MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5, GPIO_PIN5, GPIO_TERTIARY_MODULE_FUNCTION); /* * Initializing ADC (MCLK/1/4) */ MAP_ADC14_enableModule(); /* * The MCLK is at 48Mhz which is not valid per the datasheet. */ MAP_ADC14_initModule(ADC_CLOCKSOURCE_SMCLK, ADC_PREDIVIDER_1, ADC_DIVIDER_2, 0); /* Configuring ADC Memory */ MAP_ADC14_configureSingleSampleMode(ADC_MEM0, true); MAP_ADC14_configureConversionMemory(ADC_MEM0, ADC_VREFPOS_AVCC_VREFNEG_VSS, ADC_INPUT_A0, false); /* Configuring Sample Timer */ MAP_ADC14_enableSampleTimer(ADC_MANUAL_ITERATION); /* * default sample time is 4 clock cycles */ /* * enabling ADC Conversion */ MAP_ADC14_enableConversion(); /* Configuring UART Module */ //MAP_UART_initModule(EUSCI_A0_MODULE, &uartConfig); /* * updated driverlib SDK 1_30_00_40 */ MAP_UART_initModule(EUSCI_A0_BASE, &uartConfig); /* Enable UART module */ // MAP_UART_enableModule(EUSCI_A0_MODULE); /* * updated driverlib SDK 1_30_00_40 */ MAP_UART_enableModule(EUSCI_A0_BASE); MAP_Timer32_initModule(TIMER32_BASE, TIMER32_PRESCALER_1, TIMER32_32BIT, TIMER32_PERIODIC_MODE); MAP_Timer32_setCount(TIMER32_BASE,1090); MAP_Timer32_enableInterrupt(TIMER32_BASE); /* Enabling interrupts */ MAP_Interrupt_enableInterrupt(INT_T32_INT1); MAP_Interrupt_enableMaster(); MAP_Timer32_startTimer(TIMER32_BASE, false); /* Sleeping when not in use */ while (1) { MAP_PCM_gotoLPM0(); } } /* Timer32 ISR */ //void timer32_isr(void) void T32_INT1_IRQHandler(void) { MAP_Timer32_clearInterruptFlag(TIMER32_BASE); /* toggling P1.0 and P2.5*/ MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P2, GPIO_PIN5); MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0); /* Enabling/Toggling Conversion */ MAP_ADC14_toggleConversionTrigger(); /* * Poll waiting for interrupt to complete */ while(!(MAP_ADC14_getInterruptStatus() & ADC_INT0)); /* * toggling P1.0 and P2.5 * Debug */ // MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P2, GPIO_PIN5); MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0); /* transferring ADC result to a variable*/ curADCResult = MAP_ADC14_getResult(ADC_MEM0); resultsBuffer[resPos++] = (curADCResult * 1.2) / 16384; if((resPos%200)==0) { readytotransmit(); } MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P2, GPIO_PIN5); // MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0); } void readytotransmit() { uint16_t a,e=0,f,g=1,h; float b; h=g*200; f=e*200; for(a=f;a=2;i--) { itos[i]=(dec%10)+'0'; dec=dec/10; } itos[1]='.'; itos[0]=(dval%10)+'0'; /*transmitting converted values*/ for(j=0;j<8;j++) { MAP_UART_transmitData(EUSCI_A0_MODULE,itos[j]); } } g++; e++; }