아두이노(11)
-
[Atmega128] 3. 타이머 인터럽트 Timer/Counter Register
이번에 사용할 것은 PWM 파형을 만들 때 꼭 필요한 타이머 인터럽트이다. atmega128에는 총 4개의 타이머가 있으며, 그중에 timer0과 timer2는 8비트 타이머로 이루어져 있고, timer1과 timer3은 16비트 타이머로 이루어져 있다. 타이머 인터럽트를 만드는 이유는 원하는 파형을 만들기 위해서 인데, 원하는 파형을 만들기 위해서는 분주, 타이머의 동작 모드 등을 적절하게 바꾸어야 한다. 바꾸기 위해서는 간단하게 분주, 타이머의 동작모드 등에 관련된 레지스터 값을 바꿔주기만 하면 된다. 기능으로는 인터럽트 발생과 가변할 수 있는 출력 신호를 생성하여 OC단자로 출력할 수 있는 기능이 있다. 그리고 타이머1과3 한정으로 트리거 신호로 카운터 값을 캡처하는 기능을 가지고 있다. 이번 편에..
2019.08.03 -
[Atmega128] 2. 외부 인터럽트 External Interrupts Register
외부 인터럽트는 센서의 값 등 외부에서 신호를 입력받아 인터럽트를 발생시킨다. 입력받아야 할 때 자주 쓰이며 초기에 설정해야 하는 게 있다. atmega128 기준으로 외부 인터럽트가 두개 있으며, A와 B로 표기한다. 순서 1. 인터럽트 포트를 input모드로 설정해준다. 2. EICRA or EICRB 레지스터를 설정해준다. 3. EIMSK 레지스터를 설정해준다. 1번의 인터럽트 포트를 input모드로 설정하는 것은 전 포스팅에서 다루었으니 2번과 3번을 알아보자. 1. EICRA..B - External Interrupt Control Register A.. B EICRA에서는 interrupt 0.. 3을, EICRB에서는 4... 7을 설정하게 되어있다. 이 레지스터의 용도는 인터럽트 모드를 조..
2019.08.02 -
[Atmega128] 1. 입출력 레지스터 I/O Register
처음으로는 i/o관련 레지스터 들로 input output을 결정하는 레지스터들이다. avr은 port라는 것을 가지고 있는데 atmega128 기준으로는 porta부터 portf까지 8비트씩 있다. 위와 같이 포트 하나당 수행하는 역할이 있으며, 328 기준에서 portd와 portb가 아두이노 핀으로 사용되는 것 같다. 우리가 포트를 읽고 쓰려면 그전에 모드를 설정해 주어야 한다. avr에 그 모드를 설정해 주는 레지스터가 바로 DDRx레지스터이다.. 1.DDRx - Port X Data Diretion Register 안의 8비트는 포트 b의 0... 7까지의 비트들을 조정하여 1일 경우, 출력으로 설정하고, 0일 경우, 입력으로 설정한다. (기본값은 0으로 세팅되어있다.) 2.PORTx - Por..
2019.08.02 -
[아두이노/Arduino] PWM 도트 매트릭스 제어하여 전광판 만들기
RTOS 시간에 리모콘 - LCD - key_matrix에 이어 dot_matrix를 제어해보았다. 키 매트릭스와 유사한 형태로 구성되어있으며, col값과 row값을 조정하여 총 8x8 64개의 led를 제어할 수 있다. 핀은 총 16개가 필요하며 아두이노 핀을 거의 다 쓰면 제어할 수 있다. 핀 순서는 위 그림대로 뒤죽박죽이여서 잘 보고 꼽아야 하고, col값에 저항을 연결한 후 전류를 넣어야 한다. 일단, 기본적으로 핀모드를 설정해준다. 그리고 나서 위의 2차원 배열인 b에다가 16진 코드로 각각 도트 매트릭스에 1~9의 모양을 띄게 하는 led를 켜놓도록 구성되어 있다. 16진 코드를 해석하는 for문과 총 16진코드 8개로 구성되어 있으니 그 for문을 8번 반복하는 for문으로 이루어 진다. 밑..
2019.05.06 -
[arduino] 아두이노로 PWM 활용하여 리모콘으로 FND 제어
제일 먼저, fnd의 숫자 데이터맵과, 리모콘의 숫자 데이터맵을 선언해줍니다. 이 데이터맵은 모델마다 다르며 조금만 어긋날경우 출력이 안될수도 있으므로 항상 주의해야 합니다. 이 메서드는 fnd에 숫자를 띄워주는 역할을 하며 fnd는 값을 4개에 데이터를 마이크로초 단위로 꺼졌다 켜졌다해서 잔상으로 보여주는 형식이기 때문에 for문으로 1,2,3,4하나씩 켜주게 만듭니다. 인자값은 각각 1,2,3,4번째 값중 어디에 할지 결정하는 pos와 무슨 숫자를 넣을건지 결정하는 num으로 결정됩니다. pos가 들어오면 pos이외의 다른칸은 띄우지 않으며 num값이 들어오면 num번째에 있는 fnd데이터 맵을 호출하여 그 값을 호출합니다. 다음 메서드는 리모콘에서 데이터를 받아오는 메서드입니다. 리모콘을 누르는 순..
2019.04.14