도와주세요!!
글 수 15,339
2006.01.16 07:22:09 (*.234.32.138)
6602
안녕하세요. 질문이 있습니다.
ez-x5보드에 TACT 스위치가 32개가 74_16C245를 통해서 연결되어 있습니다.
아래 소스는 간단하게 키 스캔한걸 1초에 한번씩 시리얼로 내보내는건데요.
아래 소스는 short 로 선언이 되어있으니깐 당연히 키 16개만 읽혀지는데요.
그래서 32개 키 값을 다 읽기 위해 2번 처럼(long) 바꿨는데요.
역시 16개만 읽혀지네요.
별짓을 여러가지고 바꿀거 바꿔봤는데요 결과는 똑같구요.
간단한 mmap 함수 사용이니깐 특별할것 없는것 같은데 안되네요.
제가 모르는 부분이 있으시면 지적해주세요.
/////////////////////////////////////////////// ------ 1 번
#define ADDR_PUSHBUTTON 0x14000000
int key_scan(void)
{
unsigned short *button;
button = (volatile short *) mmap(NULL,4,PROT_READ,MAP_SHARED,fd,ADDR_PUSHBUTTON);
if((int)button<0){button=NULL; printf("mmap errorn"); return -1; }
while(1)
{
printf("key_value : %08xn",*button);
sleep(1);
}
return 0;
}
/////////////////////////////////////// ------------- 2 번
#define ADDR_PUSHBUTTON 0x14000000
int key_scan(void)
{
unsigned long *button;
button = (volatile long *) mmap(NULL,8,PROT_READ,MAP_SHARED,fd,ADDR_PUSHBUTTON);
if((int)button<0){button=NULL; printf("mmap errorn"); return -1; }
while(1)
{
printf("key_value : %08xn",*button);
sleep(1);
}
return 0;
}
원래 16bit 만 읽혀지는건지 아니면 커널에서 16bit 만 access 할 수있게 설정을 되있는 부분이 있다는지
아니면 제가 뭘 잘못하고 있는지 알고 싶습니다.
ez-x5보드에 TACT 스위치가 32개가 74_16C245를 통해서 연결되어 있습니다.
아래 소스는 간단하게 키 스캔한걸 1초에 한번씩 시리얼로 내보내는건데요.
아래 소스는 short 로 선언이 되어있으니깐 당연히 키 16개만 읽혀지는데요.
그래서 32개 키 값을 다 읽기 위해 2번 처럼(long) 바꿨는데요.
역시 16개만 읽혀지네요.
별짓을 여러가지고 바꿀거 바꿔봤는데요 결과는 똑같구요.
간단한 mmap 함수 사용이니깐 특별할것 없는것 같은데 안되네요.
제가 모르는 부분이 있으시면 지적해주세요.
/////////////////////////////////////////////// ------ 1 번
#define ADDR_PUSHBUTTON 0x14000000
int key_scan(void)
{
unsigned short *button;
button = (volatile short *) mmap(NULL,4,PROT_READ,MAP_SHARED,fd,ADDR_PUSHBUTTON);
if((int)button<0){button=NULL; printf("mmap errorn"); return -1; }
while(1)
{
printf("key_value : %08xn",*button);
sleep(1);
}
return 0;
}
/////////////////////////////////////// ------------- 2 번
#define ADDR_PUSHBUTTON 0x14000000
int key_scan(void)
{
unsigned long *button;
button = (volatile long *) mmap(NULL,8,PROT_READ,MAP_SHARED,fd,ADDR_PUSHBUTTON);
if((int)button<0){button=NULL; printf("mmap errorn"); return -1; }
while(1)
{
printf("key_value : %08xn",*button);
sleep(1);
}
return 0;
}
원래 16bit 만 읽혀지는건지 아니면 커널에서 16bit 만 access 할 수있게 설정을 되있는 부분이 있다는지
아니면 제가 뭘 잘못하고 있는지 알고 싶습니다.