Пример #1
0
int main(void) {

	setPin(DDRC,4);

	char buffer[4];


    /*
     *  Initialize UART library, pass baudrate and AVR cpu clock
     *  with the macro
     *  UART_BAUD_SELECT() (normal speed mode )
     *  or
     *  UART_BAUD_SELECT_DOUBLE_SPEED() ( double speed mode)
     */
    uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );

    /*
     * now enable interrupt, since UART library is interrupt controlled
     */
    sei();

    unsigned int c;


    uart_puts("Ready.\r\n");

	while(1) {

        /*
         * Get received character from ringbuffer
         * uart_getc() returns in the lower byte the received character and
         * in the higher byte (bitmask) the last receive error
         * UART_NO_DATA is returned when no data is available.
         *
         */
        c = uart_getc();

        if ( c & UART_NO_DATA )
        {
            /*
             * no data available from UART
             */
        }
        else
        {
            /*
             * new data available from UART
             * check for Frame or Overrun error
             */
            if ( c & UART_FRAME_ERROR )
            {
                /* Framing Error detected, i.e no stop bit detected */
                uart_puts_P("UART Frame Error: ");
            }
            if ( c & UART_OVERRUN_ERROR )
            {
                /*
                 * Overrun, a character already present in the UART UDR register was
                 * not read by the interrupt handler before the next character arrived,
                 * one or more received characters have been dropped
                 */
                uart_puts_P("UART Overrun Error: ");
            }
            if ( c & UART_BUFFER_OVERFLOW )
            {
                /*
                 * We are not reading the receive buffer fast enough,
                 * one or more received character have been dropped
                 */
                uart_puts_P("Buffer overflow error: ");
            }
            /*
             * send received character back
             */

            // PORTC ^= 1 << PINC4;

            if ((unsigned char)c == 'n') {
            	setPin(PORTC,4);
            	uart_puts("On.\r\n");
            }
            else if ((unsigned char)c ==  'm') {
            	clearPin(PORTC,4);
            	uart_puts("Off.\r\n");
            }

            // uart_putc( (unsigned char)c );

        }
	}


}
Пример #2
0
void Pineapple::clear(){
    //set all register pins to LOW
    for(int i = _Number_of_Registers * 8 - 1; i >=  0; i--){
        setPin(i, _common);
    }
}
void TMRpcm::play(char* filename, unsigned long seekPoint){

  if(speakerPin != lastSpeakPin){
	  #if !defined (MODE2)
	  	setPin();
	  #else
	    setPins();
	  #endif
	  lastSpeakPin=speakerPin;
   }
  stopPlayback();
  if(!wavInfo(filename)){
  	#if defined (debug)
  		Serial.println("WAV ERROR");
  	#endif
  return;
  }//verify its a valid wav file


  		if(seekPoint > 0){ seekPoint = (SAMPLE_RATE*seekPoint) + fPosition();
  		seek(seekPoint); //skip the header info

  }
	playing = 1; bitClear(optionByte,7); //paused = 0;

	if(SAMPLE_RATE > 45050 ){ SAMPLE_RATE = 24000;
	#if defined (debug)
  	  	Serial.print("SAMPLE RATE TOO HIGH: ");
  	  	Serial.println(SAMPLE_RATE);
  	#endif
  	}

#if !defined (USE_TIMER2)
    //if(qual)
    if(bitRead(optionByte,6)){resolution = 10 * (800000/SAMPLE_RATE);}
    else{ resolution = 10 * (1600000/SAMPLE_RATE);
	}
#else
	resolution = 255;
	if(SAMPLE_RATE < 9000){
		*TCCRnB[tt] &= ~_BV(CS20);
		*TCCRnB[tt] |= _BV(CS21);
	}else{
		*TCCRnB[tt] &= ~_BV(CS21);
		*TCCRnB[tt] |= _BV(CS20);
	}
#endif
    byte tmp = (sFile.read() + sFile.peek()) / 2;

	#if defined(rampMega)
    if(bitRead(optionByte,5)){

			*OCRnA[tt] = 0; *OCRnB[tt] = resolution;
			timerSt();
			for(unsigned int i=0; i < resolution; i++){

				*OCRnB[tt] = constrain(resolution-i,0,resolution);

			//if(bitRead(*TCCRnB[tt],0)){
			//	for(int i=0; i<10; i++){
			//		while(*TCNT[tt] < resolution-50){}
			//	}
			//}else{
				delayMicroseconds(150);
			//}
			}

	}
	bitClear(optionByte,5);
	#endif

	//rampUp = 0;
	unsigned int mod;
	if(volMod > 0){ mod = *OCRnA[tt] >> volMod; }else{ mod = *OCRnA[tt] << (volMod*-1); }
bool set_uint8_value(uint8_t node_type, uint8_t parent_instance_id,  uint8_t instance_id, uint8_t value)
{
  uint8_t retval;
  switch (node_type)
  {
  case NODE_TYPE_CONFIG_LEAF_INPUT_SWITCH_PIN:
  case NODE_TYPE_CONFIG_LEAF_OUTPUT_SWITCH_PIN:
  case NODE_TYPE_CONFIG_LEAF_PWM_OUTPUT_PIN:
  case NODE_TYPE_CONFIG_LEAF_BUZZER_PIN:
  case NODE_TYPE_CONFIG_LEAF_TEMP_SENSOR_PIN:
  case NODE_TYPE_CONFIG_LEAF_HEATER_PIN:
  case NODE_TYPE_CONFIG_LEAF_STEPPER_ENABLE_PIN:
  case NODE_TYPE_CONFIG_LEAF_STEPPER_DIRECTION_PIN:
  case NODE_TYPE_CONFIG_LEAF_STEPPER_STEP_PIN:
    return setPin(node_type, parent_instance_id, value);

  case NODE_TYPE_CONFIG_LEAF_SYSTEM_HARDWARE_TYPE:
    retval = NVConfigStore::SetHardwareType(value);
    break;
  case NODE_TYPE_CONFIG_LEAF_SYSTEM_HARDWARE_REV:
    retval = NVConfigStore::SetHardwareRevision(value);
    break;

  case NODE_TYPE_CONFIG_LEAF_SYSTEM_NUM_INPUT_SWITCHES:
    retval = Device_InputSwitch::Init(value);
    break;
  case NODE_TYPE_CONFIG_LEAF_SYSTEM_NUM_OUTPUT_SWITCHES:
    retval = Device_OutputSwitch::Init(value);
    break;
  case NODE_TYPE_CONFIG_LEAF_SYSTEM_NUM_PWM_OUTPUTS:
    retval = Device_PwmOutput::Init(value);
    break;
  case NODE_TYPE_CONFIG_LEAF_SYSTEM_NUM_BUZZERS:
    retval = Device_Buzzer::Init(value);
    break;
  case NODE_TYPE_CONFIG_LEAF_SYSTEM_NUM_TEMP_SENSORS:
    retval = Device_TemperatureSensor::Init(value);
    break;
  case NODE_TYPE_CONFIG_LEAF_SYSTEM_NUM_HEATERS:
    retval = Device_Heater::Init(value);
    break;
  case NODE_TYPE_CONFIG_LEAF_SYSTEM_NUM_STEPPERS:
    retval = Device_Stepper::Init(value);
    break;

  case NODE_TYPE_CONFIG_LEAF_OUTPUT_SWITCH_INITIAL_STATE:
    retval = Device_OutputSwitch::SetInitialState(parent_instance_id, value);
    break;

  case NODE_TYPE_CONFIG_LEAF_HEATER_TEMP_SENSOR:
    retval = Device_Heater::SetTempSensor(parent_instance_id, value);
    break;
  case NODE_TYPE_CONFIG_LEAF_HEATER_POWER_ON_LEVEL:
    retval = Device_Heater::SetPowerOnLevel(parent_instance_id, value);
    break;
  case NODE_TYPE_CONFIG_LEAF_HEATER_BANG_BANG_HYSTERESIS:
    retval = Device_Heater::SetBangBangHysteresis(parent_instance_id, value);
    break;
  case NODE_TYPE_CONFIG_LEAF_HEATER_PID_FUNCTIONAL_RANGE:
    retval = Device_Heater::SetPidFunctionalRange(parent_instance_id, value);
    break;

  default:
    send_app_error_response(PARAM_APP_ERROR_TYPE_FIRMWARE_ERROR,
         PMSG(MSG_ERR_CANNOT_HANDLE_FIRMWARE_CONFIG_REQUEST), __LINE__);
    return false;
  }

  if (retval == APP_ERROR_TYPE_SUCCESS)
    return true;

  generate_response_data_addbyte(retval);
  generate_response_send();
  return false;
}
Пример #5
0
void Pineapple::setAll(boolean val){
    //set all register pins to LOW
    for(int i = _Number_of_Registers * 8 - 1; i >=  0; i--){
        setPin(i, val);
    }
}
Пример #6
0
void runMotor(word i2c, word motor, word command){

	word in1, in2;


	//Defines which motor to control by setting which pins are input and output

	switch(motor){

		case 1:

			in1 = PWM_M1_IN1;

			in2 = PWM_M1_IN2;

			break;

		case 2:

			in1 = PWM_M2_IN1;

			in2 = PWM_M2_IN2;

			break;

		case 3:

			in1 = PWM_M3_IN1;

			in2 = PWM_M3_IN2;

			break;

		case 4:

			in1 = PWM_M4_IN1;

			in2 = PWM_M4_IN2;

			break;

		default:

			printf("Invalid motor number '%d'\n", motor);

			return;

	}


	//Sets pins to high or low to define controls

	switch(command){

		case MOTOR_FORWARD:

			setPin(i2c, in2, 0);

			setPin(i2c, in1, 1);

			break;

		case MOTOR_BACK:

			setPin(i2c, in1, 0);

			setPin(i2c, in2, 1);

			break;

		case MOTOR_RELEASE:

			setPin(i2c, in1, 0);

			setPin(i2c, in2, 0);

			break;

		case MOTOR_BRAKE:

			setPin(i2c, in1, 1);

			setPin(i2c, in2, 1);

		default:

			printf("Unsupported command '%d'\n", command);

			return;

	}

}
Пример #7
0
// private
Interrupt::Interrupt(const ConstantString & name, const size_t pin)
{
  setup(name);
  setPin(pin);
}
Пример #8
0
void connectUSB() {
#if !defined(BOARD_DiscoveryF4)
  //resetPin (USB_DISC_BANK,USB_DISC);  /* present ourselves to the host */
  setPin (USB_DISC_BANK,USB_DISC);  /* ala42: present ourselves to the host */
#endif
}
Пример #9
0
int main(int argc, char ** argv)
{
	
	DWORD devIndex = 0; 
	char Buffer[255];
	ftdi_pins.pins = 0xF1;
	ftdi_pins.clk = HIGH;
	DWORD p = 0;
	byte e1 = 0xff;
	byte e2 = 0;

	HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute(hConsole, 7);
	if (argc < 2) {
		printf("Please specify the hex file\n");
		return 1;
	}

	
	FT_STATUS ftStatus = FT_ListDevices((PVOID)devIndex, Buffer, FT_LIST_BY_INDEX | FT_OPEN_BY_SERIAL_NUMBER);
	if (ftStatus == FT_OK) {

		int bytes = load_file(argv[1]);

		ftStatus = FT_OpenEx(Buffer, FT_OPEN_BY_SERIAL_NUMBER, &ftdi_chip);
		FT_SetBitMode(ftdi_chip, PIN_TX | PIN_RX | PIN_CTS, 1); // BIT BANG MODE
		FT_SetBaudRate(ftdi_chip, BAUD_RATE);						 

		setPin(RST_8051, LOW);
		setPin(MOSI_8051, LOW);
		setPin(CLK_8051, LOW);
		setPin(RST_8051, HIGH);
		
		Sleep(500);
		printf("%x\n", progEnable());		
		Sleep(1100);

		eraseChip();

		for (int i = from_addr; i < to_addr + 1; i++) {
			printf("%02X", readProgmem(0, i));
		}
		printf("\n");


		for (int i = from_addr; i < to_addr + 1; i++) {
			printf("%02X", memory[i]);
		}
		printf("\n");
		
		// write memory
		for (int i = from_addr; i < to_addr+1; i++) {
			writeProgmem(0, i, memory[i]);
			printf("%02X", readProgmem(0, i));
		}
		printf("\n");
		

		Sleep(1000);
		setPin(RST_8051, LOW);
		Sleep(500);

		FT_Close(ftdi_chip);

		getchar();
	}
	else {
		printf("Can't open FTDI chip\n");
		return 1;
	}

	return 0;
}
Пример #10
0
AIPin& AIPin::operator = (uint8_t p_rhs)
{
	setPin(p_rhs);
	return *this;
}