본문 바로가기

전체 글123

ADS1115 (16bit ADC) 1. 개요센서를 구현하다 보면 ADC를 꼭 사용해야 하는 경우가 있다. ESP32의 경우 12bit 해상도의 ADC를 내장하고 있지만 더 정밀하게 센서로 부터 나오는 아날로그 신호 (0~3.3V)를 다루고 싶어졌다.외부 ADC로 유명한게 TI 회사의 ADS IC인데 그중 ADS1115 모델은 무려 16비트의 해상도를 지원하고 있다!  2. 데이터시트ADS1115는 1초당 860회의 샘플링 속도를 갖추고 있으며 차동신호일경우 ADC 입력을 2개로 받아 차동신호와 싱글엔디드 신호로 나눌수가 있다.그리고 해당되는 데이터는 I2C 통신으로 값을 얻어올 수 있다.특이해 보이는 건 ALERT/RDY 핀 인데, IC에서 출력되어 나오는 신호인 것 같다.ADS1115의 ADC가 (변환, 출력등이)준비된 상태일 경우 H.. 2024. 7. 10.
[ESPRESSIF] ESP32-S3-WROOM 분석 1. 분석하게된 동기최근 IoT MCU 전문 Espressif 제조사 홈페이지를 방문하였는데, 놀랍게도 기존에 사용했던 MCU (ESP32-WROOM-32U) 보다 새로운 고성능 MCU들이 많이 출시가 되었다.공식홈페이지에서 ESP32-WROOM-32U는 이제 새로운 디자인에는 권장하지 않는단다... 역시 새로운 MCU가 출시되면 생산도 많이 줄게되서 그런가 보다.그래서 이것저것 MCU (엄밀하게는 SoC)를 찾다가 요새 많이 사용하고 있는 S3 시리즈를 눈여겨보았다.AIoT? (AI+IoT의 합성어)를 추진하는 것 같은데 딱히 MCU 수준에서 AI를 가동하고 싶지는 않았다.그래도 최근 임베디드 동향에 따르면 온 디바이스 AI ( 클라우드를 사용하지 않고, 디바이스에서 실행되는 AI ) 기술이 핫하니 데.. 2024. 7. 9.
[C/C++] 고정된 너비 정수 (fixed-width integers) 자료형 1. 고정된 너비 정수 (fixed-width integers)다음과 같은 고정된 너비 정수 자료형은 stdint.h 헤더파일 typedef로 정의되어 있다.고정된 너비 정수원시자료형바이트 (Byte)int8_tchar 1uint8_tunsigned char1int16_tshort2uint16_tunsigned short2int32_tint4uint32_tunsigned int4int64_tlong long8uint64_tunsigned long long8이 같은 자료형을 사용하는 이유는 비트수를 고정하여 모든 시스템(프로그램)에서 동일한 bit수를 사용하도록 위함이다.예를 들어 32 비트 정수는 항상 4byte(32비트)를 사용한다.고정된 너비 정수는 정해진 비트 수만큼 메모리를 차지하므로, 메모리 관.. 2024. 7. 9.
[F/W] 펌웨어 구현 시 메모리 관리 펌웨어란 하드웨어를 직접 접근하고 제어하는 밀접한 관계를 가지고 동작하는 소프트웨어의 일종이다.그렇기 때문에 일반적인 어플리케이션 소프트웨어와는 다르게 조금 더 신경 써줘야한다고 생각한다. 수정: 스택은 컴파일러가 정해주고 힙은 런타임(프로그램 실행 중 동적으로 바뀜)1 .스택 오버플로우 (Stack Overflow) 예방펌웨어의 크기가 커질수록 또는 최적화해야 할 필요가 있다면, 자신에 시스템에 맞는 스택과 힙의 크기를 결정해야 한다.스택은 메모리 최상단에 위치하여 데이터가 추가될 수록 아래로 커지는 자료구조힙은 반대로 데이터가 추가될 수록 위로 커지는 자료구조스택 여유 공간 확인 (모니터링) : FreeRTOS 테스크를 사용중이라면 각 태스크의 스택 사용량을 확인 할 수 있다. 또는 런타임 시 스택의.. 2024. 6. 25.
[C++] 참조자 (Reference)/ 참조에 의한 호출(Call-by-reference) 1. C++ 참조자#include using namespace std;int main(void) { int num1 = 2024; int &num2 = num1; // num2는 변수 num1을 참조한다. (num1의 참조자가 된다.) num2++; cout 기존 C언어에서 & 연산자는 변수의 주소값을 반환하는 연산자 였다.변수선언에서 변수명 앞의 & 연산자는 여기서 "참조자(Reference)" 선언의 의미가 된다.참조자는 비유적으로 별칭이다. (변수로 봐도 문제가 없다)오로지 변수만 참조할 수 있다.참조하는 변수 메모리 공간을 사용한다.참조자의 수에는 제한이 없으며, 참조자를 대상으로도 참조자를 선언할 수 있다. (하지만, 필요이상으로 선언하는 것은 바람직하지 못하다.)아래는 참조자 선언의 잘못.. 2024. 6. 21.
[C++] 함수 오버로딩 (Function Overloading) 1. 헤더파일 선언문의 확장자# include int main (void) { int num = 20 ; std :: cout  과거 입력 및 출력에 관한 일을 하기 위해서 .h 의 확장자를 붙여 헤더파일을 선언하였다.그러나 다음 2가지 이유로 헤더파일의 포함에는 확장자를 생략하기로 한다.현재 C++ 컴파일러는 를 지원하지 않는 추세로 접어들었다.과거의 표준 라이브러리와 새로운 표준 라이브러리의 구분새로운 표준 라이브러리를 사용하는 형태로 소스코드를 쉽게 변경할 수 있도록2. 함수 오버로딩 (Function Overlording)int MyFunc(int num) { num++; return num;}int MyFunc(int a, int b) { return a + b;}C언어에서는 위의 코드와 같이.. 2024. 6. 20.
[F/W] CPU 구조 및 동작 CPU의 구성과 동작 원리는 펌웨어 개발에 도움이 많이 될 것 같아서 정리해본다.CPU는 논리회로의 집합체이다. 개인적으로 생각으로는 이런 CPU를 만들어내는 것이 진정한 반도체 기술이라고 생각한다. (우리는 이미 만들어진 CPU를 사용하여 또 다른 회로를 만든다... ) CPU에 구성된 pin들에 신호를 주게되면, 그에 대한 일을 수행하는 원리이다. 예를 들어 8bit CPU에서 0~7번 까지의 약속된 신호를 주게 되면 CPU는 그에 해당하는 일을 하게 된다. 당연하게도 CPU제조사 마다 구성은 다르기에 핀을 굳이 외우고 다닐 필요까진 없고1. CU (Control Unit, 제어 유닛)제어 유닛인 CU는 ALU과 REGISTER 등의 주변 유닛을 제어하여 기계어 명령을 읽고 어떤 동작을 해야하는 해석.. 2024. 6. 18.
USB to UART 회로 1. USB to UART는 어디에 사용하는가?MCU (마이크로컨트롤러, 요새는 프로그래밍이 가능한 SoC를 포함하기도 한다)를 활용하는 임베디드 개발자는 MCU에 동작 펌웨어를 빌드하는 과정이 필요하기 마련이다.또한 간단한 시리얼 통신으로 현재 MCU 작동 상태를 모니터링하는 디버깅 수단이 필요할 수 도 있겠다.PC와 MCU를 연결하여 이러한 과정을 수행할 수 있는데, 그 수단중 하나가 USB (PC 인터페이스)와 UART (MCU 인터페이스) 이다.즉 위에 상기된 과정을 수행하기위한 USB to UART 회로 (USB신호를 UART 신호로 변경하거나, 혹은 그 반대의 경우)가 사용된다.2. USB와 연결할 타겟 시스템 MCU의 데이터시트를 확인하자펌웨어 다운로드 모드로 진입하는 조건과 UART의 사양.. 2024. 6. 12.
OPAMP(연산증폭기) 기본 회로 OPAMP를 사용한 회로 중 기본 회로들을 중심적으로 알아본다.해당 회로들은 설계하는데 많이 사용되므로 형태를 알아두어야한다.1. 비교기(Comparator)궤환 없는 회로는 비교기로써 동작된다.VOUT = A * (V+ - V-)이상적인 OPAMP에서 볼때 V+ 가 V- 보다 크다면 출력은 +무한대의 출력을 하게 되고 반대라면 -무한대의 출력을 하게 된다. 그러나 실제 OPAMP는 전원 범위 내에서 동작되므로, 양의 포화전압 또는 음의 포화전압으로 출력한다.2. 버퍼 회로(Unity Gain Buffer / Voltage Follower) 버퍼회로는 이득이 1이라서 Unity Gain Buffer 또는 전압 팔로워 (Voltage Follower)라고도 부른다.OPAMP 버퍼는 높은 입력 임피던스와 낮.. 2024. 3. 24.
CT(Current Transfomer) 센서 특성 분석 전류측정 센서에 대해서는 이론을 한번 정리한적이 있다. 이번에는 AC(교류)의 전류를 측정하는 센서인 CT센서의 특성을 분석해보고자 한다. 1. 간접적인 방식의 전류 측정 정리했지만, CT 센서는 간접적인 전류측정 방식의 센서이며 전선으로 부터 흐르는 전류에 의한 코일의 2차전류 생성의 원리를 이용한다. 이 특성 덕분에 고전압의 AC 전류 측정에 많이 사용된다. 그냥 단순한 권선형 코일의 형태를 내장한 모습인데, 권선비에 따라 2차 전류가 생성된다. 예를 들어 권선비 (CT Ratio)가 2000/1 인 CT 센서에 1A의 전류가 흐르면 코일에서 똑같은 형태로 0.0005A 의 전류가 생성되어 흐르는 것이다. CT 권선비 (CT Ratio)의 형태는 다양하게 존재하므로 해당센서의 사양을 확인하는 것은 필.. 2023. 10. 25.