Пример #1
0
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());
	 }
}
Пример #2
0
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
Пример #3
0
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
Пример #4
0
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