*타이밍도 읽기
순서대로 코딩하도록 합니다.
우선 파형 분석
1. RS
시작값, 입력값, 마무리값 모두 H,L둘다 될 수 있다. (상관이 없다)
2. R/W
일단 쓰기 경우 이기때문에 시작값 마무리값은 H,L둘다 될수 있지만
쓰기동작이 되는 구간에서는 L를 취해야 된다.
3. E
시작 값은 L를 취해야 하며 이후 동작시 H값 그리고 종료시점에서 다시 L값
4. D0 ~ D7
1번과 동일함.
여기서 중요한것은 시간지연을 얼마나 주느냐 인데
시간지연 값은 표의 Value값을 기준으로 기준값을 만족시켜주면 된다.
(최소값 혹은 최대값이 만족되면 그만!, 단 이후 최적화는 필요함)
1. 최초값을 설정합니다. RS, R/W, E, DB0~DB7의 초기값을 봅니다.
RS는 H/L 상관없음. R/W는 H/L 상관없음, E는 최초값 L, DB값은 H/L 상관없음
고로 초기값을 모두 0을 투척
-> PIO_CODR = LCD_ALL (LCD_ALL은 모든 PA핀을 define)
2. E (enable)의 값이 High가 되었다.
-> PIO_SODR = LCD_EN
3. tSA만큼 딜레이를 준다.
-> for(i=0;i<100000;++i)
일단 대충 딜레이를 준다 (기준치를 만족할 만큼의 값) 이후에 최적화
4. Data값을 준다
-> PIO_SODR = 0x0200;
5. PWEH만큼 딜레이를 준다.
-> for(i=0;i<100000;++i)
6. E (enable)의 값을 Low로 만들어준다
-> PIO_CODR = LCD_EN
7. 마지막으로 딜레이를 준다
-> for(i=0;i<100000;++i)
타이밍도의 순서대로 소스를 코딩한다.
약간의 세련된 define을 붙여서
volatile unsigned int iNum;
PIO_CODR = LCD_ALL; //start = all low
PIO_SODR = LCD_EN; //two step = EN High
EMB_delay(100000); //three step = t_AS delay (min 40ns)
//PIO_SODR = 0x00010000; //DA0 = HIGH
PIO_SODR = LCD_DB(0x01); //four step = DATA Exchange
EMB_delay(100000); //five step = PW_EH delay (min 220ns)
PIO_CODR = LCD_EN; //six step = EN Low
EMB_delay(100000); //five step = PW_EH delay
return ;
이런코드를 완성할 수 있다.
Data값 즉 instruction은 LCD스펙을 참조하여 추가하시면 되겠다.
우선 하나의 함수를 완성하였고 이후 LCD_DB(x) 메크로 함수를 이용해서
명령어를 사용하면 된다.
--------------------------------------------------------------------------------------------------------------------------------
추가해서
타이밍도 보는방법을 더 추가하면 - 퍼왔습니다.
이미 Clock에서 살펴 보았듯이, Timing을 제대로 확인하기 위해서는 스위칭 특성을 이해해야 하는데, 게이트에서는 입력신호가 들어온 후 출력신호가 나오기까지 약간의 시간이 걸립니다.
그 시간을 전달 지연시간이라고 부릅니다. 그리고 전달 지연 시간에 관한 전기적 특성을 스위칭 특성이라고 부릅니다.
'코스웨어 > 12년 내장형하드웨어' 카테고리의 다른 글
ARM (0) | 2012.07.18 |
---|---|
2012. 07.17 일자 API 수업 정리자료 입니다. (과제 포함) (0) | 2012.07.18 |
문자열 함수 정리 (0) | 2012.07.18 |
소스 인사이트 단축키 및 한글입력팁 (1) | 2012.07.18 |
프로그램의 실행과 오류 정리 (0) | 2012.07.18 |
ARM LED 설정하기. (0) | 2012.07.18 |
매크로 함수와 #undef ->> 이동혁 (0) | 2012.07.18 |
캐릭터LCD (1) | 2012.07.18 |