//************************************************************************** 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(); } } }
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); }
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); }
void display_toggle(volatile display_t *d) { cli(); d->on = !d->on; if (!d->on) display_off(d); sei(); }
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; } }
/* ----------------------------------------------------------------------------------- */ 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(); }
/* ----------------------------------------------------------------------------------- */ 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(); }
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; } }