Example #1
0
//**************************************************************************
void eeprom_apply_settings(void)
{
  if(eeprom_read(contrast_address)!=Settings.contrast)       
	{
		display_off();
		delay_ms(200);
		display_on();
	}
	// -------------------------------------------------------------------
  if(eeprom_read(Display_reverse_address)!=Settings.Display_reverse)
	{
		display_off();
		delay_ms(200);
		display_on();
	}
	// -------------------------------------------------------------------
  if(eeprom_read(v4_target_pump_address)!=Settings.v4_target_pump)
	{
		reset_TIM_prescallers_and_Compare();	
	}
	// -------------------------------------------------------------------
	if(eeprom_read(Geiger_voltage_address) !=Settings.Geiger_voltage) 
 	{
		dac_reload(); //перезагрузить в ЦАП новое напряжение отсечки накачки
 	}
	// -------------------------------------------------------------------
	if(eeprom_read(LSI_freq_address)       !=Settings.LSI_freq)
  {
		if(Settings.LSI_freq != 0x00) // если запустился кварц, попытки сохранения игнорировать
		{
			eeprom_write(LSI_freq_address,Settings.LSI_freq);   NVIC_SystemReset();
		}
	}
}
Example #2
0
void display_init() {
	// Setting up ports.
	SYSCTL_RCGC2_R |= SYSCTL_DC4_GPIOB; // Enable GPIOB	
        //maybe delay2 here
        delay2(10000);
        SYSCTL_RCGC2_R |= SYSCTL_DC4_GPIOD; // Enable GPIOD
        delay2(10000);
	GPIO_PORTB_DIR_R |= 0x7f;
	GPIO_PORTD_DIR_R |= 0xe0;

	GPIO_PORTB_AFSEL_R &= 0xffffff80;
	GPIO_PORTD_AFSEL_R &= 0xffffff1f;	

	GPIO_PORTB_DEN_R |= 0x7f; // Enable port B		
    	GPIO_PORTD_DEN_R |= 0xe0; // Enable port D
        
    	// Function set commands separated by delay2s, as per cycle
    	//delay2(100);
        //SysCtldelay2(5*SysCtlClockGet()/(3*1000)); //5msec
        delay2(5000); //5msec
	function_set(0, 0);
        //SysCtldelay2(5*SysCtlClockGet()/(3*1000)); //5msec
	//delay2(10);
        delay2(5000); //5msec
	function_set(0, 0);
        //SysCtldelay2(2*SysCtlClockGet()/(3*10000)); //200usec
        delay2(200); //200usec
	//delay2(10);
	function_set(0, 0);
        function_set(1, 0); //two lines
        display_off();
        clear_display();
        entry_mode_set(1,0);
}
Example #3
0
int 
MAX72XX::putchar(char c)
{
  // Check for illegal characters
  if (c < 0) return (-1);

  // Check for special characters
  if (c < ' ') {

    // Carriage-return: move to start of line
    if (c == '\r') {
      set_cursor(0, m_y);
      return (c);
    }
    // Form-feed: clear the display or line-feed: clear line
    if ((c == '\f') || (c == '\n')) {
      display_clear();
      return (c);
    }

    // Horizontal tab
    if (c == '\t') {
      uint8_t x = m_x + m_tab - (m_x % m_tab);
      uint8_t y = m_y + (x >= WIDTH);
      set_cursor(x, y);
      return (c);
    }

    // Back-space: move cursor back one step (if possible)
    if (c == '\b') {
      set_cursor(m_x - 1, m_y);
      return (c);
    }

    // Alert: blink the backlight
    if (c == '\a') {
      display_off();
      delay(32);
      display_on();
      return (c);
    }
  }

  // Write character
  uint8_t segments;
  if (c == '.') {
    c = m_latest;
    segments = pgm_read_byte(m_font + c - ' ') | 0x80;
  }
  else {
    if (m_x == WIDTH) putchar('\n');
    m_x += 1;
    m_latest = c;
    segments = pgm_read_byte(m_font + c - ' ');
  }
  set((Register) m_x, segments);

  return (c & 0xff);
}
Example #4
0
void display_toggle(volatile display_t *d)
{
    cli();
    d->on = !d->on;
    if (!d->on)
        display_off(d);
    sei();
}
Example #5
0
void game_init(){
	int8u no;
	int8u count;
	
	display_off();
	pattern_fill(0x3800, 0, (BG_HIGH + BG_PAL1 + BG_TOP), 32 * 28 * 2);

	actors_clear();

	scene_wait = 0;
	player_create(0);
	alive_players = 1;
	smoke_wait = 0;
	scene_type = SCENE_GAME_PLAYING;

	vram_store(0x3000, fopen("bmp/font.ptn"), 0x0800);

	/*  load pattern */
	switch(stage){
	case 0:
		vram_store(0x2000, fopen("bmp/castle.ptn"), 0x1000);
		vram_store(0x0000, fopen("bmp/sp_castle.ptn"), 0x2000);
		break;
	case 1:
		vram_store(0x2000, fopen("bmp/summer.ptn"), 0x1000);
		vram_store(0x0000, fopen("bmp/sp_summer.ptn"), 0x2000);
		break;
	case 2:
		vram_store(0x2000, fopen("bmp/jungle.ptn"), 0x1000);
		vram_store(0x0000, fopen("bmp/sp_castle.ptn"), 0x2000);
		break;
	default:
		vram_store(0x2000, fopen("bmp/winter.ptn"), 0x1000);
		vram_store(0x0000, fopen("bmp/sp_castle.ptn"), 0x2000);
		break;
	}
	
	/* load palette */
	load_palette(stage, 0);

	/* set enemy */
	enemies_rotation_count = level << 3;
	for(count = stage; count != 0; count--){
		/* 8 charactors * 3 levels * stage 2 */
		enemies_rotation_count += 8 * 3;
	}
	enemies_rotation_limit = enemies_rotation_count + 8;

	enemies_count = ACTORS_INITINAL_COUNT;
	enemies_alive = 0;
	enemies_left = 6 + stage;
	for(count = 0; count < enemies_count; count++){
		no = actors_get_null();
		actor_create_random(no);
	}

	display_on();
}
/**
 * @brief   Driver Control
 * @details Unsupported control codes are ignored.
 * @note    The value parameter should always be typecast to (void *).
 * @note    There are some predefined and some specific to the low level driver.
 * @note    GDISP_CONTROL_POWER         - Takes a gdisp_powermode_t
 *          GDISP_CONTROL_ORIENTATION   - Takes a gdisp_orientation_t
 *          GDISP_CONTROL_BACKLIGHT 	- Takes an int from 0 to 100. For a driver
 *                                        that only supports off/on anything other
 *                                        than zero is on.
 *          GDISP_CONTROL_CONTRAST      - Takes an int from 0 to 100.
 *          GDISP_CONTROL_LLD           - Low level driver control constants start at
 *                                        this value.
 *
 * @param[in] what		What to do.
 * @param[in] value 	The value to use (always cast to a void *).
 *
 * @notapi
 */
