void display_reset(void) { //reset CS_DISABLE(); RST_ENABLE(); _delay_ms(50); RST_DISABLE(); _delay_ms(50); //driving ability wr_cmd(0xEA, 0x0000); wr_cmd(0xEB, 0x0020); wr_cmd(0xEC, 0x000C); wr_cmd(0xED, 0x00C4); wr_cmd(0xE8, 0x0040); wr_cmd(0xE9, 0x0038); wr_cmd(0xF1, 0x0001); wr_cmd(0xF2, 0x0010); wr_cmd(0x27, 0x00A3); //power voltage wr_cmd(0x1B, 0x001B); wr_cmd(0x1A, 0x0001); wr_cmd(0x24, 0x002F); wr_cmd(0x25, 0x0057); //VCOM offset wr_cmd(0x23, 0x008D); //for flicker adjust //power on wr_cmd(0x18, 0x0036); wr_cmd(0x19, 0x0001); //start osc wr_cmd(0x01, 0x0000); //wakeup wr_cmd(0x1F, 0x0088); _delay_ms(5); wr_cmd(0x1F, 0x0080); _delay_ms(5); wr_cmd(0x1F, 0x0090); _delay_ms(5); wr_cmd(0x1F, 0x00D0); _delay_ms(5); //color selection wr_cmd(0x17, 0x0005); //0x0005=65k, 0x0006=262k //panel characteristic wr_cmd(0x36, 0x0000); //display on wr_cmd(0x28, 0x0038); _delay_ms(40); wr_cmd(0x28, 0x003C); //display options display_set_orientation(0); }
uint8_t REDFLY::init(uint32_t br, uint8_t pwr) { uint8_t ret=0xFF, i; uint32_t timeout; //init pins #ifdef CS_PIN pinMode(CS_PIN, OUTPUT); digitalWriteFast(CS_PIN, HIGH); //deselect #endif #ifdef RST_PIN pinMode(RST_PIN, OUTPUT); digitalWriteFast(RST_PIN, LOW); //reset on #endif #ifdef TX_PIN pinMode(TX_PIN, OUTPUT); digitalWriteFast(TX_PIN, HIGH); #endif #ifdef RX_PIN pinMode(RX_PIN, INPUT); digitalWriteFast(RX_PIN, HIGH); //pull-up on #endif //reset vars memset(ipaddr, 0, sizeof(ipaddr)); memset(buffer, 0, sizeof(buffer)); //set serial port config baudrate = br; setbaudrate(br); //enable module communication enable(); //reset module delay_10ms(2); //wait 20ms RST_ENABLE(); delay_10ms(30); //wait 300ms RST_DISABLE() //auto baud rate detection delay_10ms(10); //wait 100ms for(i=4; i!=0; i--) //try 4 times { write(0x1C); //transmit 0x1C for(timeout=F_CPU/64UL; timeout!=0; timeout--) //wait for response { if(available()) { if(read() == 0x55) //wait for 0x55 { write(0x55); //transmit 0x55 delay_10ms(10); //wait 100ms //skip firmware upgrade question at power on write('n'); write('\n'); ret = 0xFE; i = 1; //break 1st for loop break; //break 2nd for loop } } } } delay_10ms(20); //wait 200ms for booting //get firmware version and set config // if(ret == 0xFE) // { for(i=3; i!=0; i--) //try 3 times { flush(); if(cmd(PSTR(CMD_FWVERSION)) == 0) { //cmd(PSTR(CMD_RESET)); //soft reset cmd(PSTR(CMD_BAND BAND24)); cmd(PSTR(CMD_INIT)); tx_power = pwr; ret = 0; break; } delay_10ms(10); } // } if(ret) { disable(); } return ret; }