while(1) { int dir, data; volatile int i; line = 0; dir = GPIOA_DIR; data = GPIOA_DATA; GPIOA_DIR = 0xff; GPIOA_DATA = 0x00; for (i=0; i<10; i++); GPIOA_DIR = dir; for (i=0; i<10; i++); GPIOA_DATA = data & dir; lcd_putsf(0, line++, "GPIOA: %2x DIR: %2x", GPIOA_DATA, GPIOA_DIR); lcd_putsf(0, line++, "GPIOB: %2x DIR: %2x", GPIOB_DATA, GPIOB_DIR); lcd_putsf(0, line++, "GPIOC: %2x DIR: %2x", GPIOC_DATA, GPIOC_DIR); lcd_putsf(0, line++, "GPIOD: %2x DIR: %2x", GPIOD_DATA, GPIOD_DIR); lcd_putsf(0, line++, "BVDD: %d VRTC: %d", adc_read(0)*5, adc_read(1)*5); lcd_putsf(0, line++, "UVDD: %d CHGI: %d", adc_read(2)*5, adc_read(3)*5); lcd_putsf(0, line++, "VBE1: %d VBE2: %d", adc_read(8), adc_read(9)); lcd_putsf(0, line++, "BTMP: %d CVDD: %d", adc_read(5)*25/10, adc_read(4)*25/10); lcd_putsf(0, line++, "DBOP: %4x DC15:%2x", dbop_debug(), ascodec_read(AS3514_DCDC15)); lcd_putsf(0, line++, "IENRD0:%2x CHG:%2x", ascodec_read(AS3514_IRQ_ENRD0), ascodec_read(AS3514_CHARGER)); lcd_update(); if (button_get_w_tmo(HZ/10) == (DEBUG_CANCEL|BUTTON_REL)) break; }