전체 글 270

테라텀(Tera term) 매크로 알아보기

안녕하세요 오늘은 테라텀(Tera term) 매크로에 대해 알아보겠습니다. 시리얼통신을 사용할때 매크로를 사용하면 손쉽게 커맨드를 전달할 수도있고 맞나 판단 할 수도있습니다. 테라텀의 매크로는 TTL 확장자를 사용하고 Tera Term Language의 줄임말입니다. 테라텀에서 하는 명령어 입력/출력/판단을 자동으로 매크로를 만들어서 사용할 수 있습니다. 테라텀 매크로의 커맨드들은 아래의 사이트에 자세히 나와있습니다. 커맨드들 중에서 자주 사용하는 커맨드를 알아보겠습니다. 자세한 사항과 다른 기능들은 아래의 사이트에서 찾아서 사용하면 됩니다. https://ttssh2.osdn.jp/manual/4/en/macro/command/ UART로 테스트하고 RX랑 TX를 연결해서 보내고 바로 받게 했습니다. ..

뽑기 슬라임LED 알아보기

안녕하세요. 오늘은 문방구같은곳 앞에서 뽑을수 있는 슬라임LED에 대해 알아보겠습니다. 가격은 1,000원이였고 다양한 LED장난감 디자인에 100%나오는 뽑기였습니다. 아래와 같이 LED가 깜빡입니다. * 구성품 부품은 단순하게 1.5V/30mAh 배터리3개 , LED, 스위치, 케이스가 있습니다. * 사용시간 전원의 크기는 4.5V/30mAh입니다. 전원 4.5V에서 소비전류를 측정해 보니 대략 10mA정도 나옵니다. 그럼 대략 3시간정도 사용 가능합니다. (사용하면서 배터리전압이 낮아짐에따라 소비전류가 변하는 건 고려하지 않았습니다) * LED 점멸 일반적으로 LED에 전원을 유지하면 위의 LED와 다르게 깜빡이지 않고 특정한 색으로 켜져 있습니다. 그러나 위와 같이 전원을 넣으면 색이 변하는 LE..

회로이론/활용 2023.05.01

ARM 명령어 아키텍처

안녕하세요. 오늘은 ARM 명령어 아키텍처에 대해 알아보겠습니다 * Instruction Set Architecture(ISA) 소프트웨어와 하드웨어 사이에서 합의된 규칙입니다. 명령어 집합, 명령어 형식을 지정합니다. 컴파일러 개발자는 이러한 규칙을 가지고 C와같은 고급언어에서 기계어로 번역하는 컴파일러를 설계합니다. 하드웨어디자이너는 이러한 규칙을 따라 프로세서를 만듭니다. ISA에는 RISC(Reduced Instruction Set Computer)와 CISC(Complexe Instruction Set Computer) 두가지 범주로 구분할 수 있습니다. 모바일, 임베디드에서는 주로 RISC를 사용하고 데스크탑, 서버에서 사용되는 x86은 CISC를 사용합니다. RISC프로세서는 일반적으로 간단..

MCU지식 2023.04.23

FreeRTOS-undefined reference to `vTaskList'에러

안녕하세요. 오늘은 FreeRTOS의 vTaskList함수를 사용하려할때 발생하는 undefined reference to `vTaskList' 에러에 대해 알아보겠습니다. vTaskList함수를 사용하려면 vTaskList함수를 사용할수있게 매크로를 설정해야합니다. FreeRTOS.h에 있는 configUSE_TRACE_FACILITY와 configUSE_STATS_FORMATTING_FUNCTIONS을 1로 설정하면 됩니다. (https://www.freertos.org/a00021.html) * vTaskList함수 사용할수있게 설정 #define configUSE_STATS_FORMATTING_FUNCTIONS 1 #define configUSE_TRACE_FACILITY 1 * 태스크생성 if ..

FreeRTOS 2023.04.02

엔디안이란?(빅엔디안, 리틀엔디안)

안녕하세요 오늘은 엔디안에 대해 알아보겠습니다. 엔디안이란 데이터에 여러 바이트가 있는 경우 바이트 순서를 정하는 규칙입니다. 빅 엔디안(big endian)과 리틀 엔디안(little endian)두가지 방법이 있습니다. 리틀 엔디안은 숫자의 하위 바이트가 메모리의 최하위 주소에 저장되고 상위 바이트가 최상위 주소에 저장됨을 의미합니다. 빅 엔디안은 숫자의 상위 바이트가 최하위 주소에 저장되고 하위 바이트가 최상위 주소에 저장됨을 의미합니다. STM32는 일반적으로 리틀 엔디안 형식입니다 실제로 빌드된 STM32의 메모리값을 보겠습니다. 볼 메모리 값은 _estack입니다 _estack은 ORIGIN(RAM) + LENGTH(RAM)이므로 0x20005000입니다. .bin파일을 HxD에디터로 열어봤습..