void gdisp_lld_control(unsigned what, void *value) {
  switch(what) {
    case GDISP_CONTROL_POWER:
      if (GDISP.Powermode == (gdisp_powermode_t)value)
        return;

      switch((gdisp_powermode_t)value) {
        case powerOff:
          display_off();
          break;
        case powerSleep:
          display_off();
          break;
        case powerDeepSleep:
          display_off();
          break;
        case powerOn:
          display_on();
          break;
        default:
          return;
      }
      GDISP.Powermode = (gdisp_powermode_t)value;
      return;

    case GDISP_CONTROL_BACKLIGHT:
      set_backlight((uint8_t)(size_t)value);
      return;

    case GDISP_CONTROL_CONTRAST:
      if ((unsigned)value > 100) value = (void*)100;
      if (GDISP.Contrast == (uint8_t)((float)((size_t)value) * 63.0/100.0))
        return;
      set_contrast((uint8_t)((float)((size_t)value) * 63.0/100.0) );
      GDISP.Contrast = (unsigned)value;
      return;

    case GDISP_CONTROL_LLD_FLUSH:
      gdisp_lld_display();
      return;
  }
}
Example #7
0
/* ----------------------------------------------------------------------------------- */
void gameover_main(char *message){
	int8u c;

	display_off();

	palette_store( 0, fopen("bmp/title.pal"), 16);
	palette_store(16, fopen("bmp/sp_castle.pal"), 16);

	vram_store(0x0000, fopen("bmp/sp_castle.ptn"), 0x2000);
	vram_store(0x2000, fopen("bmp/title.ptn"), 0x1000);
	vram_store(0x3000, fopen("bmp/font.ptn"), 0x800);
	pattern_fill(0x3800, 0, BG_HIGH, 32 * 24 * 2);

	print_init();
	store_pattern_name_buffer(10);
	print(message, 10);
	store_pattern_name_buffer(9);

	print("1P SCORE XXXX0 ", 8);
	pattern_name_buffer[17 << 1] = VRAM_NUMBER + score_ints[3];
	pattern_name_buffer[18 << 1] = VRAM_NUMBER + score_ints[2];
	pattern_name_buffer[19 << 1] = VRAM_NUMBER + score_ints[1];
	pattern_name_buffer[20 << 1] = VRAM_NUMBER + score_ints[0];
	store_pattern_name_buffer(11);

	if(players_count == 2){
		print("2P SCORE XXXX0 ", 8);
		pattern_name_buffer[17 << 1] = VRAM_NUMBER + score_ints[7];
		pattern_name_buffer[18 << 1] = VRAM_NUMBER + score_ints[6];
		pattern_name_buffer[19 << 1] = VRAM_NUMBER + score_ints[5];
		pattern_name_buffer[20 << 1] = VRAM_NUMBER + score_ints[4];
		store_pattern_name_buffer(13);
	}

	actors_clear();
	scroll_y = 0;
	print_init();
	display_on();
	psg_set_bgm(fopen("sound/over.sn7"), FALSE);
	
	for(c = 6; c != 0; c--){
		for(frame_count = 0; frame_count < 60; frame_count++){
			sprites_clear();
			vsync_wait();
			sprites_store();
			scroll_store();
			psg_play();
		}
	}
	psg_stop();
}
Example #8
0
/* ----------------------------------------------------------------------------------- */
void basic_init_for_intro(){
	display_off();
	actors_clear();

	palette_store( 0, fopen("bmp/title.pal"), 16);
	palette_store(16, fopen("bmp/sp_castle.pal"), 16);
	vram_store(0x0000, fopen("bmp/sp_castle.ptn"), 0x2000);
	vram_store(0x2000, fopen("bmp/title.ptn"), 0x1800);
	vram_store(0x3800, fopen("map/intro.map"), (32 * 24 * 2));

	map_make_pointer(STAGE_COUNT, 0);
	frame_count = 0;
	print_init();
	display_on();
}
Example #9
0
void sleep_mode(FunctionalState sleep)
{ 
  if(Settings.Sleep_time>0 && !Power.USB_active)
  {
		Power.Pump_deny=ENABLE;
		if(Power.Pump_active)Pump_now(DISABLE);
		
		set_msi();
    if(sleep)
    {
			RTC_ITConfig(RTC_IT_WUT, DISABLE);

			Power.led_sleep_time=0;
			GPIO_SetBits(GPIOC,GPIO_Pin_13);// Выключаем подсветку  				

      display_off(); // выключить дисплей
 			GPIO_ResetBits(GPIOA,GPIO_Pin_7);// Фиксируем режим 1.8 вольта, с низким потреблением ножки

			delay_ms(1000); // подождать установки напряжения
			DataUpdate.Need_batt_voltage_update=ENABLE; // разрешить работу АЦП
			adc_check_event(); // запустить преобразование
			delay_ms(100); // подождать установки напряжения

			PWR_FastWakeUpCmd(DISABLE);
			PWR_UltraLowPowerCmd(ENABLE); 
			PWR_PVDCmd(DISABLE);
			RTC_ITConfig(RTC_IT_WUT, ENABLE);
    }
    else
    {
			RTC_ITConfig(RTC_IT_WUT, DISABLE);
			GPIO_SetBits(GPIOA,GPIO_Pin_7);// Переключаем в режим 3 вольта
			delay_ms(400); // подождать установки напряжения
      display_on(); // включить дисплей
			DataUpdate.Need_batt_voltage_update=ENABLE; // разрешить работу АЦП
			DataUpdate.Need_display_update=ENABLE;
			adc_check_event(); // запустить преобразование
			RTC_ITConfig(RTC_IT_WUT, ENABLE);
			sound_deactivate();
    }
		Power.Pump_deny=DISABLE;
  } 
}