본문 바로가기
728x90
반응형
SMALL

Embedded System41

[AVR] CTC 비교매치 모드 인터럽트 CTC 비교매치 모드 인터럽트 코드비젼 (CVAVR)은 인터럽트용 헤더파일이 별도로 필요하지 않지만 AVRstudio는 #include 인터럽트 헤더파일을 추가 해야 한다. OCR0로 설정하고 인터럽트는 오버플로우 인터럽트를 사용해도 된다. 특히, 긴 주기를 얻기 위해서 Phase Correct PWM Mode를 사용하는 경우에 TCNT0의 증가와 감소에서 OCR0=TCNT0가 2번 만나게 되는데 이렇게 되면 두번 OCF0가 발생 하므로 긴 주기를 얻지 못한다 (OCR0=0xFF와 OCR0=0x00은 1번). 오버플로우 인터럽트는 BOTTOM에서 한 번만 발생하므로 오버플로우 인터럽트를 사용하면 된다. TCNT0를 Reload 하지 않아서 (Auto Reload) 누적오차가 없으므로 시계 등의 정확한 시.. 2022. 6. 9.
[AVR] JMOD-128-1 JMOD-128-1 JMOD-128-1은 ATmega128 MCU를 이용하여 다양한 기능을 구현하거나 시험해 볼 수 있도록 모듈 형태로 개발된 마이크로콘트롤러 모듈이다. 개발자의 편의를 위하여 소형 모듈에서 프로그램 (ISP) 다운로더 기능을 내장하고 있으며, USB 커넥터 하나로 전원 공급과 ISP 수행, UART (RS232C) 인터페이스를 동시에 처리할 수 있는 기능도 제공한다. ATmega128의 53개 GPIO 전체가 외부 핀으로 연결되어 있으며, 외부공급전원 (VEXT)을 모듈의 공급전원으로 사용할 수도 있도록 하여 3.3V 등, 5V 이하의 입출력 신호 인터페이스도 가능하도록 하였다. 또한, 총 58핀의 인터페이스는 핀 간격이 모두 2.54mm로 되어 있어 일반 브레드보드나 외부 시스템에 쉽.. 2022. 6. 9.
[AVR] 타이머 (Timer) 타이머 (Timer) 타이머 (Timer) / 카운터 (Counter)는 마이크로컨트롤러 응용에서 중요한 자원이다. 타이머는 말 그대로 시간을 재는 기구이다. delay 함수를 사용하여 1/100초 단위의 시간을 잴 수 있다. 반면, 타이머는 좀 더 정확하게 시간을 재기 위하여 마이크로컨트롤러가 사용하는 클락 (JKIT-128-1의 경우 16Mhz)을 기반으로 그 클락 펄스의 개수를 세는 것이라 할 수 있다. 카운터 (counter)는 우리말로 계수기라고 하는데, 한 마디로 개수를 세는 것을 말한다. 어떤 이벤트의 개수, 입장객 수, 걸음 수 등등 마이크로컨트롤러에서 보면 외부에서 어떤 사건 (이벤트)이 발생하는 것의 개수를 세는 형태로 사용된다. ATmega128의 내부에는 4개의 타이머가 있는데 이들.. 2022. 6. 2.
[Arduino] Using 8×8 Dot Matrix LED with Arduino Using 8×8 Dot Matrix LED with Arduino /* 8x8 Dot Matrix w/ MAX7219 modified on 7 March 2019 by Saeed Hosseini @ Electropeak https://electropeak.com/learn/ */ #include int DIN = 7; int CLK = 6; int CS = 5; int maxInUse = 1; byte buffer[20]; char text[] = "a"; MaxMatrix m(DIN, CS, CLK, maxInUse); void setup(){ m.init(); m.setIntensity(8); } void loop(){ m.setDot(0, 7, true); m.setDot(0, 7, true); .. 2022. 6. 2.
[AVR] MAX7219로 알파벳 표시 MAX7219로 알파벳 표시 #include #define F_CPU 16000000UL // 16 MHz #include #define U08 unsigned char #define CS_1 PORTC|=4 // PC2=1 #define CS_0 PORTC&=~4 // PC2=0 #define DIN_1 PORTC|=2 // PC1=1 #define DIN_0 PORTC&=~2 // PC1=0 #define CLK_1 PORTC|=1 // PC0=1 #define CLK_0 PORTC&=~1 // PC0=0 U08 Alphabet[156]={ 0x7f,0x88,0x88,0x88,0x88,0x7f, // A 0x6e,0x91,0x91,0x91,0x91,0xff, // B 0x42,0x81,0x81,0x8.. 2022. 6. 2.
[Arduino] LED Matrix Editor LED Matrix Editor 8x8 LED 매트릭스용 애니메이션을 편집하고 생성하기 위한 온라인 도구이다. 무료이며 사용하기 쉽다. https://xantorohara.github.io/led-matrix-editor/# LED Matrix Editor Overview LED Matrix Editor - is online tool for editing and creating animations for 8x8 LED matrices. It is free and easy to use. Usage Click on LED to toggle single item Click on row or column numbers to toggle whole row or column Click on icon to clear.. 2022. 5. 26.
[AVR] Timing Diagram Timing Diagram 타이밍 다이어그램이란 각 신호들이 시간별로 처리되는 과정을 그림으로 나타낸 것이다. 클락 (clk)은 주기적으로 움직이고 클락에 맞춰서 데이터 (D) 파형이 바뀜으로써 데이터를 읽거나 쓰는 동작이 가능해진다. 여기서 중요한 개념은 파형의 높낮이 (High / Low)와 시간값이 정해진 바대로 움직여야 유효한 데이터가 나온다. 실제 파형의 움직임은 위 그림처럼 직각으로 떨어지지 않는다. 전기 신호가 물리적으로 변동되는데 시간이 걸리므로 실제 타이밍 다이어그램은 위 그림과 다르다. 파형이 High Low로 이동하는 시간값은 해당기기와 통신라인에 따라 다르고, 정확한 값들은 기기의 데이터시트에 정의되어 있다. MAX7219의 통신은 LOAD 데이터를 Low로 주면 시작된다. 이것은 .. 2022. 5. 25.
[AVR] MAX7219 MAX7219 MAX7219는 여러 개의 7-segment를 제어하기 위해서 만들어졌다. 한 가지 색상을 사용할 수 있는 8x8 도트매트릭스에는 64개의 발광 다이오드가 존재한다. 이 64개의 발광 다이오드를 제어하려면 스태틱 (Static) 구동 방법과 다이나믹 (Dynamic) 구동 방법 중에 하나를 택해야 한다. 스태틱 구동 방법은 이 64개의 발광 다이오드를 모두 한 번에 제어하는것을 말하고 (한 번에 제어하는 만큼 많은 포트를 요구), 다이나믹 구동 방법은 한번에 64개를 제어하지 않고 8x8 도트 매트릭스의 행 단위로 순차적으로 제어를 하는데 빠른 속도로 제어하여 잔상 효과로 인해 모두 켜져 있는것 처럼 착시 효과가 생겨 모두 보이게 되는 방식이다. 대부분의 도트 매트릭스는 다이나믹 구동 방법.. 2022. 5. 25.
[AVR] LED LED (Light-Emitting Diode) - 발광다이오드라 칭하며, 칼륨, 인, 비소 등을 재료로 한 다이오드 (diode)로 순방향으로 전류를 흘리면 빛을 발한다. - 빛의 색깔은 크리스털 도핑의 양과 종류에 따라 빨강, 노랑, 녹색, 파랑의 색을 나타낸다. - 일반 전구나 네온램프 등 다른 발광 소자와 비교하여 전기 빛의 변환 효율이 높으며, 열이 나지 않고, 소형 경량이기 때 문에 수명이 길다. - 각종 숫자·문자표시기, 카메라의 자동초점용 광원, 광통신용, 광고판, TV 등에 사용되며 응용범위가 넓다. - 보통 10~20mA 전류에 1.5V~2.5V 전압 강하 volatile 선언 - 컴파일러는 volatile로 선언된 변수나 포인터와 관련된 코드를 임의로 최적화하지 말라는 의미이다. -.. 2022. 5. 24.
[AVR] Simple AVR code: MAX7219 7-segment display driver Simple AVR code: MAX7219 7-segment display driver /* MAX7219 Interaction Code * --------------------------- * For more information see * http://www.adnbr.co.uk/articles/max7219-and-7-segment-displays * * 668 bytes - ATmega168 - 16MHz */ // 16MHz clock #define F_CPU 16000000UL // Outputs, pin definitions #define PIN_SCK PORTB5 #define PIN_MOSI PORTB3 #define PIN_SS PORTB2 #define ON 1 #define OFF.. 2022. 5. 24.
728x90
반응형
LIST