void main(int argc, char *argv[]) { CSL_init(); TACCTL0 &= ~CCIE; // Disable GRACE enabled interrupt // for application specific code TimerA_UART_print("G2xx2 TimerA UART\r\n"); TimerA_UART_print("READY.\r\n"); while (1) { // Wait for incoming character __bis_SR_register(LPM0_bits); // Update board outputs according to received byte if (rxBuffer & 0x01) P1OUT |= 0x01; else P1OUT &= ~0x01; // P1.0 if (rxBuffer & 0x02) P1OUT |= 0x08; else P1OUT &= ~0x08; // P1.3 if (rxBuffer & 0x04) P1OUT |= 0x10; else P1OUT &= ~0x10; // P1.4 if (rxBuffer & 0x08) P1OUT |= 0x20; else P1OUT &= ~0x20; // P1.5 if (rxBuffer & 0x10) P1OUT |= 0x40; else P1OUT &= ~0x40; // P1.6 if (rxBuffer & 0x20) P1OUT |= 0x80; else P1OUT &= ~0x80; // P1.7 if (rxBuffer & 0x40) P2OUT |= 0x40; else P2OUT &= ~0x40; // P2.6 if (rxBuffer & 0x80) P2OUT |= 0x80; else P2OUT &= ~0x80; // P2.7 // Echo received character TimerA_UART_tx(rxBuffer); } }
void main() { WDTCTL = WDTPW|WDTHOLD; //Stop watchdog timer if (CALBC1_1MHZ==0xFF) // If calibration constant erased { while(1); // do not load, trap CPU!! } char p[24]; setPins(); clock_set(); TimerA_UART_init(); ADC10CTL0 |= ADC10ON;//ADC setup ADC10CTL1 |= INCH_0|ADC10SSEL_1|CONSEQ_1; // set channel, ad source ACLK, sequence of channels ADC10AE0 |= BIT0;//|BIT1; ADC10CTL0 |= ENC|ADC10SC; //|ADC10IE; __enable_interrupt(); for (;;) { // Wait for incoming character __bis_SR_register(LPM0_bits); //temp = (temp*35)/100; itoa(temp,p,10); TimerA_UART_print(p); TimerA_UART_print("\r\n"); //set_led(temp); } }
#include "msp430g2231.h" #define UART_TXD 0x02 // TXD on P1.1 (Timer0_A.OUT0)..0x02 --> BIT1 #define A4 BIT4 #define CONVERSION_VALUE 0.003222 #define UART_TBIT (1000000 / 9600) // 9600 Baud, SMCLK = 1MHz // Globals for transmit UART communication unsigned int txData; // UART internal variable for TX //-------------------------Function//------------------------------- void Init_Watchdog_1MHz(void); void Iniy_Pin(void); void Init_TaimerA_For_UART_transmit(void); void TimerA_UART_tx(unsigned char byte); void TimerA_UART_print(char *string); void ADC_init(void); void itoa(unsigned int val, char *str, unsigned int limit); //---------------------------Main----------------------------------- */ void main(void){ int adcValue; Init_Watchdog_1MHz(); Iniy_Pin(); Init_TaimerA_For_UART_transmit(); ADC_init(); _BIS_SR(GIE); // Enable CPU interrupts for(;;){ P1DIR |= BIT0 + BIT6; P1OUT ^= BIT6+ BIT0; // __delay_cycles(500000); ADC10CTL0 |= ENC + ADC10SC; while ((ADC10CTL1 & ADC10BUSY) == 0x01); // ждем, когда преобразование закончится*/ adcValue=ADC10MEM; // конвертируем результат в напряжение и сохраняем 3,2 ADC10CTL0 ^= ENC + ADC10SC; //--------------convert Int-------------------- char itoad[16]; itoa(adcValue,itoad,3000); //---------------send int--------------------- TimerA_UART_print(itoad); TimerA_UART_print("\r\n"); __delay_cycles(250000); } }
int checkSerial() { int i; int retvalue = -1; // Iterate trough the received characters for(;rxEchoPos<rxBuffLen;rxEchoPos++) { // if it is not an Enter if(rxBuffer[rxEchoPos] != 13) { // Echo the char back TimerA_UART_tx(rxBuffer[rxEchoPos]); } else { // Echo back correct Enter for the terminal TimerA_UART_print("\r\n"); retvalue = 0; // iterate trough the received characters for(i = 0; i < rxBuffLen-1; i++) { // if it is a number if(rxBuffer[i] > 47 && rxBuffer[i] < 58) { // add to the return value retvalue = retvalue * 10 + rxBuffer[i] - 48; } } // reset the receive buffer rxEchoPos = -1; rxBuffLen = 0; } } return retvalue; }
//------------------------------------------------------------------------------ // main() //------------------------------------------------------------------------------ void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer DCOCTL = 0x00; // Set DCOCLK to 1MHz BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; P1OUT = 0x00; // Initialize all GPIO P1SEL = UART_TXD + UART_RXD; // Timer function for TXD/RXD pins P1DIR = 0xFF & ~UART_RXD; // Set all pins but RXD to output P2OUT = 0x00; P2SEL = 0x00; P2DIR = 0xFF; __enable_interrupt(); TimerA_UART_init(); // Start Timer_A UART TimerA_UART_print("G2xx1 TimerA UART\r\n"); TimerA_UART_print("READY.\r\n"); for (;;) { // Wait for incoming character __bis_SR_register(LPM0_bits); // Update board outputs according to received byte if (rxBuffer & 0x01) P1OUT |= 0x01; else P1OUT &= ~0x01; // P1.0 if (rxBuffer & 0x02) P1OUT |= 0x08; else P1OUT &= ~0x08; // P1.3 if (rxBuffer & 0x04) P1OUT |= 0x10; else P1OUT &= ~0x10; // P1.4 if (rxBuffer & 0x08) P1OUT |= 0x20; else P1OUT &= ~0x20; // P1.5 if (rxBuffer & 0x10) P1OUT |= 0x40; else P1OUT &= ~0x40; // P1.6 if (rxBuffer & 0x20) P1OUT |= 0x80; else P1OUT &= ~0x80; // P1.7 if (rxBuffer & 0x40) P2OUT |= 0x40; else P2OUT &= ~0x40; // P2.6 if (rxBuffer & 0x80) P2OUT |= 0x80; else P2OUT &= ~0x80; // P2.7 // Echo received character TimerA_UART_tx(rxBuffer); } }
void moveServo(int deg) { int pwm,k,i; // generate PWM signal for the servo pwm = 60 + deg; for(k=0;k<50;k++) { P2OUT |= BIT2; for(i=0;i<pwm;i++) __delay_cycles(125); P2OUT &= ~BIT2; for(i=0;i<2000-pwm;i++) __delay_cycles(125); } // send back an acknowledge to TimerA_UART_print("ACK\r\n"); }