// filename button.c // connect a button to DIO pin 1 and ground // blinks green and red led on the ts-7200 when button is pressed // // compile arm-linux-gcc -o button button.c // #include #include #include #include #include #include int main(int argc, char **argv) { volatile unsigned int *PEDR, *PEDDR, *PBDR, *PBDDR, *GPIOBDB; int i; unsigned char state; unsigned char *start; int fd = open("/dev/mem", O_RDWR | O_SYNC); start = mmap(0, getpagesize(), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0x80840000); PBDR = (unsigned int *)(start + 0x04); // port b PBDDR = (unsigned int *)(start + 0x14); // port b direction register PEDR = (unsigned int *)(start + 0x20); // port e data PEDDR = (unsigned int *)(start + 0x24); // port e direction register GPIOBDB = (unsigned int *)(start + 0xC4); // debounce on port b *PBDDR = 0xf0; // upper nibble output, lower nibble input *PEDDR = 0xff; // all output (just 2 bits) *GPIOBDB = 0x01; // enable debounce on bit 0 state = *PBDR; // read initial state while (state & 0x01) // wait until button goes low { state = *PBDR; // remember bit 0 is pulled up with 4.7k ohm } // blink 5 times, sleep 1 second so it's visible for (i = 0; i < 5; i++) { *PEDR = 0xff; sleep(1); *PEDR = 0x00; sleep(1); } close(fd); return 0; }