분류 전체보기 298

MCU-채터링현상 알아보기기

안녕하세요. 오늘은 채터링(chattering) 현상에 대해 알아보겠습니다.채터링현상은 기계적 버튼이 눌리거나 떼어졌을때, 신호가 빠르게 여러번 튕기거나 흔들리는 현상을 의미합니다.채터링의 원인은 접점의 마모나 전기적인 노이즈 등 다양한 원인이 있습니다.이러한 현상을 막기위해 디바운싱(Debouncing)방법을 사용하게 됩니다.우선 채터링현상은 버튼을 사용할때 많이 경험하므로 버튼이 어떻게 동작하는지 알아보겠습니다.아래의 그림을보면 버튼을 눌렀을때 동그란 금속재질이 움직여서 버튼의 회로가 연결되게 해줍니다.채터링현상을 직접 확인해보겠습니다.회로는 아래처럼 구성했습니다. INPUT PORT는 실제로 아무것도 연결이 되어있지 않고, 풀업저항을 사용하는 모습으로 구성했습니다.point 부분을 측정하였고,  버..

지식/MCU지식 2025.03.02

STM32 RTOS 알아보기 6편(Mutex)

안녕하세요. 오늘은 세마포어와 뮤텍스에 대해 알아보겠습니다.(xSemaphoreCreateMutex,xSemaphoreTake,xSemaphoreGive)세마포어와 뮤텍스는 여러 태스크가 공유 자원에 안전하게 접근하도록 동기화하기 위해서 사용합니다.이 글에서는 세마포어와 뮤텍스를 알기전에 알아야 할 지식을 알아보고 뮤텍스에대해 알아보겠습니다.예를들어 아래의 코드에서 global_i는 TASK1과 TASK2가 동시에 접근하는 공유자원입니다.이런경우 임계구역(Critical Section)이 발생하고, 레이스컨디션(Race Condition)문제가 발생할 수 있습니다.void task(void *pvParameters);int global_i=0;void myTask(){  xTaskCreate(task, ..

STM32/STM32_RTOS 2025.02.16

STM32 RTOS 알아보기 5편(portYIELD_FROM_ISR)

안녕하세요. 오늘은 RTOS에서 사용하는 portYIELD_FROM_ISR에 대해 알아보겠습니다.제가 업로드했던 글 기준으로  3편에서 portYIELD_FROM_ISR 함수를  사용했었습니다.portYIELD_FROM_ISR 는 ISR종료 후 즉시 태스크 전환이 필요한 경우 Context Switching을 수행하게 해줍니다.port : FreeRTOS가 다양한 하드웨어에서 동작할 수 있도록 CPU별 맞춤 구현을 제공하는 하드웨어 적응 계층입니다.YIELD : (양보하다) 현재 실행중인 태스크가 CPU실행을 포기하고 다른 태스크에게 실행을 양보합니다.FROM_ISR : 해당기능(매크로 또는 함수)이 ISR에서 호출될 수 있음을 의미합니다.portYIELD_FROM_ISR의 코드를 보겠습니다. 매크로로 ..

STM32/STM32_RTOS 2025.02.01

STM32 RTOS 알아보기 4편(xTimerCreate,xTimerStart,xTimerStop)

안녕하세요. 오늘은 RTOS에서 사용하는 타이머를 알아보겠습니다.우선 이전글에서는 인터페이스를 CMSIS_V1로 사용했었는데 해당버전을 사용하면 타이머를 사용할때 다른코드를 추가해줘야하는게 있으므로 CMSIS_V2로 변경해서 사용하겠습니다.CMSIS_V2버전으로 바꾸고 빌드할때 freertos_mpool.h: no such file or directory와같은 에러가 나올수도 있는데 F103기준으로 펌웨어패키지 버전을 STM32Cube FW_F1 V1.8.5로 바꾸니 빌드가 됐습니다.* xTimerCreate함수TimerHandle_t xTimerCreate(const char * const pcTimerName, const TickType_t xTimerPeriodInTicks, const UBaseT..

STM32/STM32_RTOS 2025.01.28

STM32 NUCLEO BOARD printf 사용하기

안녕하세요.오늘은 stm32에서 printf 함수를 사용해보겠습니다.사용할 보드는 NUCLEO-F103RB입니다.ST LINK가 Virtual com port를 지원하고 회로도를보면 STM32F103RB의 UART2에 연결되어있습니다.그래서 별도의 usb to uart없이도 pc와 uart통신이 가능합니다.그래서 그런지 NUCLEO-F103RB 프로젝트를 만들면 기본적으로 UART2가 활성화되어있습니다.프로젝트를 생성하고나서 HAL_UART_Transmit함수를 이용해서 TX가 가능합니다. 해당 방법을 사용하는 데는 문제는 없지만 불편하므로 printf가 이용하기 편리하므로 printf를 이용해 보겠습니다.printf를 이용해보겠습니다. 경고가 발생합니다. printf는 에 선언되어있는데 를 includ..

STM32/간단한팁 2025.01.20

STM32로 ADC기능을 사용하여 그래프 표시하기

안녕하세요. 오늘은 STM32로 ADC기능을 사용하여 그래프를 표시해보겠습니다.간단히 나타내면 아래의 그림과 같습니다. STM32로 저항의 전압을 읽어서 PC 프로그램으로 uart 통신을 통해 값을 보내주고 PC 프로그램에서는 받은 데이터를 일정한 시간 간격으로 그래프를 표시해 주는 것입니다.*하드웨어구성 가변저항2개를 이용하여 전압값을 읽게 했습니다.Vin은 3.3V이고 R1는 10k이고  R2는 0~10k이므로 Vout은 0~1.65V 나옵니다.*STM32 FW구현해야하는건 ADC값 읽는거와 UART통신으로 PC에게 데이터를 보내주는것입니다. 뉴클레오보드를 사용하므로 usb to uart는 이미 uart2에 할당되어있습니다.printf 기능을 사용할것이므로 아래의 헤더파일과 함수만 추가해주면 됩니다...

STM32/활용 2024.12.30

USB 로직 아날라이저,프로토콜 분석기 알아보기

안녕하세요. 오늘은 USB 로직 아날라이저(logic analyzer),프로토콜분석기(protocol analyzer)에 대해 알아보겠습니다.제가 보유중인 로직은 아래의 사진과 같습니다. 사용해보며 제가 느낀 장/단점이라 주관적입니다.(실제 사용해보며 느낀점을 적은거라 제가 사용안해본 다양한 기능들이 있을수도 있습니다.)*로직 아날라이저(1) Saleae logic pro8TOOL: Logic 2장점 : 다양한 프로토콜, 실시간 파형보기 가능, digital/analog보기 가능, 쉬운 UI단점 : 장시간사용시 발열있음, 비쌈- 해당장비는 제가 가장 많이 사용하는 장비이고 제 블로그에서 파형을 찍은걸 보면 대부분 이 장비로 찍었습니다. 장점은 UI가 매우 사용하기 편하게 되어있습니다. UI가 직관적이고 ..

일반제품 2024.12.25

CH341 칩을 이용해서 UART,I2C,SPI 통신하기 3편(I2C)

안녕하세요. CH341 칩을 이용해서 I2C통신을 해보겠습니다.2편에서는 UART통신을 했었는데, 같은 프로그램에 Winform의 tabControl 도구를 이용해서 UI를 구성해보겠습니다.UART통신은 serialPort도구를 이용했었는데 이번에 i2c에서는 CH341DLL을 이용해보겠습니다.CH341DLL은 아래의 사이트에서 다운로드 가능합니다.https://www.wch-ic.com/downloads/CH341PAR_ZIP.htmlCH341DLL_EN.H을 보면 사용가능한 함수와 설명이 나옵니다.CH341DLL.DLL을 C#에서 사용할수있게 Wrap한 DLL을 사용하겠습니다https://github.com/iillii/ch341-Sharp* 하드웨어 구성CH341에서 I2C통신을 해야하므로 1,2번..

각종 CHIP 2024.12.22

CH341 칩을 이용해서 UART,I2C,SPI 통신하기 2편(UART)

안녕하세요. CH341 칩을 이용해서 UART통신을 해보겠습니다.CH341뿐만아니라 다른 usb to uart 칩이면 사용하는방법은 다르지않습니다.* 하드웨어 구성CH341에서 uart통신을 해야하므로 2,3번을 연결해줍니다 CH341과 다른 usb to uart칩을 이용해서 연결을 합니다. (RX, TX, GND)* 프로그램 구성사용하는 언어는 C# Winform입니다. C#에서 UART통신은 System.Io.Ports 네임스페이스를 이용하면 됩니다. 대략적인 구성은 위와같습니다. 시리얼 통신 프로그램(테라텀)과 여기서 만드는 프로그램과 통신을 할건데 통신통로는 uart입니다.* Serial port open하기Serial port를 선언하고 baudrate, stop bit, com port번호, ..

각종 CHIP 2024.12.08

CH341 칩을 이용해서 UART,I2C,SPI 통신하기 1편(기본 소개)

안녕하세요. CH341 칩을 이용해서 UART, I2C, SPI 통신을 해보겠습니다.우선 CH341은 wch에서 만든 usb 컨버터 칩입니다. 해당칩을 이용하면 다양한 통신을 할수있는데 그 중에 UART, I2C, SPI통신을 해보겠습니다.CH341 데이터시트링크위에서 말한 내용을 하기 위한 순서입니다.1. CH341칩 & 사용할보드 알아보기 & 프로그램 컨셉 & 보드컨셉2. CH341칩을 이용해서 UART, I2C, SPI통신하는 프로그램을 만들기 (C#)3. CH341칩을 이용해서 회로구성을하고 보드를 만들기(kicad)4. 만든 보드와 프로그램이 잘 동작하는지 테스트해보기* 사용할보드 알아보기 CH341칩을 이용해서 만들어져있는 보드를 이용해서 먼저 프로그램을 만들 예정입니다.보드의 회로도를보면 통..

각종 CHIP 2024.11.23