본문 바로가기

임베디드129

라즈베리파이 test_gpio4_irq (button+led) 인터럽트 #include #include #include #include #include #include #include #include #include #include //mdelay(10) ->ms, udelay(1) ->us #include //커널에서 제공하는 gpio 함수 #include #define __BCM_2711__ /* BCM2837의 I/O Peripherals 주소*/ #if defined(__BCM_2837__) #define BCM_IO_BASE 0x3F000000 #elif defined (__BCM_2711__) #define BCM_IO_BASE 0xFE000000 #elif defined(__BCM_2835__) #define BCM_IO_BASE 0x20000000 #endif.. 2021. 1. 7.
라즈베리파이 test_gpio3_func.c 인터럽트 sudo insmod test_gpio3.o sudo mknod /dev/gpio_led c 256 0 sudo chmod 666 /dev/gpio_led #include #include #include #include #include #include #include #include #include #include //mdelay(10) ->ms, udelay(1) ->us #include //커널에서 제공하는 gpio 함수 #define __BCM_2711__ /* BCM2837의 I/O Peripherals 주소*/ #if defined(__BCM_2837__) #define BCM_IO_BASE 0x3F000000 #elif defined (__BCM_2711__) #define BCM_IO_BAS.. 2021. 1. 7.
FATAL: modpost: GPL-incompatible module 에러 MODULE_LICENSE("GPL v2"); 라이센스 문제. 기존 코드는 MODULE_LICENSE("RACK"); 이었음 .. 커널 도움 받아 gpio 제어하기때문에 라이센스를 저렇게 수정 해줘야 된다 2021. 1. 7.
고속pwm으로 똑같이 동작하게 2021. 1. 6.
atmega128 timer/counter0 normal LED깜빡이기 /* * Ko_Timer_Counter.c * * Created: 2021-01-04 오후 5:29:39 * Author : User */ #define F_CPU 16000000UL #include #include #define LED PB7 volatile unsigned long timer0; //오버플로마다 1씩 증가될 변수 ISR(TIMER0_OVF_vect) { timer0++; // 오버플로마다 1씩 증가 if(timer0 % 100 == 0){ PORTB ^= 1 2021. 1. 6.
pwm duty cycle youtu.be/yo5asigXynk 2021. 1. 6.
라즈베리파이 gpio _led2 (led + buzzer) 1 누르면 LED 켜지고 부저 한번 울림 (led off 에서 on 상태로 될때만) 2 누르면 LED 꺼지고 부저 두번 울림 (led on 에서 off 상태로 될때만) 3 누르면 프로그램 종료되고 부저 세번 울림 (led는 무조건 off됨) #include #include #include #include #include #include #include #include #include #include //mdelay(10) ->ms, udelay(1) ->us #define __BCM_2711__ /* BCM2837의 I/O Peripherals 주소*/ #if defined(__BCM_2837__) #define BCM_IO_BASE 0x3F000000 #elif defined (__BCM_2711__).. 2021. 1. 4.
atmega128A datasheet 데이터시트 2021. 1. 4.
라즈베리파이4(bcm2711) 데이터시트 / 라즈베리파이3(bcm2835) 데이터시트 raspberrypi datasheet 2021. 1. 4.
오픈소스 HW , MCU , 임베디드, 펌웨어 2021. 1. 3.
04_HBridgeCircuit.c DC 모터 /* * 04_HBridgeCircuit.c * * Created: 2020-12-29 오전 10:54:04 * Author : User */ #define F_CPU 16000000UL #include #include #define PRESSED1 #define RELEASED0 #define DEBOUNCE_MS300 #define ACPB6 #defineBDPB7 #define MOTOR_PORTPORTB #define MOTOR_DDRDDRB #define CLEAR(MOTOR_PORT & 0x3F) #define MOTOR_STOP(1 2020. 12. 29.
atmega328p 헤더파일 io.h 파일 로 가면 atmega328은 iom328p.h 파일을 참조 하라고 한다. 2020. 12. 28.
ATmega128 timer / counter 타이머: 내부 클럭을 셈 (16Mhz) -> 일정시간 간격의 펄스를 만들어 내거나 일정시간 경과후에 인터럽트 발생시킴 (인터럽트 발생시켜 특정장치 제어). 이벤트에 대해 시간을 유추할 수 있음 카운터: MCU 외부에서 입력되는 클럭을 세는 장치. 이벤트에 대해 시간을 유추할 수 없음 타이머와 카운터는 같은 하드웨어를 사용하는 장치임. 그래서 항상 같이 따라다님.. 8bits : 0~255 . 256이 되면 overflow TCNT : Timer Counter 수를세는 레지스터 TCCR : Timer Counter Control Registor 타이머 카운터 제어 레지스터 OCR : Output Compare Registor (E)TIMSK : (Extended) Timer Interrupt Mask re.. 2020. 12. 27.
라즈베리파이 gpio _led 1. test_gpio1.c (우분투) #include #include #include #include #include #include #include #include #include #include //mdelay(10) ->ms, udelay(1) ->us #define __BCM_2711__ /* BCM2837의 I/O Peripherals 주소*/ #if defined(__BCM_2837__) #define BCM_IO_BASE 0x3F000000 #elif defined (__BCM_2711__) #define BCM_IO_BASE 0xFE000000 #elif defined(__BCM_2835__) #define BCM_IO_BASE 0x20000000 #endif // GPIO 컨트롤러의 주.. 2020. 12. 24.
GPIO 컨트롤 // GPIO 설정 매크로 #define GPIO_IN(g) ( *(gpio+((g)/10)) &= ~(7 2020. 12. 24.
리눅스 개발 환경 - vmware 우분투 설치 2020. 12. 24.
모터 L 298 2020. 12. 23.
atmega128- 03_external_pullup.c , internal_pullup 내부풀업 외부풀업 외부풀업 /* * 03_external_pullup.c * * Created: 2020-12-21 오후 6:55:00 * Author : User */ #define F_CPU 16000000UL #include #include #define BUTTON1 PORTE0 #define BUTTON2 PORTE3 #define LED PORTB0 int main(void) { DDRE = 0x00; DDRB = 0xff; //DDRB = 1 2020. 12. 22.
test_dev3.c test_app3.c 메뉴띄우기 switch 1. test_dev3.c Makefile #linux kernel source KDIR = /home/sss/linux obj-m := test_dev3.o default: $(MAKE) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -C $(KDIR) M=$$PWD modules clean: $(MAKE) -C $(KDIR) M=$$PWD clean test_dev3.c #include #include #include #include #include #include #define IOCTRL_LED_ON 100 #define IOCTRL_LED_OFF 101 #define IOCTRL_EXIT 102 #define BUFF_SIZE 1024 #define MAJOR_N.. 2020. 12. 21.
test app 메뉴 형식으로 뜨게 수정 -------------------- KERNEL Module Control -------------------- 1. LED ON 2. LED OFF 3. EXIT ------------------- Command: 1 위의 형식으로 뜨게 수정 test app 만 수정 #include #include #include #include #include int main(int argc, char **argv) { int dev = 0; char buff[1024] = { 0,}; char cmd[40] = { 0,}; dev = open("/dev/my_device2", O_RDWR); //open은 한번만 열면 됨 while(1){ printf("--------------------\nKERNEL Modu.. 2020. 12. 21.