BeagleBone Black에서 스위치 누르면 LED켜보기Beaglebone Black2015. 9. 6. 13:28
Table of Contents
반응형
비글본 블랙 P8의 2번과 8번에 LED를 연결하고 10번핀에는 스위치를 아래 회로처럼 연결했습니다.
스위치를 눌러서 Gpio2_4인 10번핀에 5V가 흐르게 되면 Gpio2_3인 10번핀의 값을 5V(?)로 변경해서 LED가 켜지도록 해보았습니다.
이미지 출처 : http://www.ctrlinux.com/blog/?p=87
AM335x Sitara™ Processors데이터 시트의 Memory Map에서 확인한 GPIO2 시작 주소는 0x481AC000이고 크기는 4K입니다.
GPIO를 입력으로 사용할지 출력으로 사용할지 결정하기 위해서 필요한 레지스터로 원하는 비트를 0으로 설정하면 출력상태가 되고 디폴트 값은 입력입니다. LED가 연결되어 있는 8번핀은 출력상태로 만들고 스위치가 연결되어 있는 10번핀은 입력상태로 만들었습니다.
GPIO 출력 핀의 값을 설정하기 위해서 사용되는 레지스터입니다. 1로 세팅하면 LED가 켜지고 0으로 세팅하면 LED가 꺼지게 됩니다.
10번핀에 5V가 흐르면 해당되는 레지스트의 비트가 1로 세팅됩니다.
전체 소스코드입니다.
- #include <stdlib.h>
- #include <stdio.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <sys/mman.h>
- #define GPIO2_BASE 0x481AC000
- #define GPIO_OE 0x134
- #define GPIO_OUT 0x13c
- #define GPIO_IN 0x138
- #define PIN8 (1<<3)
- #define PIN10 (1<<4)
- int main()
- {
- system("echo 5 > /sys/class/gpio/export");
- system("echo 65 > /sys/class/gpio/export");
- system("echo 105 > /sys/class/gpio/export");
- int fd = open( "/dev/mem", O_RDWR|O_SYNC );
- if ( fd < 0 ){
- printf( "can't open /dev/mem \n" );
- exit(-1);
- }
- char *gpio_memory_map = (char *)mmap( 0, 4096, PROT_READ|PROT_WRITE,
- MAP_SHARED, fd, GPIO2_BASE );
- if ( gpio_memory_map == MAP_FAILED )
- {
- printf( " Error : mmap \n" );
- exit(-1);
- }
- volatile unsigned int* gpio = (volatile unsigned int*)gpio_memory_map;
- gpio[GPIO_OE/4] &= (~PIN8);
- while(1){
- int pin = gpio[GPIO_IN/4] & PIN10;
- if ( pin != 0 )
- gpio[GPIO_OUT/4] |= PIN8;
- else
- gpio[GPIO_OUT/4] &= (~PIN8);
- sleep(1);
- }
- munmap( gpio_memory_map, 4096);
- return 0;
- }
반응형
'Beaglebone Black' 카테고리의 다른 글
BeagleBone Black에서 커널 모듈 프로그래밍 (6) | 2015.09.20 |
---|---|
BeagleBone Black의 SPI 활성화 하기 (1) | 2015.09.14 |
Beaglebone Black을 USB 연결 시 인터넷 사용하기 (0) | 2015.09.14 |
BeagleBone Black에서 LED 깜빡이도록 하기 ( mmap 사용 ) (6) | 2015.08.26 |
BeagleBone Black 처음 사용해보기 (0) | 2015.08.18 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
@webnautes :: 멈춤보단 천천히라도
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!