コード例 #1
0
ファイル: main.c プロジェクト: roman65536/Home_auto
// interface between avr-libc stdio and software-UART
static int my_stdio_putchar( char c, FILE *stream )
{
	if ( c == '\n' ) {
		softuart_putchar( '\r' );
	}
	softuart_putchar( c );

	return 0;
}
コード例 #2
0
void printButton2(void)
{
	if(BUTTON2 == oldbutton2)
		return;
	oldbutton2 = BUTTON2;
	if(BUTTON2)
		softuart_putchar(0x70 + 1);
	else
		softuart_putchar(0x70 + 0);
	for(l=0;l<1000;l++);
}
コード例 #3
0
void printButton1(void)
{
	if(BUTTON1==0 && buttoncount != 0xFFFF)
		buttoncount++;
	if(buttoncount > 300 && BUTTON1==0){
		if(buttoncount == 0xFFFF){
			return;
		}
		softuart_putchar(0x40 + 3);
		for(l=0;l<1000;l++);
		buttoncount = 0xFFFF;
		return;
	}
	if(BUTTON1 == oldbutton1)
		return;
	
	if(oldbutton1 == 255){
		if((BUTTON1==0)){
			softuart_putchar(0x40 + 2);
			for(l=0;l<1000;l++);
			oldbutton1 = 254;
			return;
		}else{
			//softuart_putchar(0x40 + 4);
			//for(l=0;l<1000;l++);
			oldbutton1=BUTTON1;
			return;
		}
	}
	if(oldbutton1 == 254){
		if(BUTTON1==0)
			return;
		//softuart_putchar(0x40 + 2);
		oldbutton1 = BUTTON1;
		return;
	}
	
	oldbutton1 = BUTTON1;

	if(buttoncount==0xFFFF){
		buttoncount=0;
		return;
	}
	buttoncount=0;
	if(BUTTON1)
		softuart_putchar(0x40 + 1);
	else
		softuart_putchar(0x40 + 0);
	for(l=0;l<1000;l++);
}
コード例 #4
0
ファイル: accel.c プロジェクト: htw-inka/attiny-soundcube
void ACCEL_calibrate() {
#ifdef ACCEL_CHAN_X
    uint32_t sumX = 0;
#endif
    uint32_t sumY = 0;
    uint32_t sumZ = 0;
    uint16_t i = 0;

    for (; i < ACCEL_CALIB_SAMPLES; i++) {
#ifdef ACCEL_CHAN_X    
        sumX += ACCEL_getXRaw();
#endif
        sumY += ACCEL_getYRaw();
        sumZ += ACCEL_getZRaw();
#ifdef DEBUG
        if (i % 100 == 0) softuart_putchar('.');
#endif
    }
/*#ifdef DEBUG
    PRINT_NL;
    printInt((uint16_t) (sumX / ACCEL_CALIB_SAMPLES)); PRINT_NL;
    printInt((uint16_t) (sumY / ACCEL_CALIB_SAMPLES)); PRINT_NL;
    printInt((uint16_t) (sumZ / ACCEL_CALIB_SAMPLES)); PRINT_NL;
#endif*/

#ifdef ACCEL_CHAN_X    
    ACCEL_offSets[0] = (uint16_t) (sumX / ACCEL_CALIB_SAMPLES);
#endif
    ACCEL_offSets[1] = (uint16_t) (sumY / ACCEL_CALIB_SAMPLES);
    ACCEL_offSets[2] = (uint16_t) (sumZ / ACCEL_CALIB_SAMPLES);
}
コード例 #5
0
ファイル: main.c プロジェクト: mkotyk/c128power
int main(void)
{
    static char cmd[10];
    char c, *p = cmd;
    setup();
    while(1)
    {
        if(softuart_kbhit()) {
            c = softuart_getchar();
            switch(c)
            {
                case '\n':
                case '\r':
                {
                    softuart_putchar(c);
                    *p = 0;
                    p = cmd;
                    if((cmd[0] == '\0') || (execute_cmd(cmd) == CMD_OK))
                        softuart_puts_p(PSTR("ok\r\n"));
                    else
                        softuart_puts_p(PSTR("error\r\n"));
                    break; 
                }
                default:
                {
                    if(p < cmd+(sizeof(cmd)))
                    {
                        *p++ = c;
                        softuart_putchar(c);
                    }
                    else
                    {
                        softuart_putchar(7); // bell
                    }
                }
            } 
        }
    }
    return 0;
}
コード例 #6
0
ファイル: main.cpp プロジェクト: exzombie/FrugalWatchdog
static void printnum(unsigned long number) {
    char tmp[10];
    byte i;
    if (number) {
	tmp[sizeof(tmp)-1] = 0;
	for (i = sizeof(tmp)-2; i > 0 && number > 0; --i) {
	    tmp[i] = '0' + number % 10;
	    number /= 10;
	}
	softuart_puts(tmp + i + 1);
    } else {
	softuart_putchar('0');
    }
}
コード例 #7
0
void shake_detect_update() {
	// if (shakeDetected == 0) SHAKE_DETECT_TIMER_COUNTER = 0;	// reset timer when no shake was detected

	const int32_t totalG = ACCEL_getTotalVectorSquared();

	if (shakeDetected == 1 && minShakeTimeExceeded == 0
	 && SHAKE_DETECT_TIMER_COUNTER >= minShakeTimeCounterVal)  // it was shaken long enough
	{	
		minShakeTimeExceeded = 1;
		// DIGIWRITE_H(PORTB, PB1);
	}

	if (shakeLevel > 0) {	// when a shake level is given, 
		shakeLevel--;	// calm down again
#ifdef DEBUG
		softuart_putchar('l');
		softuart_putchar('=');
		printInt(shakeLevel);PRINT_NL;
#endif
	}

	// check if we can end the shake event
	if (shakeLevel < SHAKE_DETECT_THRESH && shakeDetected != 0 && minShakeTimeExceeded != 0) {
#ifdef DEBUG
		softuart_putchar('s');PRINT_NL;
#endif
		shakeDetected = 0;
		// DIGIWRITE_L(PORTB, PB1);
		minShakeTimeExceeded = 0;
		(*shakeDetectEndCallback)();
	} else if (totalG > SHAKE_DETECT_SHOCK_THRESH
	        && shakeLevel + SHAKE_DETECT_SHOCK_LEVEL_INCREASE < SHAKE_DETECT_MAX_LEVEL)
	{
        shakeLevel += SHAKE_DETECT_SHOCK_LEVEL_INCREASE;	// get more excited

#ifdef DEBUG
		// printUInt(totalG);PRINT_NL;
		softuart_putchar('l');
		softuart_putchar('=');
		printInt(shakeLevel);PRINT_NL;
#endif

		// check if we can start the shake event
		if (shakeLevel >= SHAKE_DETECT_THRESH && shakeDetected == 0) {
#ifdef DEBUG
			softuart_putchar('S');PRINT_NL;
#endif
			shakeDetected = 1;
			SHAKE_DETECT_TIMER_COUNTER = 0;	// reset the timer
			(*shakeDetectBeginCallback)();
		}
	}
}
コード例 #8
0
ファイル: main.cpp プロジェクト: exzombie/FrugalWatchdog
static void _cmd_status()
{
    unsigned long elapsed;
    ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
	elapsed = ticks;
    }
    elapsed = elapsed * timerTick_us / 1000000;
    printnum(elapsed);
    softuart_puts_P(" / ");
    printnum(timeoutTicks * timerTick_us / 1000000);
    softuart_puts_P("\r\n");

    // Print the last stored timestamp.
    byte c;
    byte i = 0;
    while ((c = read1EEPROM(i++)))
	softuart_putchar(c);
    softuart_puts_P("\r\n");
}
コード例 #9
0
int main(void)
{
	wdt_enable(WDTO_120MS);
	
	init();
	softuart_putchar(255);
	
	while(1){
		wdt_reset();
		checkState();
		if(gotanalogs){
			printAnalog1();
			printAnalog2();
			printButton1();
			printButton2();
		}
		for(l=0;l<1000;l++);
	}
}
コード例 #10
0
ファイル: nRF24AP1.c プロジェクト: charleswolf/GPS-Wolf-V3
void send_ant_packet( UCHAR msgID, UCHAR argCnt, ...) 
{
	va_list arg;
	va_start (arg, argCnt);
	uint8_t i;
	uint8_t buf[MESG_MAX_SIZE];
	buf[0] = MESG_TX_SYNC;
	buf[1] = argCnt;
	buf[2] = msgID;
	
	for(i = 0; i < argCnt; i++) 
	{
		buf[i+MESG_HEADER_SIZE] = va_arg(arg, int);
	}
	buf[argCnt+MESG_HEADER_SIZE] = checkSum(buf,argCnt+MESG_HEADER_SIZE);
	
	for(i = 0; i < argCnt+MESG_FRAME_SIZE; i++)
	{
		softuart_putchar(buf[i]);
	}
}
コード例 #11
0
ファイル: clixxIO_Serial.cpp プロジェクト: clixx-io/clixx.io
/** Writes a character to the serial port
*
* This function writes one character to the serial port.
* 
*/
int clixxIOSerial::write(const char c)
{
	softuart_putchar((const unsigned char) c);

	return(0);
}
コード例 #12
0
ファイル: main.c プロジェクト: roman65536/Home_auto
int main(void)
{
	char c;

	unsigned short cnt = 0;
#if (F_CPU > 4000000UL)
#define CNTHALLO (unsigned int)(0xFFFF)
#else 
#define CNTHALLO (unsigned int)(0xFFFF/3)
#endif
	unsigned short mycnt=0;
	  CLKPR=_BV(CLKPCE);
  	CLKPR=0;
	pir=0;

	DDRA |= 0xe2;
	PORTA |= 0x81;
	adc_init();
	softuart_init();
	TCCR1A=_BV(COM0B1)|_BV(WGM00);
	TCCR1B=_BV(CS00);


	softuart_turn_rx_on(); /* redundant - on by default */
	
	sei();
	
	

#if WITH_STDIO_DEMO
		stdio_demo_func();
#endif
OCR1A=0x10;
OCR1B=0xf0;

	
	for (;;) {
	           if((PINB&4)==4 ) pir=1;
	
		if ( softuart_kbhit() ) {
			c = softuart_getchar();
			//softuart_putchar( '[' );
			//softuart_putchar( c );
			//softuart_putchar( ']' );
			if(c=='g')
			  {
			    c=softuart_getchar();
			    if(c==C_ID(ID))
			      {
				softuart_putchar(3);
				softuart_putchar(2);
				send();
			pir=0;
			      }
			  }
			else if( c=='s') 
			  {
			   unsigned int pwm;
			  c=softuart_getchar();
                            if(c==C_ID(ID))
                              {
			      sprintf(line,"made it");
	//		       char line[32];
				for(cnt=0;cnt<=31;cnt++)
				 {
				  c=softuart_getchar();
				  if(c=='\n') {line[cnt]=0; break;}
				  else line[cnt]=c;
				 }
				int ret=sscanf_P(&line[0],PSTR("inTopic/pwm/"STD_ID(ID)" %d"),&pwm);
				sprintf_P(dbg,PSTR("%dpwm:%d"),ret,pwm);
				OCR1B=pwm;	
			
			  }

			 }
			}
		
		
	}
	
	return 0; /* never reached */
}