일반

IAR compiler for avr 관련 코딩 질문요.~~!(급질)

by 러빙유 posted Jan 03, 2008
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

위로 아래로 댓글로 가기 인쇄 쓰기 목록
?
  • WhiteAT 2008.01.03 21:45
    0x8400 이면 relay output address 입니다.
    #define relay = (*(extern volatile unsigned char *)0x8400)
    relay = 0x01;
    CLEARBIT(PORTG,0) // /wr active
    하면 첫번째 relay output 이 나가게 됩니다.
     relay = 0x01;  // 이 명령어 만으로도 가능합니다.
    AVR Writing 타이밍을 보면. Write 시에   /WR 신호를 LOW 로 만들고, 데이터를 내보냅니다.

    즉, 
    /WR : LOW
    A15 : HIGH
    A14 ,A13,A12 : LOW
    A11 : LOW
    A10 : HIGH
    A9,.............A0 : LOW 신호를 발생하게 됩니다.
    이 신호들을 적절히 맵핑 시켜 래치 신호를 만들어 사용하면 되는 거구요.



    입력은 위와 마찬가지이구요..(/WR 대신 /RD 신호를 사용하는 것이 차이점입니다.)
    해보면 아시겠지만, C 언어보다는 하드웨어 꾸미는게 더 힘든 일입니다.


    자세한 것은 아래를 참조하시구요..~~.
    http://whiteat.com/zbxe/?document_srl=297 
  • 러빙유 2008.01.04 09:19
    일단, 답변 감사드리구요. 무슨 말씀인지는 알겠는데,.. 제가 감을 정말 못잡겠습니다.

    말씀하신대로라면, io mapping address 가 정의되어 있는 헤더파일 같은 것을 살펴보고 해야 되는 것인지요?.

    그리고, 만약 말씀하신 대로라면  /wr:Low  A15~A0 : 0x8401 이면, 0x01 출력이 나가는 것이잖습니까?  그렇다면, 제가 원하는 

     main() 문에서 Dout[0] = 1;  이라는 문장을 수행하기 위해서는 또 다른 루틴이 필요하다는 것인지요...?.

  • 먼저 회로도를 보셔야 할거 같습니다..(제가 작업했던 회로도입니다.)

    이 회로로 구성이 되어 있다면, 아래와 같이 선언되어야 합니다.
    #define GLCD_DATA   (*(volatile unsigned char *)0x2000)
    #define GLCD_CONTROL  (*(volatile unsigned char *)0x2100)

    #define MONITOR_LED   (*(volatile unsigned char *)0x2300)
    #define MONITOR_KEYINPUT (*(volatile unsigned char *)0x2400)

    MONITOR_LED = 0x11;// 이라고 했을 경우
    A15 : LOW
    A14 : LOW
    A13 : HIGH
    A12.. A11: don't care
    A10 : HIGH
    A9, A8 : LOW
    /WR : LOW

    신호가 발생하게 되어 
    74HC138 에서   /Y4 가 LOW, /WR이 LOW 가 되어
    U205D (11,12,13번핀)에서 LOW 가 발생되는 겁니다.
    이제 이 신호를 필요한 곳에 래치 신호로 사용하면 되겠죠?

  • 러빙유 2008.01.04 18:30

    아. 그렇군요. 알겠습니다. 감사.