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;
}