Hi I am using a mini2440 kit and managed to run LED test program using ADS. Now I want to write a program which will turn on the led when a button has been pushed. I tried using the port G register configuration to detect the button but its not working . Can anyone please suggest me hoe to read the buttons Thanx
reading buttons in mini2440
are you using linux or winCE,
In linux, you can refer to button_test.c in the examples
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/select.h>
#include <sys/time.h>
#include <errno.h>
int main(void)
{
int buttons_fd;
char buttons[6] = {'0', '0', '0', '0', '0', '0'};
buttons_fd = open("/dev/buttons", 0);
if (buttons_fd < 0) {
perror("open device buttons");
exit(1);
}
for (;;) {
char current_buttons[6];
int count_of_changed_key;
int i;
if (read(buttons_fd, current_buttons, sizeof current_buttons) != sizeof
current_buttons) {
perror("read buttons:");
exit(1);
}
for (i = 0, count_of_changed_key = 0; i < sizeof buttons / sizeof
buttons[0]; i++) {
if (buttons[i] != current_buttons[i]) {
buttons[i] = current_buttons[i];
printf("%skey %d is %s", count_of_changed_key? ", ": "", i+1,
buttons[i] == '0' ? "up" : "down");
count_of_changed_key++;
}
}
if (count_of_changed_key) {
printf("\n");
}
}
close(buttons_fd);
return 0;
}
It's very easy!
Exaple (working):
#define rGPGDAT (*(volatile unsigned *)0x56000064) //Port G data
void Main(void)
{
Buzz(7000, 10);
Fill_Screen(20);
Set_Font(1,0xFFFF,20);
Print_String(70,50, "Knobs test example");
Set_Font(0,0xFFFF,20);
Again:
if( (rGPGDAT&(1<< 0)) == 0 ) {Print_String(70,80, "Key 1 pressed");
Buzz(1000,100);}
if( (rGPGDAT&(1<< 3)) == 0 ) {Print_String(70,110, "Key 2 pressed");
Buzz(2000,100);}
if( (rGPGDAT&(1<< 5)) == 0 ) {Print_String(70,140, "Key 3 pressed");
Buzz(3000,100);}
if( (rGPGDAT&(1<< 6)) == 0 ) {Print_String(70,170, "Key 4 pressed");
Buzz(4000,100);}
if( (rGPGDAT&(1<< 7)) == 0 ) {Print_String(70,200, "Key 5 pressed");
Buzz(5000,100);}
if( (rGPGDAT&(1<<11)) == 0 )
{ Print_String (70,230, "Key 6 pressed, Bye!");
Buzz(6000,100);
Delay(3000);
Exit(); }
Delay(100);
goto Again;
}

