본문 바로가기

MCU83

TI C2000 DSP ePWM Module 설정 가이드 EPWM(Enhanced Pulse Width Modulation) 모듈은 Texas Instruments(TI)의 C2000 마이크로컨트롤러(F2837xD 및 F28P65x 시리즈)에서 디지털 제어 시스템(예: 모터 제어, 전력 변환기, 인버터)의 핵심 역할을 수행합니다. 이 문서는 EPWM 모듈의 모든 하위 모듈(Time-Base, Counter-Compare, Action-Qualifier, Dead-Band, Chopper, Trip-Zone, Digital-Compare, Event-Trigger)과 Type-5 EPWM의 고급 기능(XCMP Mode, Diode Emulation, Minimum Dead-Band, Illegal Combination Logic, HRPWM)을 상세히 설명하며,.. 2025. 9. 14.
STM32CubeMX에서 아두이노 스타일 사용자 코드 구조 만들기 STM32CubeMX는 STM32 마이크로컨트롤러용 프로젝트를 쉽게 생성할 수 있는 강력한 도구입니다.하지만 기본적으로 CubeMX가 생성하는 코드는 main.c 안에 모든 초기화 코드와 주변장치 핸들러가 몰려 있어 프로젝트가 커질수록 관리가 어려워집니다.아두이노처럼 setup()와 loop() 구조를 적용하면, 사용자 코드를 CubeMX 자동 생성 코드와 분리하여 깔끔하게 관리할 수 있습니다.이번 글에서는 CubeMX에서 아두이노 스타일 코드 구조를 만들고, 전역 변수와 USART 핸들러를 안전하게 사용하는 방법까지 소개합니다.1. 기본 CubeMX 구조CubeMX로 USART 하나를 활성화하고 프로젝트를 생성하면, main.c는 대략 다음과 같이 구성됩니다:int main(void){ HAL_Ini.. 2025. 9. 14.
Microchip studio 및 mplab 에서 발생하는 'vsnprintf_P' 경고, 이유와 해결책 마이크로칩 스튜디오(Microchip Studio)를 사용하여 임베디드 프로젝트를 개발하다 보면, 익숙하지 않은 경고를 만나 당황할 때가 있습니다. 특히 AVR 기반 프로젝트 코드를 PIC용으로 포팅하거나, 기존 예제 코드를 사용할 때 다음과 같은 경고가 자주 발생하곤 합니다.Warning: implicit declaration of function 'vsnprintf_P'이 경고는 단순히 함수가 선언되지 않았다는 표면적인 메시지를 넘어, 컴파일러 간의 근본적인 차이 때문에 발생합니다. 이 글에서는 vsnprintf_P가 무엇인지 명확히 정의하고, XC8과 AVR-GCC 컴파일러 관점에서 왜 이 경고가 발생하는지, 그리고 어떻게 해결해야 하는지 상세하게 설명해 드리겠습니다.키워드: 마이크로칩, AVR, .. 2025. 9. 13.
MSP430 기본 프로젝트 설정 및 LED 프로그램 이 글에서는 Texas Instruments의 MSP430FR6989 LaunchPad를 사용해 기본 프로젝트를 설정하고, LED 깜빡이기 프로그램을 작성하는 방법을 설명합니다. 또한 MSP430FR6989의 하드웨어 사양과 LaunchPad의 핀맵을 다룹니다. Code Composer Studio (CCS)를 사용하며, 초보자도 따라 할 수 있도록 단계별로 안내합니다.1. MSP430FR6989 하드웨어 사양MSP430FR6989는 Texas Instruments의 초저전력 16비트 마이크로컨트롤러(MCU)로, FRAM 기반의 MSP430FR6xx 시리즈에 속합니다. 주요 사양은 다음과 같습니다:아키텍처: 16비트 RISC, 최대 16MHz 클럭메모리:128KB FRAM (비휘발성 메모리, 초저전력, .. 2025. 9. 11.
아두이노에서 74HC157 / 74HC153 멀티플렉서(MUX) 제어 멀티플렉서는 여러 입력 중 하나를 선택해 출력으로 전달하는 디지털 스위치입니다. 디지털 신호를 선택하여 마이크로컨트롤러의 입력/출력 수를 절약할 때, 또는 여러 디지털 소스를 하나의 버스로 묶어 읽을 때 유용합니다.이번 글에서 다루는 두 IC는 다음과 같습니다:74HC157: 쿼드(4채널) 2:1 멀티플렉서 (한 번에 4비트 병렬 선택)74HC153: 듀얼(2섹션) 4:1 멀티플렉서 (각 섹션이 4개의 입력 중 1개 선택)주의: 이들 칩은 CMOS 디지털 멀티플렉서입니다. 아날로그 신호(센서의 연속 전압)를 선택하려면 CD4051, CD4066 같은 아날로그 MUX를 사용하는 것이 일반적입니다.2. 부품 소개 및 핀 설명(요약)74HC157 (주요 핀)S (Select) : 공통 선택 입력. 0이면 A .. 2025. 9. 10.
아두이노에서 74HC93 / 74HC161 / 74HC163 Binary Counter 사용하기 🔎 Binary Counter란?74HC93, 74HC161, 74HC163은 모두 Binary Counter(이진 카운터) IC입니다.74HC93 : 4bit Ripple Counter (비동기) 74HC161 / 74HC163 : 4bit Synchronous Binary Counter (동기식, Load/Enable 지원) 이 칩들은 클럭 신호가 들어올 때마다 Q출력 핀에 2진수 형태로 카운트 값을 출력합니다.간단히 말해, 클럭 펄스를 입력하면 자동으로 2진 카운터가 동작합니다.⚡ 아두이노와 연결하기아두이노와 연결 시 필요한 기본 핀은 다음과 같습니다.CLK (Clock) : 아두이노에서 펄스를 발생시켜 카운터 증가RESET : 카운터 값 초기화LOAD : 원하는 값으로 병렬 로드 (74HC161.. 2025. 9. 10.
아두이노에서 74HC165 (병렬 → 직렬 변환기) 사용하기 1. 74HC165란?74HC165는 8비트 병렬 입력을 직렬 데이터로 변환하는 PISO (Parallel-In Serial-Out) 시프트 레지스터입니다.즉, 버튼, 스위치, 센서 등 여러 개의 입력을 동시에 받아서 아두이노 같은 MCU에 시리얼 데이터 한 줄로 보내주는 역할을 합니다.🔹 주요 특징 (사양 요약)입력 개수: 8비트 (D0~D7)출력 방식: 직렬 출력 (Q7 핀)클럭: 외부 클럭 입력(CP 핀)으로 데이터가 시프트됨래치 기능: PL (Parallel Load) 핀을 사용하여 병렬 데이터를 한번에 읽어와 래치 가능확장: 여러 개 칩을 직렬 연결하여 16비트, 24비트, 32비트… 무제한 확장 가능동작 전압: 2V ~ 6V (일반적으로 5V 아두이노와 호환)최대 클럭 속도: 약 25 MHz.. 2025. 9. 3.
AVR128DA 시리즈 UART 드라이버 설계 및 구현 개요본 문서는 Microchip의 AVR128DA64/48/32/28 시리즈 마이크로컨트롤러에 내장된 UART(USART) 기능을 분석하고, 이를 활용할 수 있는 범용 드라이버를 설계 및 구현한 내용을 다룹니다. AVR128DA 시리즈는 최대 6개의 USART 모듈을 제공하며, 비동기/동기 통신, 다양한 보드레이트 설정, 패리티 및 스톱 비트 지원, 인터럽트 및 폴링 기반 송수신 기능을 포함합니다. 본 드라이버는 링버퍼를 기반으로 효율적인 데이터 송수신을 지원하며, printf를 통한 표준 출력 리디렉션, 가용 바이트 확인(uart_available), 링버퍼 초기화(uart_flush)와 같은 부가 기능을 제공합니다. 또한 AVR128DA64/48/32/28 전 제품군에 호환되도록 설계되어 Microc.. 2025. 9. 3.
아두이노에서 74HC154 제어하기 📌 74HC154란?74HC154는 4-to-16 라인 디코더/디멀티플렉서 IC입니다.입력: 4비트 주소 (A0~A3)출력: 16채널 (Y0~Y15) 중 하나만 LOW (나머지는 HIGH)Enable 핀(/G1(/E1), /G2(/E2))을 통해 전체 출력을 활성/비활성 가능주 용도: LED 매트릭스 제어, 여러 장치 선택(Chip Select), 멀티플렉싱 회로즉, 마이컴이 4개의 핀만 사용해 최대 16개의 출력 중 하나를 선택할 수 있게 해줍니다.⚡ 동작 원리A0~A3에 이진수 값을 주면, 해당 값에 대응하는 출력만 LOW 상태가 됩니다. A3 A2 A1 A0 출력 0000Y00001Y10010Y2……………1111Y15출력은 Low Active이므로, LED를 켜려면 LED의 애노드(.. 2025. 9. 3.
AVR128DA 시리즈 GPIO 드라이버 설계 및 구현 개요본 보고서는 Microchip AVR128DA64/48/32/28 시리즈 마이크로컨트롤러의 GPIO(General Purpose Input/Output) 기능을 분석하고 이를 활용할 수 있는 드라이버를 구현한 내용을 다룹니다. AVR128DA 시리즈는 최대 55개의 프로그래머블 I/O 핀을 제공하며, 각 핀은 입력/출력 방향 제어, 풀업/풀다운 저항, 인터럽트, 드라이브 강도, 슬루 레이트 제어 등의 다양한 기능을 지원합니다. 또한, **가상 포트(VPORT)**를 통한 싱글 사이클 액세스를 제공하여 고속 데이터 처리가 가능하고, 모든 슬립 모드에서 비동기 핀 변경 감지를 지원해 저전력 애플리케이션에도 적합합니다. 본 드라이버는 이러한 기능을 추상화하여, Microchip Studio 및 AVR-GC.. 2025. 9. 3.
아두이노에서 74HC573 사용하기 1. 74HC573이란?74HC573은 8비트 D형 래치(Octal D-Type Transparent Latch) IC입니다.마이컴이 출력한 데이터를 잠시 저장(latch)하고, 필요할 때 병렬 출력으로 꺼내 쓸 수 있습니다.주요 핀 기능은 다음과 같습니다:D0~D7: 입력 데이터Q0~Q7: 출력 데이터LE (Latch Enable)HIGH: 입력(D)을 출력(Q)에 통과시킴LOW: 이전 값 유지OE (Output Enable, Active Low)LOW: 출력 활성화HIGH: 출력이 High-Z (삼상 상태)즉, 마이컴에서 데이터를 보내고 LE 신호로 latch를 걸어주면, 그 값이 계속 유지됩니다.이 방식은 I/O 확장, 버스 분리, 디스플레이 구동 등에 자주 사용됩니다.2. 아두이노 연결 예시예를 .. 2025. 9. 3.
임베디드 시스템 DMA & 링 버퍼: 인터랙티브 가이드 임베디드 시스템: DMA & 링 버퍼 STM32를 예시로 한 인터랙티브 가이드 왜 이 주제가 중요한가요? 임베디드 시스템에서 DMA(Direct Memory Access)는 CPU의 부담을 줄여주는 핵심 기술입니다. **STM32와 같은 마이크로컨트롤러**에서 DMA만으로는 가변 길이 데이터나 예기치 않은 통신 중단 상황에서 데이터 유실이 발생할 수 있습니다. 이 가이드는 **소프트웨어 링 버퍼**를 결합하는 것이 왜 안정적인 시스템 설계를 위한 최선의 전략인지 시각적으로 보여줍니다. 링 버퍼.. 2025. 8. 25.
ADXL345 가속도 센서  STM32 HAL 라이브러리 드라이버 코드 구현 이 문서는 ADXL345 3축 가속도 센서를 STM32 마이크로컨트롤러와 HAL 라이브러리를 이용해 완벽하게 제어하는 방법을 안내합니다. 센서의 상세 사양부터, 핀 연결, 그리고 실제 동작하는 디바이스 드라이버 코드까지 단계별로 설명합니다.1. ADXL345 가속도 센서 사양ADXL345는 저전력, 소형, 3축 가속도 센서로, 정적(Static) 및 동적(Dynamic) 가속도 측정이 가능합니다. 특히 다양한 내장 기능 덕분에 복잡한 알고리즘 없이도 충격 및 동작 감지를 손쉽게 구현할 수 있습니다.측정 범위: ±2g, ±4g, ±8g, ±16g (사용자가 설정 가능)해상도: 10비트 고정 해상도 또는 Full Resolution 모드(최대 13비트) 지원통신 인터페이스: 4-wire SPI (직렬 통신).. 2025. 8. 24.
8051 SPI 비트뱅 코드 구현 : 모드 선택 가능 예제 AT89C51 마이크로컨트롤러에서 SPI(Serial Peripheral Interface)를 비트뱅 방식으로 구현한 C 코드를 소개합니다. 이 코드는 SCLK, MOSI, MISO, SS 라인을 소프트웨어로 제어하며, SPI 모드(0~3)를 사용자가 선택할 수 있도록 설계되었습니다. 8051 기반 SPI 통신을 배우는 초보자부터 고급 개발자까지 활용 가능한 예제입니다.키워드: 8051 SPI, AT89C51, 비트뱅, SPI 모드 선택, 마이크로컨트롤러 통신1. 하드웨어 설정마이크로컨트롤러: AT89C51 (8051 기반)SPI 핀:SCLK: P2.0 (클럭)MOSI: P2.1 (마스터 출력, 슬레이브 입력)MISO: P2.2 (마스터 입력, 슬레이브 출력)SS: P2.3 (슬레이브 선택)컴파일러: K.. 2025. 8. 22.
STM32 ADC 샘플 타임 설정 방법과 실무 팁 STM32 마이크로컨트롤러의 ADC는 샘플 앤 홀드 방식으로 아날로그 신호를 디지털 값으로 변환합니다. STM32 ADC 샘플 타임 설정은 변환 정확도와 성능에 큰 영향을 미칩니다. 이 글에서는 STM32 ADC 샘플 타임 설정 방법과 실무 팁을 이론과 실용적으로 설명하겠습니다.STM32 ADC 샘플 타임이란STM32 ADC 샘플 타임은 입력 전압을 샘플링 캐패시터(\(C_{adc}\))에 충전하는 시간으로써, STM32에서는 ADC 클럭 사이클 단위(예: 1.5, 7.5, 28.5, 55.5 사이클)로 설정됩니다. 샘플 타임이 너무 짧으면 캐패시터가 충분히 충전되지 않아 ADC 값이 부정확해지고, 너무 길면 변환 속도가 느려집니다.(STM32 ADC 샘플 타임에 영향을 미치는 요소STM32 ADC 샘플.. 2025. 8. 21.
STM32 에서 PWM Soft Start 구현: 모터와 LED 제어를 위한 부드러운 시작 STM32 마이크로컨트롤러를 사용해 PWM 신호(PWM signal)를 생성할 때 Soft Start(소프트 스타트, Soft Start) 기능을 구현하는 방법을 알아보겠습니다 . Soft Start는 PWM 듀티 사이클(PWM duty cycle)을 점진적으로 증가시켜 모터, LED, 전원 공급 장치 등의 부하에서 급격한 전류 변화를 방지합니다. 이 글에서는 STM32CubeMX와 HAL 라이브러리(HAL library)를 사용한 두 가지 구현 방법(소프트웨어 기반, 타이머 인터럽트 기반)을 상세한 주석이 포함된 예제 코드와 함께 설명합니다 . 초보자도 쉽게 따라 할 수 있도록 구성했습니다 키워드 (Keywords): STM32 PWM, Soft Start, 듀티 사이클 (Duty Cycle), 타이.. 2025. 8. 21.
Arduino UNO R4에서 DMA 설정 및 사용하기 아두이노 UNO R4는 Renesas RA4M1 마이크로컨트롤러를 기반으로 하며, **DMA(Direct Memory Access)**를 통해 CPU 개입 없이 고속 데이터 전송을 지원합니다. 이 가이드는 UART를 이용한 DMA 설정을 중심으로, Renesas의 FSP(Flexible Software Package)와 레지스터 직접 설정 방법을 상세히 설명합니다. 초보자도 따라 할 수 있도록 단계별로 구성했으며, 디버깅 팁과 레지스터 설정의 주의점을 포함했습니다.키워드: 아두이노, DMA, DTC, LSM6DSO, Arduino UNO R4, DMA 설정 가이드, Arduino UNO R4 Minima DMA 사용DMA와 DTC란?DMA(Direct Memory Access): CPU 없이 메모리 간 .. 2025. 8. 20.
[C2000]2025년 기준 TI C2000 DSP 제품군 사양 상세 분석 Texas Instruments의 C2000 제품군은 모터 제어, 디지털 전원 관리, 산업 자동화 등 실시간 제어 애플리케이션에 최적화된 고성능 마이크로컨트롤러(MCU)입니다. 본 포스트에서는 2025년 기준 최신 시리즈(F29H85x, F28P55x, F2838x, F28004x)의 사양을 테이블로 비교하고 주요 특징을 분석합니다.C2000 제품군 사양 비교 테이블특징F29H85x 시리즈TMS320F28P55x 시리즈F2838x 시리즈F28004x 시리즈아키텍처64비트 C29x DSP 코어 (트라이-코어)32비트 C28x + NPU32비트 C28x + ARM Cortex-M432비트 C28x클럭 속도최대 200MHz최대 150MHz최대 200MHz (듀얼 코어)최대 100MHz플래시 메모리최대 4MB최.. 2025. 8. 20.
AVR128DB48 클럭 설정 상세 가이드 AVR128DB48 마이크로컨트롤러의 클럭 시스템은 유연성과 저전력 설계를 지원하며, 다양한 클럭 소스와 설정 옵션을 제공합니다. 이 문서는 클럭 시스템의 구조, 설정 절차, 그리고 특히 내부 고주파 오실레이터(OSCHF)의 오토튜닝(자동 튜닝) 기능을 포함한 다양한 예제 코드를 상세한 주석과 함께 제공합니다. Microchip의 공식 데이터시트와 TB3234 기술 문서를 기반으로 하며, _PROTECTED_WRITE 매크로를 사용하여 CCP 보호 레지스터를 안전하게 수정합니다. 1. 클럭 시스템 개요AVR128DB48의 클럭 시스템은 CPU와 주변 장치(peripherals)를 구동하는 핵심 구성 요소입니다. 시스템 성능, 전력 효율성, 그리고 특정 애플리케이션 요구사항을 충족하도록 설계되었습니다.1... 2025. 8. 20.
AVR128DB48 ZCD 사용 방법 및 예제 코드 1. AVR128DB48 ZCD 모듈 개요Microchip의 AVR128DB48은 AVR DB 시리즈의 8비트 마이크로컨트롤러로, ZCD(Zero-Cross Detection) 모듈을 통해 AC 신호의 영점 교차를 감지하여 전원 주파수 동기화, 디밍 제어, 또는 전력 관리 애플리케이션에 적합합니다. ZCD 모듈은 AC 신호의 전압이 0V 근처를 통과할 때 이벤트를 감지하며, 인터럽트 또는 출력 신호를 통해 이를 처리할 수 있습니다. 이 문서에서는 AVR128DB48의 ZCD 설정 방법, Bitfield 구조를 활용한 레지스터 설정, 그리고 실용적인 예제 코드를 제공하여 초보자와 숙련된 개발자 모두 쉽게 활용할 수 있도록 돕습니다.주요 사양ZCD 모듈 수 : 2개 (ZCD0, ZCD1)핀 : PA7(ZCD.. 2025. 8. 20.