본문 바로가기

ALL111

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.