/** * Main routine */ int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT BCSCTL1 = CALBC1_1MHZ; // Set DCO DCOCTL = CALDCO_1MHZ; P1DIR = BIT0 + BIT6; // P1.0 and P1.6 are the red+green LEDs P1OUT = BIT0 + BIT6; // All LEDs off uart_init(); // register ISR called when data was received uart_set_rx_isr_ptr(uart_rx_isr); __bis_SR_register(GIE); uart_puts("\n***************\n"); uart_puts("MSP430 harduart\n"); uart_puts("***************\n"); ADC_init_intref_multichannel((uint16_t *)adc,SAMPLES_CNT*CHANNELS_CNT); // Init ADC __bis_SR_register(LPM0_bits+GIE); // Go to sleep for(;;); // For debug }
/** * Main routine */ int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT if (CALBC1_16MHZ==0xFF) // If calibration constant erased { while(1); // do not load, trap CPU!! } BCSCTL1 = CALBC1_16MHZ; // Set DCO DCOCTL = CALDCO_16MHZ; P1DIR = BIT0 + BIT6; // P1.0 and P1.6 are the red+green LEDs P1OUT = BIT0 + BIT6; // All LEDs off uart_init(); //register ISR called when data was received uart_set_rx_isr_ptr(uart_rx_isr); // initialize LED strip initStrip(); // ***** HAVE YOU SET YOUR NUM_LEDS DEFINE IN WS2812.C? ****** //fillStrip( 0x00, 0x00, 0xFF); //showStrip(); __bis_SR_register(GIE); }
void uart_init(void) { uart_set_rx_isr_ptr(0L); P1SEL = RXD + TXD; P1SEL2 = RXD + TXD; UCA0CTL1 |= UCSSEL_2; // SMCLK UCA0BR0 = 104; // 1MHz 9600 UCA0BR1 = 0; // 1MHz 9600 UCA0MCTL = UCBRS0; // Modulation UCBRSx = 1 UCA0CTL1 &= ~UCSWRST; // Initialize USCI state machine IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt }
/** * Main routine */ int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT BCSCTL1 = CALBC1_1MHZ; // Set DCO DCOCTL = CALDCO_1MHZ; P1DIR = BIT0 + BIT6; // P1.0 and P1.6 are the red+green LEDs P1OUT = BIT0 + BIT6; // All LEDs off uart_init(); // register ISR called when data was received uart_set_rx_isr_ptr(uart_rx_isr); __bis_SR_register(GIE); uart_puts((char *)"\n\r***************\n\r"); uart_puts((char *)"MSP430 harduart\n\r"); uart_puts((char *)"***************\n\r\n\r"); uart_puts((char *)"PRESS any key to start echo example ... "); unsigned char c = uart_getc(); uart_putc(c); uart_puts((char *)"\n\rOK\n\r"); volatile unsigned long i; while(1) { P1OUT ^= BIT6; // Toggle P1.6 output (green LED) using exclusive-OR i = 50000; // Delay do (i--); // busy waiting (bad) while (i != 0); } }
void uart_init(void) { // initialize the function pointer to NULL uart_set_rx_isr_ptr(0L); // Select the recieve and transmit pins P1SEL = RXD + TXD; P1SEL2 = RXD + TXD; // SMCLK UCA0CTL1 |= UCSSEL_2; // 1MHz 9600 UCA0BR0 = 104; UCA0BR1 = 0; // Modulation UCBRSx = 1 UCA0MCTL = UCBRS0; // Initialize USCI state machine UCA0CTL1 &= ~UCSWRST; // Enable USCI_A0 RX interrupt IE2 |= UCA0RXIE; }
int main(void) { WDTCTL = WDTPW + WDTHOLD; BCSCTL1 = CALBC1_1MHZ; // Set DCO DCOCTL = CALDCO_1MHZ; P1DIR = 0xf9; P1OUT = 0x10; ADC_init(); // !!!!!! uart_init(); uart_set_rx_isr_ptr(uart_rx_isr); __bis_SR_register(GIE); // global interrupt enable uart_puts((char *)"\n\r***************\n\r"); uart_puts((char *)"MSP430 harduart\n\r"); uart_puts((char *)"***************\n\r\n\r"); uart_puts((char *)"PRESS any key to start echo example ... "); unsigned char c = uart_getc(); uart_putc(c); uart_puts((char *)"\n\rOK\n\r"); // int n; // int prev = 0; // while (1) // { // ADC10CTL0 |= ADC10SC; // начинаем новое преобразование // while ((ADC10CTL1 & ADC10BUSY) == 0x01); // ждем, когда преобразование закончится // // if (ADC10MEM < prev) { // // n = 0x00; // // addValue(ADC10MEM); // // if (micro >= MIN) // // n |= 0x10; // // if (micro >= MIN + (MAX-MIN)/5) // // n |= 0x08; // // if (micro >= MIN + (MAX-MIN)/5*2) // // n |= 0x80; // // if (micro >= MIN + (MAX-MIN)/5*3) // // n |= 0x01; // // if (micro >= MIN + (MAX-MIN)/5*4) // // n |= 0x20; // // P1OUT = n; // // } // prev = ADC10MEM; // } volatile unsigned long i = 5000; int max = 0; ADC10CTL0 |= ADC10SC; while(1) { if ((ADC10CTL1 & ADC10BUSY) != 0x01) { // uart_puts((char *)"MSP430 harduart\n\r"); // uart_printf("ADC %x\r\n", ADC10MEM); ADC10CTL0 |= ADC10SC; } if (i == 0) { P1OUT ^= 0x80; // Toggle P1.6 output (green LED) using exclusive-OR i = 5000; // Delay uart_printf("ADC %x\r\n", max); max = 0; } i--; if (ADC10MEM > max) max = ADC10MEM; // do (i--); // busy waiting (bad) // while (i != 0); } }