안녕하세요..

일반적으로 GPDR과 GPAF를 먼저 설정을 해 주소 GPCR 또는 GPSR을 제어하시면됩니다..

아래의 소스를 다음과 같이 수정하시고 해 보세요..


#include <asm/hardware.h>

ssize_t gpio_write(struct file *file, const char *buffer, size_t length, loff_t *offset)
{
        const unsigned char *tmp = buffer;
        unsigned char c=0;

        get_user(c, tmp);

        set_GPIO_mode( 16 | GPIO_OUT );

        GPSR(16)     = GPIO_bit(16);
        
        msleep(1000);

        GPCR(16)     = GPIO_bit(16);
  
        return length;
}

위와 같이 사용하시든지 아니면, 홈페이지의 자료실 >> EZ-X5 >> sample ( EZ-X5 보드에서 동작되는 샘플 디바이스 드라이버 및 TEST 응용프로그램 [DIO , GPIO , Serial])
를 다운받아서 참고하셔도 됩니다.

그럼 수고하세요.



>
>GPIO 16번 핀을 output으로 사용하려고 할 때에, (부가기능은 안 씁니다.)
>평소에는 high신호가 나오고 CPU 쪽에서 출력으로 나가는 신호가 falling edge 일 때만 동작하도록 쓰고 싶은데 밑에 제가 한거처럼 실행시켜보았거든요?
>근데 안되는데 뭐가 잘 못 된건지 혹시 아시면 알려주세요...
>
>
>(( ADC랑 CPU랑 연결시에 Start of conversion 신호를 위해서 사용하려고 합니다... ))
>
>
>
>
>
>ssize_t gpio_write(struct file *file, const char *buffer, size_t length, loff_t *offset)
>{
>        const unsigned char *tmp = buffer;
>        unsigned char c=0;
>        get_user(c, tmp);
>
>        GPSR0        |= 1 << 16;
>        GPCR0        &= 1 << 16;        
>                GPDR0       |= 1 << 16;                
>                GAFR0_U   &= ~(1 << 16);  
>        GRER0       &= ~(1 << 16);
>               GFER0       |= 1<<16;         
>        GEDR0       |= 1<<16;
>
>        printk("GPIO 16 Outputn");
>        
>        return length;
>}
>