
도와주세요!!
글 수 15,339
2002.08.21 13:43:17 (*.227.237.134)
8024
안녕하세요..
세미나 잘 받았습니다..
임베디드를 공부하면서..
어디서부터 해야할지....한숨만 쉬고 있었는데..
세미나 듣고..
이제 조금은 알거 같습니다..
세미나 갔다와서..이거하는 재미에 살고있습니다...^^
세미나 감사 했구요..
지금 GPIO를 공부하고 있는데요..
이지보드를 조금 일찍 알았더라면..이지보드 사는건데..
다른 보드 구입하고 며칠후에 이지보드를 알았거든요..^^
그래서 울 교수님께 적극 추천 했지용..
서론이 너무 길었네요.....지송..
아래 소스로..2line LCD를 제어하고있거든요..
근데요...자꾸..
"open() failed" 메시지가 나오거든요..
그래서 타겟보드에서..dev/gpio를 찾아 봤는데
없더라구요..
gpio라는 파일이 원래 dev/ 에 있어야 하는건지..??
아래 소스 한번 봐주세용..^^
====================================================
#include
#include
#include
#include
#include
#include
#include "gpio.h"
int putlcd(int dev, char byte_data, int reg_sel );
int putled(int dev, char byte_data );
int main(int argc, char **argv)
{
int dev,pre_data,i,j;
int menu;
int data ;
int buff;
char ci ;
char wdata[4]={0,0,0,0};
printf("
press the push button");
dev=open("/dev/gpio",O_WRONLY);
if( dev >=0 )
{
data = 0 ;
ci = 0x30 ;
/* init LCD module */
putlcd(dev,0x38,0); /* 0 : command, 1: data */
for(i=0;i<0x100;i++); // initial delay
putlcd(dev,0x38,0); /* 0 : command, 1: data */
for(i=0;i<0x100;i++); // initial delay
putlcd(dev,0x38,0); /* 0 : command, 1: data */
for(i=0;i<0x100;i++); // initial delay
putlcd(dev,0x0c,0); /* 0 : command, 1: data */
for(i=0;i<0x100;i++); // initial delay
putlcd(dev,0x01,0); /* 0 : command, 1: data */
for(i=0;i<0x100;i++); // initial delay
putlcd(dev,0x80,0); /* 0 : command, 1: data */
for(i=0;i<0x100;i++); // initial delay
for(j=0;j<0x10000;j++)
{
if(++ci>0x70) ci=0x30 ;
putlcd(dev,ci,1) ;
putled(dev,ci) ;
for(i=0;i<0x100000;i++);
}
close( dev );
}
else
{
fprintf(stderr,"open() failed
");
exit(-1);
}
return 0;
}
int putlcd(int dev, char byte_data, int reg_sel )
{
char wdata[4]={0,0,0,0};
int i;
wdata[0]= 0 ;
if(reg_sel)
wdata[1]= 0x18 ;
else
wdata[1]= 0x08 ;
wdata[2]= byte_data ;
wdata[3]= 0x00 ;
write( dev, (char * )wdata, 4 );
if(reg_sel) // up LCD EN
wdata[1]= 0x10 ;
else
wdata[1]= 0x00 ;
wdata[2]= byte_data ;
wdata[3]= 0x00 ;
write( dev, (char * )wdata, 4 );
wdata[1]= 0x08 ; // up LCD EN
wdata[2]= byte_data ;
wdata[3]= 0x00 ;
write( dev, (char * )wdata, 4 );
return(0);
}
int putled(int dev, char byte_data )
{
char wdata[4]={0,0,0,0};
int i;
wdata[0]= 0 ;
wdata[1]= 0x08 ;
wdata[2]= byte_data ;
wdata[3]= 0x00 ;
write( dev, (char * )wdata, 4 );
wdata[0]= 0 ;
wdata[1]= 0x08 ;
wdata[2]= byte_data ;
wdata[3]= 0x02 ;
write( dev, (char * )wdata, 4 );
wdata[0]= 0 ;
wdata[1]= 0x08 ;
wdata[2]= byte_data ;
wdata[3]= 0x00 ;
write( dev, (char * )wdata, 4 );
return(0);
}
===============================================================
그럼 수고하시구요..........
멀리 전라도 광주에서..hard_angel 이 였습니다.
세미나 잘 받았습니다..
임베디드를 공부하면서..
어디서부터 해야할지....한숨만 쉬고 있었는데..
세미나 듣고..
이제 조금은 알거 같습니다..
세미나 갔다와서..이거하는 재미에 살고있습니다...^^
세미나 감사 했구요..
지금 GPIO를 공부하고 있는데요..
이지보드를 조금 일찍 알았더라면..이지보드 사는건데..
다른 보드 구입하고 며칠후에 이지보드를 알았거든요..^^
그래서 울 교수님께 적극 추천 했지용..
서론이 너무 길었네요.....지송..
아래 소스로..2line LCD를 제어하고있거든요..
근데요...자꾸..
"open() failed" 메시지가 나오거든요..
그래서 타겟보드에서..dev/gpio를 찾아 봤는데
없더라구요..
gpio라는 파일이 원래 dev/ 에 있어야 하는건지..??
아래 소스 한번 봐주세용..^^
====================================================
#include
#include
#include
#include
#include
#include
#include "gpio.h"
int putlcd(int dev, char byte_data, int reg_sel );
int putled(int dev, char byte_data );
int main(int argc, char **argv)
{
int dev,pre_data,i,j;
int menu;
int data ;
int buff;
char ci ;
char wdata[4]={0,0,0,0};
printf("
press the push button");
dev=open("/dev/gpio",O_WRONLY);
if( dev >=0 )
{
data = 0 ;
ci = 0x30 ;
/* init LCD module */
putlcd(dev,0x38,0); /* 0 : command, 1: data */
for(i=0;i<0x100;i++); // initial delay
putlcd(dev,0x38,0); /* 0 : command, 1: data */
for(i=0;i<0x100;i++); // initial delay
putlcd(dev,0x38,0); /* 0 : command, 1: data */
for(i=0;i<0x100;i++); // initial delay
putlcd(dev,0x0c,0); /* 0 : command, 1: data */
for(i=0;i<0x100;i++); // initial delay
putlcd(dev,0x01,0); /* 0 : command, 1: data */
for(i=0;i<0x100;i++); // initial delay
putlcd(dev,0x80,0); /* 0 : command, 1: data */
for(i=0;i<0x100;i++); // initial delay
for(j=0;j<0x10000;j++)
{
if(++ci>0x70) ci=0x30 ;
putlcd(dev,ci,1) ;
putled(dev,ci) ;
for(i=0;i<0x100000;i++);
}
close( dev );
}
else
{
fprintf(stderr,"open() failed
");
exit(-1);
}
return 0;
}
int putlcd(int dev, char byte_data, int reg_sel )
{
char wdata[4]={0,0,0,0};
int i;
wdata[0]= 0 ;
if(reg_sel)
wdata[1]= 0x18 ;
else
wdata[1]= 0x08 ;
wdata[2]= byte_data ;
wdata[3]= 0x00 ;
write( dev, (char * )wdata, 4 );
if(reg_sel) // up LCD EN
wdata[1]= 0x10 ;
else
wdata[1]= 0x00 ;
wdata[2]= byte_data ;
wdata[3]= 0x00 ;
write( dev, (char * )wdata, 4 );
wdata[1]= 0x08 ; // up LCD EN
wdata[2]= byte_data ;
wdata[3]= 0x00 ;
write( dev, (char * )wdata, 4 );
return(0);
}
int putled(int dev, char byte_data )
{
char wdata[4]={0,0,0,0};
int i;
wdata[0]= 0 ;
wdata[1]= 0x08 ;
wdata[2]= byte_data ;
wdata[3]= 0x00 ;
write( dev, (char * )wdata, 4 );
wdata[0]= 0 ;
wdata[1]= 0x08 ;
wdata[2]= byte_data ;
wdata[3]= 0x02 ;
write( dev, (char * )wdata, 4 );
wdata[0]= 0 ;
wdata[1]= 0x08 ;
wdata[2]= byte_data ;
wdata[3]= 0x00 ;
write( dev, (char * )wdata, 4 );
return(0);
}
===============================================================
그럼 수고하시구요..........
멀리 전라도 광주에서..hard_angel 이 였습니다.