int main(void) { // Locals General. ----------------------------------------------------- char message[50]; // Any message to send by UART1 char command[20], response[50]; int c; int i, version; // Init Oscillator. ---------------------------------------------------- InitOscillator(); // Initialize the PLL (also disables wdt) WaitMiliSec(50); // Init mcu ports ------------------------------------------------------ init_port(); // Initialize ports // Init UARTS. --------------------------------------------------------- init_UART1(); // Initialize the serial communication (TTL / RS-232) init_UART2(); // Initialize the serial communication (TTL / RS-232) LED_ORNG=0; // LED_ORNG =1; // Welcome Message----------------------------------------------------- uart1_send_static_text("\n\n\rWELCOME to CoaX Bluetooth configuration"); // Welcome msg uart1_send_static_text("\n\rPress H (return) for help"); while(1) { i = 0; c=0; do { if (e_getchar_uart1(&command[i])) { c=command[i]; i++; } } while (((char)c != '\n')&&((char)c != '\x0d')); command[i]='\0'; switch (command[0]) { case 'P': e_bt_read_local_pin_number(message); sprintf(response,"\n\rPIN code = %s",message); break; case 'O': sscanf(command,"O,%s\n",message); if(e_bt_write_local_pin_number(message)) sprintf(response,"\n\rError writting PIN"); else sprintf(response,"\n\rPIN code = %s",message); break; case 'M': sscanf(command,"M,%s\n",message); if(e_bt_write_local_name(message)) sprintf(response,"\n\rError writting Name"); else sprintf(response,"\n\rFriendly name = %s",message); break; case 'S': sscanf(command,"S,%s\n",message); if(e_bt_write_local_pin_number(message)) sprintf(response,"\n\rError writting PIN"); else sprintf(response,"\n\rPIN code = %s",message); e_send_uart1_char(response,strlen(response)); while(e_uart1_sending()); sprintf(command,"CoaX_%s",message); if(e_bt_write_local_name(command)) sprintf(response,"\n\rError writting Name"); else sprintf(response,"\n\rFriendly name = %s",command); break; case 'N': e_bt_read_local_name(message); sprintf(response,"\n\rFriendly name = %s",message); break; case 'R': version=e_bt_reset(); sprintf(response,"\n\rReset ok Firmware = %d",version); break; case 'H': uart1_send_static_text("\n\r \"M,Name\" Write Name for Friendly Bluetooth name"); uart1_send_static_text("\n\r \"N\" Read actual Friendly Bluetooth name"); uart1_send_static_text("\n\r \"O,#\" Write # PIN number"); uart1_send_static_text("\n\r \"P\" Read actual PIN number"); uart1_send_static_text("\n\r \"R\" Soft reset Bluetooth module"); uart1_send_static_text("\n\r \"S,#\" Write # PIN number and same time CoaX_#"); response[0]='\n'; response[1]='\0'; break; default: sprintf(response,"\n\rz,Command not found"); break; } e_send_uart1_char(response,strlen(response)); while(e_uart1_sending()); } }
int main(void) { // Locals General. ----------------------------------------------------- char imu_board_id[9] = {0,0,0,0, 0,0,0,0, 0}; char message[1024]; // Any message to send by UART1 InitOscillator(); // Initialize the PLL (also disables wdt) __delay32(_50MILLISEC); // Init mcu ports ------------------------------------------------------ init_port(); // Initialize ports LED_ORNG =0; LED_RED = 1; // Init UARTS. --------------------------------------------------------- init_UART1(); // Initialize the serial communication (TTL / RS-232) init_UART2(); broadcast_message("RC Testing program\n"); // Init Analog Channels. ----------------------------------------------- analog_initAnalog(); // Init the ADC module // Init SPI. --------------------------------------------------------- init_SPI(); // Init I2C. --------------------------------------------------------- e_i2cp_init(); e_i2cp_enable(); __delay32(_50MILLISEC); e_i2c_write(0x00); // dummy byte to get the START bit on the bus (believe it or not!) // Init RC. ---------------------------------------------------------- initControlVariables(NULL); broadcast_message("Initialising RC\n"); LED_ORNG =1; LED_RED = 1; BuzzerBip(1,1); // Make x bips of the Buzzer (blocking) RCInitReception(); // RCSetType(RC_WK2401); RCSetType(RC_WK2402); broadcast_message("Initialising IMU\n"); // Init BUZZER. ---------------------------------------------------------- __delay32(_200MILLISEC); // Wait for the IMU to boot while (INT_IMU==0) // Wait for the IMU to boot { FlashORNG (); // Flash the LED } read_imu_version(imu_board_id); imu_board_id[8] = 0; broadcast_message("Entering main loop\n"); // Init BUZZER. ---------------------------------------------------------- BuzzerBip(3,1); // Make x bips of the Buzzer, blocking InitLoopTimer(control.params.T_ctrl_ms);// Initialize & Enable control loop timer (20ms; 50Hz) LED_RED = 0; while (1) { __delay32(5*_10MILLISEC); sprintf(message, "RC %+.2f %+.2f %+.2f %.2f %.2f %+.2f %+.2f %+.2f %s CTRL %02X %s %s\n", RC_THROTTLE, RC_YAW, RC_ROLL, RC_PITCH, RC_THROTTLE_TRIM, RC_YAW_TRIM, RC_ROLL_TRIM, RC_PITCH_TRIM, string_of_rc_state(RCSMGetState()), control.flags.CONTROL_MODE, string_of_control_mode(control.flags.CONTROL_MODE), string_of_control_type(control.flags.CONTROL_MODE)); broadcast_message(message); } return 0; } // End of main
main(void) { //===Hier sollten Variablen deklariert werden ============================ //unsigned char i = 0; //char text[60]; //int x,y; //===Hier die notwendigen Initialisierungsschritte ======================= //=(1)== Port-Initialisierung ============================================ init_Port(); // Initialisierung der Port Register //(2)=== Clock-System-Initialisierung ==================================== //== XT2() oder Dco() als Taktquelle einstellen //== durch Ein- oder Auskommentieren //== DCO ist bei LPM Einsatz bevorzugt muß zyklisch kalibriert werden //== XT2 ist quarzstabil muß nicht zyklisch kalibriert werden // //XT2 (); // XT2 Taktquelle aktivieren mit 7.3728MHz DCO (); // Dco Taktquelle aktivieren mit 7.3728MHz // beachte DELTA //=(3)== Timer-Initialisierung= ========================================== init_Timer_A(); // Init Timer für Sekundeninterrupt // !! noch leere Funktion //=(4)== USART-Initialisierung =========================================== init_UART1(); // UART-RS232 mit 115.2kBit/s initialisieren // !! noch leere Funktion //=(5)== CC1100-Transceiver-Initialisierung ============================== init_UART0_SPI(); // CC1100 SPI UART initalisieren init_CC1100_POWERDOWN(); // CC1100 init und in RX Mode setzen // !!!Interrupte sind ab jetzt freigegeben!! //== Adresse und Funkkanal des Transceivers setzen //== für die Arbeitsplaetze HWPx (x=1...10) sollten //== ID=x und channnel=x gesetzt werden ID = 1; // Adresse setUid(ID); // Adresse im Transceiver setzen channel = 1; // Funkkanal switchFreq(channel); // Funkkanal im Transceiver setzen //== Soll der Transceiver genutzt werden müssen folgende zwei Zeilen //== auskommentiert werden: init_CC1100_IDLE(); // CC1100 in den IDLE Mode setzen init_CC1100_POWERDOWN();// CC1100 in den PowerDown Mode setzen //=(6)== LCD-Display-Initialisierung ===================================== dogm_reset(); // Hardware Reset des LCD Controllers dogm_init(); // Initialisierung der LCD Controller Register lcd_clear(WHITE); // Grafikspeicher auf dem MSP430 löschen //lcd_string(BLACK, 15, 25, "MSP430-GESTARTET!"); // Textausgabe lcd_paint(); // Grafikspeicher auf das LCD Display ausgeben #define LED_ROT (0x01) // 0 0 1 P4.0 #define LED_GELB (0x02) // 0 1 0 P4.1 #define LED_GRUEN (0x04) // 1 0 0 P4.2 #define LED_ALL (LED_ROT | LED_GELB | LED_GRUEN) #define LED_ON(led) (BIT_CLR(P4OUT, led)) #define LED_OFF(led) (BIT_SET(P4OUT, led)) #define LED_TOGGLE(led) (BIT_TOGGLE(P4OUT, led)) #define IS_LED_ON(led) (!(P4OUT & led)) #define TASTE_LINKS (0x1) #define TASTE_RECHTS (0x2) #define SLEEP_QUANTUM 10000 #define SLEEP(n) do { /* sleep for n seconds */ \ long time = n * 100000; /* wait() sleeps 10*n microseconds */ \ while(time > SLEEP_QUANTUM) { \ wait(SLEEP_QUANTUM); \ time -= SLEEP_QUANTUM; \ } \ wait(time); \ } while(0) // alle Leitungen auf Eingang TS_TIP_DIR_IN; TS_YP_DIR_IN; TS_YM_DIR_IN; TS_XP_DIR_IN; TS_XM_DIR_IN; // die Ausgangsregister vorbereitend setzen TS_XM_0; // XM X-Achse wird auf 0 gesetzt TS_TIP_1; // YP Y-Achse wird über einen PullUp Widerstand auf 1 gezogen // Die Ausgaenge jetzt freigeben TS_XM_DIR_OUT; // XM auf 0 TS_TIP_DIR_OUT; // YP auf 1 BIT_SET(P1IE, BIT6); BIT_CLR(P1IFG, BIT6); _bis_SR_register(GIE); //===Hier die Endlosschleife quasi das Betriebssystem===================== print_value(); while(1){ // linker Taster gedrueckt -> gruen an if (P1IN & TASTE_LINKS) { LED_OFF(LED_ROT | LED_GELB); LED_ON(LED_GRUEN); // rechter Taster gedrueckt -> rot an } else if (P1IN & TASTE_RECHTS) { LED_OFF(LED_GRUEN | LED_GELB); LED_ON(LED_ROT); // kein Taster gedrueckt -> gelb an } else { LED_OFF(LED_GRUEN | LED_ROT); LED_ON(LED_GELB); } } // Ende der Endlosschleife } // Ende Main
main(void) { //===Hier sollten Variablen deklariert werden ============================ //unsigned char i = 0; //char text[60]; //int x,y; //===Hier die notwendigen Initialisierungsschritte ======================= //=(1)== Port-Initialisierung ============================================ init_Port(); // Initialisierung der Port Register //(2)=== Clock-System-Initialisierung ==================================== //== XT2() oder Dco() als Taktquelle einstellen //== durch Ein- oder Auskommentieren //== DCO ist bei LPM Einsatz bevorzugt muß zyklisch kalibriert werden //== XT2 ist quarzstabil muß nicht zyklisch kalibriert werden // //XT2 (); // XT2 Taktquelle aktivieren mit 7.3728MHz DCO (); // Dco Taktquelle aktivieren mit 7.3728MHz // beachte DELTA //=(3)== Timer-Initialisierung= ========================================== init_Timer_A(); // Init Timer für Sekundeninterrupt // !! noch leere Funktion //=(4)== USART-Initialisierung =========================================== init_UART1(); // UART-RS232 mit 115.2kBit/s initialisieren // !! noch leere Funktion //=(5)== CC1100-Transceiver-Initialisierung ============================== init_UART0_SPI(); // CC1100 SPI UART initalisieren init_CC1100_POWERDOWN(); // CC1100 init und in RX Mode setzen // !!!Interrupte sind ab jetzt freigegeben!! //== Adresse und Funkkanal des Transceivers setzen //== für die Arbeitsplaetze HWPx (x=1...10) sollten //== ID=x und channnel=x gesetzt werden ID = 1; // Adresse setUid(ID); // Adresse im Transceiver setzen channel = 1; // Funkkanal switchFreq(channel); // Funkkanal im Transceiver setzen //== Soll der Transceiver genutzt werden müssen folgende zwei Zeilen //== auskommentiert werden: init_CC1100_IDLE(); // CC1100 in den IDLE Mode setzen init_CC1100_POWERDOWN();// CC1100 in den PowerDown Mode setzen //=(6)== LCD-Display-Initialisierung ===================================== dogm_reset(); // Hardware Reset des LCD Controllers dogm_init(); // Initialisierung der LCD Controller Register lcd_clear(WHITE); // Grafikspeicher auf dem MSP430 löschen //lcd_string(BLACK, 15, 25, "MSP430-GESTARTET!"); // Textausgabe lcd_paint(); // Grafikspeicher auf das LCD Display ausgeben #define LED_ROT (0x01) // 0 0 1 P4.0 #define LED_GELB (0x02) // 0 1 0 P4.1 #define LED_GRUEN (0x04) // 1 0 0 P4.2 #define LED_ALL (LED_ROT | LED_GELB | LED_GRUEN) #define LED_ON(led) (BIT_CLR(P4OUT, led)) #define LED_OFF(led) (BIT_SET(P4OUT, led)) #define LED_TOGGLE(led) (BIT_TOGGLE(P4OUT, led)) #define IS_LED_ON(led) (!(P4OUT & led)) #define TASTE_LINKS (0x1) #define TASTE_RECHTS (0x2) #define SLEEP_QUANTUM 10000 #define SLEEP(n) do { /* sleep for n seconds */ \ long time = n * 100000; /* wait() sleeps 10*n microseconds */ \ while(time > SLEEP_QUANTUM) { \ wait(SLEEP_QUANTUM); \ time -= SLEEP_QUANTUM; \ } \ wait(time); \ } while(0) BIT_CLR(P1DIR, TASTE_LINKS); BIT_CLR(P1IES, TASTE_LINKS); // LH BIT_SET(P1IE, TASTE_LINKS); BIT_CLR(P1IFG, TASTE_LINKS); BIT_SET(P1DIR, BIT2); _bis_SR_register(GIE); memset(uart_buffer, 0, sizeof(uart_buffer)); //===Hier die Endlosschleife quasi das Betriebssystem===================== while(1){ //BIT_SET(P1OUT, BIT2); //BIT_SET(P1OUT, BIT2); //SHT11_Read_Sensor(); //sprintf(uart_buffer, "%s %s\r\n", temp_char, humi_char); //print_buf(uart_buffer); //lcd_clear(WHITE); // Grafikspeicher auf dem MSP430 löschen //lcd_string(BLACK, 15, 25, uart_buffer); // Textausgabe //lcd_paint(); // Grafikspeicher auf das LCD Display ausgeben //wait(30000); } // Ende der Endlosschleife } // Ende Main