Exemplo n.º 1
0
static void
controller_task (void)
{
  unsigned int button_last_state = BUTTON_UP;
  unsigned int mode = 0;
  while(1)
    {
      if (button_get_state(BUTTON_CENTER) == BUTTON_DOWN)
        {
          if (button_last_state == BUTTON_UP)
            {
              switch(mode)
                {
                case 0:
                  add_task(func_task_b);
                  mode++;
                  break;
                case 1:
                  add_task(func_task_a);
                  mode++;
                  break;
                default:
                  mode++;
                  //TODO: shutdown
                }
            }
          button_last_state = BUTTON_DOWN;
        }
      else
        {
          button_last_state = BUTTON_UP;
        }
    }
}
Exemplo n.º 2
0
static gboolean
on_is_on(Button *btn,
		GDBusMethodInvocation *invocation,
		gpointer user_data)
{
	gboolean btn_state=button_get_state(btn);
	button_complete_is_on(btn,invocation,btn_state);
	return TRUE;
}
Exemplo n.º 3
0
int main(void)
{
	_delay_ms(250);

	servo_init();
	ir_init();
	bluetooth_init();
	ultrasonic_init();
	buttons_init();
	sei();
	
    while(1) {
		comm_exec();
		move_proc();
		
		if (button_get_state(1)) move_enable(false);
		if (button_get_state(2)) move_enable(true);
    }
}
Exemplo n.º 4
0
/* Manual calibration task */
void calibration_manual_task(void)
{
	uint16_t value = 0;
	if(button_get_state(1) == BUTTON_PRESSED)
	{
		value = servo_angle_decrease(SERVO_1);
		uprintf("boutton 1 value = %d\r\n",value);
	}
	if(button_get_state(2) == BUTTON_PRESSED)
	{
		value = servo_angle_increase(SERVO_1);
		uprintf("boutton 2 value = %d\r\n",value);
	}
	if(button_get_state(3) == BUTTON_PRESSED)
	{
		value = servo_angle_increase(SERVO_2);
		uprintf("boutton 3 value = %d\r\n",value);
	}
	if(button_get_state(4) == BUTTON_PRESSED)
	{
		value = servo_angle_decrease(SERVO_2);
		uprintf("boutton 4 value = %d\r\n",value);
	}
}
Exemplo n.º 5
0
/**
 * Entry point 
 */
int main(void) {

  /* Misc variables */
  DCPU_registers reg; // CPU registers states (at boot)

  /* Hardware initialisation */
  cli();
  led_setup();
  spi_setup(SPI_PRESCALER, SPI_MODE, SPI_BITS_ORDER);
  uart_setup(UART_BAUDRATE);
  DEBUG_STR("Main init", "UART ready");
  button_setup();
  buzzer_setup(BUZZER_FREQUENCY, BUZZER_DURATION);
  ram_setup();
  rom_setup();
  microvga_setup();
  microvga_enable();
  dcpu_register_init(&reg);
  DEBUG_STR("Main init", "done");
  sei();
  
  /* MicroVGA initialisation */
  _delay_ms(1000);         // MicroVGA boot time
  microvga_clear_screen(); // Clear screen and goto (0, 0)
  microvga_goto_cursor(0, 0);
  uart_puts_PSTR(PSTR("SkyWodd DCPU-16 hardware emulator")); // Screen test
  buzzer_beep();
  DEBUG_STR("Main init", "MicroVGA ready");
  
  /* Hardware self-test */
  DEBUG_STR("Main init", "self-test run");
  led_run_write(1); // Led test
  _delay_ms(250);
  led_run_write(0);
  led_cpu_write(1);
  _delay_ms(250);
  led_cpu_write(0);
  led_rom_write(1);
  _delay_ms(250);
  led_rom_write(0);
  led_ram_write(1);
  _delay_ms(250);
  led_ram_write(0);
  DEBUG_STR("Main init", "self-test done");
  
  /* Keyboard & MicroVGA api test */
  DEBUG_STR("Main init", "waiting for keypress");
  microvga_goto_cursor(0, 1);
  uart_puts_PSTR(PSTR("Press any key to boot ..."));
  keyboard_wait();
  uart_puts_PSTR(PSTR("Loading please wait ..."));
  dcpu_setup(reg);
  buzzer_beep();
  microvga_clear_screen();
  microvga_goto_cursor(0, 0);
  DEBUG_STR("Main init", "ready to run");
  
  /* Infinite loop */
  for(;;) {
  
    /* Handle pause */
    while(!button_get_state()); 
	
#ifdef SERIAL_DEBUG_SUPPORT
	/* Debug */
	dcpu_registers_dump();
#endif
	
	/* Fetch opcode from ROM */
    dcpu_step(); 
  }
  
}