MCU지식 2023.03.26

ATMEGA128을 STM32코드 형식(HAL 라이브러리) 으로 바꾸기

안녕하세요. 오늘은 ATMEGA128코드를 STM32 코드 형식(HAL 라이브러리)으로 바꿔보겠습니다. 먼저 "아트메가/이론 ATMEGA128 주솟값으로 제어하기" 글 참고바랍니다. https://wowon.tistory.com/280 GPIO A,B,C출력/입력만 테스트 해보겠습니다. 먼저 제어할 레지스터가 PORT, DDR, PIN입니다. 데이터들은 1바이트씩이고 PIN다음에 DDR이 나오고 다음에 PORT가 나옵니다. 먼저 GPIO 주소의 시작점을 define해줍니다. #define GPIOA_BASE (0x39) #define GPIOB_BASE (0x36) #define GPIOC_BASE (0x33) 그리고나서 PIN,DDR,PORT 구조체를 만듭니다 typedef struct { volati..

아트메가/이론 2023.03.01

ATMEGA128 주솟값으로 제어하기

안녕하세요. 오늘은 ATMEGA128의 PORTA를 데이터시트에 나와있는 주솟값으로 제어해보겠습니다. 주솟값으로 제어하는 테스트를 하는 이유는 다른 32bit mcu를 사용할 때 (STM,NXP등등) 주솟값으로 제어하는 방법을 알면 좋아서 먼저 비교적 간단한 8bit mcu인 ATMEGA로 해보겠습니다. 목표는 DDRA와 PORTA를 사용하지 않고 데이터시트에 나와있는 주소로 DDRA와 PORTA를 제어하는 것입니다. 먼저 DDRA 선언을 따라가보겠습니다. #define DDRA_SFR_IO8(0x1A) #define _SFR_IO8(io_addr) _MMIO_BYTE((io_addr) + __SFR_OFFSET) #define _MMIO_BYTE(mem_addr) (*(volatile uint8_t *..

아트메가/이론 2023.02.25

ATMEGA128 SPI통신 알아보기 2편

안녕하세요. 1편에 이어서 ATMEGA SPI통신 READ를 구현해보겠습니다. 1편에서는 SPI세팅과 SPI WRITE를 했었습니다 (1편:https://wowon.tistory.com/277) SPI에서 마스터가 슬레이브에게 READ를 하려면 클럭을 흔들어야하는데 클럭은 마스터만 흔들 수 있습니다. 그래서 SPI통신은 WRITE를할때 READ를 같이 합니다. 그래서 READ를 하려면 의미없는 값을 WRITE하면 됩니다. 일반적으로 슬레이브(센서)를 READ를 할때 아래의 방식으로 합니다 1) 마스터가 슬레이브에게 특정값 WRITE함 2) 슬레이브는 특정값에 맞는 데이터를 준비해놓음 3) 마스터가 슬레이브에게 의미없는값을 WRITE함 4) 슬레이브는 특정값을 줌 READ해야하는 레지스터는 SPDR입니다...

아트메가/이론 2023.02.19

ATMEGA128 SPI통신 알아보기 1편

안녕하세요. 오늘은 ATMEGA128로 SPI통신에대해 알아보겠습니다. 이 글에서는 SPI통신 WRITE만 알아보고 실제로 8*8 dot matrix(MAX7219사용)을 제어해보겠습니다 기본적인 SPI개념은 아래 글 참조바랍니다 https://wowon.tistory.com/231 SPI통신 아두이노와 오실로스코프로 확인해보기 1편 안녕하세요. 오늘은 SPI통신에 대해 알아보겠습니다. SPI란 Serial Peripheral Interface의 약자입니다. 특징으로는 데이터를 동시에 보내고 받을 수 있는 전이중 모드를 지원하는 동기식 직렬 통신 인터 wowon.tistory.com https://wowon.tistory.com/276 SPI통신 아두이노와 오실로스코프로 확인해보기 2편 안녕하세요. 오늘..

아트메가/이론 2023.02.05