Q&A Home > 고객지원 > 기술지원 > Q&A
EMPOS III - S6410(7segment) 관련 문의입니다.
카테고리Embedded System
작성자김진후 아이피203.237.179.148
작성일11-11-28 21:40 조회수1872
파일
디바이스 드라이버 수정 중인데 (segment.c)

ssize_t segment_write(struct file *inode, const char *gdata, size_t length, loff_t *off_what)
{
unsigned char data[6];
unsigned char digit[6]={0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
unsigned int i,j,ret;
unsigned char num[7];
unsigned char x;
unsigned int y,z;
unsigned int display=0;
unsigned int count=0,temp1,temp2;
 
// 사용자 메모리 gdata를 커널 메모리 num으로 n만큼 복사 
ret=copy_from_user(&num,gdata,6);
for(z=0;z<6;z++){
if(num[5-z]=='a'){
y=0xa;
}
else if(num[5-z]=='b'){
 
y=0xb;
}
else if(num[5-z]=='c'){
y=0xc;
}
else if(num[5-z]=='d'){
y=0xd;}
else if(num[5-z]=='e'){
y=0xe;}
else if(num[5-z]=='f'){
y=0xf;}
data[z]=Getsegmentcode(y);
}
// if(num!=0) { // num이 0이 아닐때
 //while(display<300) {
/*data[5]=Getsegmentcode(count/100000);
temp1=count%100000;
data[4]=Getsegmentcode(temp1/10000);
temp2=temp1%10000;
data[3]=Getsegmentcode(temp2/1000);
temp1=temp2%1000;
data[2]=Getsegmentcode(temp1/100);
temp2=temp1%100;
data[1]=Getsegmentcode(temp2/10);
data[0]=Getsegmentcode(temp2%10);*/
//  data[5]=Getsegmentcode(y);
//  data[4]=Getsegmentcode(0xa);
//  data[3]=Getsegmentcode(0xa);
//  data[2]=Getsegmentcode(0xb);
//  data[1]=Getsegmentcode(0xb);
//  data[0]=Getsegmentcode(0xc);
//  
 
for(j=0;j<17;j++) {
for(i=0;i<6;i++) {
*segment_grid = digit[i];
*segment_data = data[i];
mdelay(1);
}
}
// count++
//display++;
 //}
//*segment_grid = ~digit[0];
//*segment_data = 0;
 
return length;
}

이렇게 수정을 했는데 
7세그먼트 6개중에 그리드가 가리키고 세그먼트 데이터에 초기화 되어있는 슬롯에만 불이 들어옵니다.
제가 의도하는 바는 슬롯 여러개가 동시에 들어오게 하고 싶은데 어떻게 해야 할까요 ?

예를들어 1 을 입력하면 grid[0]에 1이 들어오고 
2를 그상태에서 추가로 입력하면 grid[1]에 1이 들어오고 grid[0]에는 2가 들어오는 식입니다.
어떻게 2개 이상의 세그먼트를 컨트롤 할 수 있을까요
 


다음글 [re]오늘 아침 전화로 문의 했던 사람입니다.
이전글 [re]EMPOS III - S6410(7segment) 관련 문의입니다.

댓글 등록은 로그인 하신후 이용하실 수 있습니다.