지난번 올렸던 C언어로 라즈베리파이 3의 LED제어 했던 것에 이어서 글을 올립니다. C언어로 Raspberry Pi 3의 GPIO 레지스터 접근하여 LED켜보기 https://webnautes.tistory.com/1915 이번엔 버튼을 하나 추가하여 버튼을 누른 동안에는 LED가 켜지고 손을 떼면 LED가 꺼지게 됩니다.. GPIO18번에 LED가 연결되어 있고 아래 사진처럼 GPIO17번에는 버튼을 연결하고 풀다운저항을 추가했습니다. GPFSEL1레지스터를 접근하여 핀을 입력으로 쓸지 출력으로 쓸지 결정해주어야 합니다. 입력의 경우에 디폴드값이 000이므로 아래 FSEL17는 건드릴 필요가 없습니다. LED를 켜야하므로 FSEL18은 001로 해주어 출력으로 해주어야 합니다. 핀으로부터 입력을 읽어..
복잡하게 디바이스 드라이버까지 작성하지 않고 간단하게 mmap을 사용하여 레지스터에 접근하여 LED를 제어해보려고 합니다. 핀번호 6번 그라운드와 핀번호 12번 GPIO18에 LED를 연결해주었습니다. BCM2835 데이터 시트에 따르면 LED를 켜고 끄는 데에는 다음 레지스터들을 사용하면 됩니다. 라즈베리파이3에선 BCM2837이지만 동일하게 동작했습니다. GPFSELx – GPIO핀을 Input 또는 Ouput으로 사용할지 결정. GPSETx – GPIO핀을 하이레벨로 만들어줌. Led가 켜진 상태. GPCLRx – GPIO핀을 로우 레벨로 만들어줌. Led가 꺼지는 상태. GPIO Base Address가 아래처럼 0x 7E20 0000으로 나와 있지만 BCM2835 데이터시트의 1.2.3 ARM ..
정리 다하고 나서 아는 분한테 물어보다가 ioremap을 사용하는 방법이 있다는 걸 알게되서 시간나는대로 ioremap도 사용해봐야 겠네요.. 참고 : http://sysprogs.com/VisualKernel/tutorials/raspberry/leddriver/ 1. LED연결 라즈베리 파이에서는 Broadcom BCM2835 SOC칩을 사용하고 있다. 이 칩에는 ARM1176JZFS 700Mhz프로세서, Videocore 4 GPU, 256메가 메모리를 포함하고 있다. 우선 보드에서 LED를 연결해서 사용할 GPIO의 번호를 정한 후, 데이터 시트에서 설정하기 위한 레지스터들을 찾으면 된다. GPIO 18번에 LED를 연결하여 1초 주기로 LED를 깜빡이게 하는 예제 코드를 작성해보려 한다. 라즈베..