전체 글 272

CLCD MCU없이 제어하기(ADM1602) 1편

안녕하세요. 오늘은 CLCD를 MCU없이 제어해보겠습니다 데이터시트 일반적인 방식으로 CLCD를 아두이노에 연결해서 제어하면 라이브러리를 사용하므로 복잡하지않습니다. 근데 이 글에서는 데이터시트를 보고 회로를 직접 구성해서 아두이노가 하는 역할을 수동(버튼)으로 제어해보겠습니다. 핀설명 위 그림의 맨왼쪽이 Pin1입니다 Pin Symbol Function Point 1 Vss CLCD 전원 - 0~7V 2 Vdd CLCD 전원 + 3 V0 글자 밝기 일반적으로 가변저항 연결해서 글자밝기 설정함 4 RS CLCD세팅설정 or CLCD 데이터입력 설정 토글스위치로 연결해서 0 or 1을 입력합니다 0 : 세팅설정 1 : 데이터입력 5 R/W Read/Write 모드 설정 Read는 사용하는경우가 거의 없으므..

회로이론/활용 2022.07.09

아두이노 I2C Address 주소 찾기

안녕하세요. 오늘은 I2C Address 주소찾기를 해보겠습니다. 사용한 보드는 Arduino-UNO입니다. (SDA:A4 , SCL:A5) 사용할 함수는 세개입니다. - Wire.begin() : I2C를 사용할 수 있게 초기화합니다. - Wire.beginTransmission(address) : 슬레이브 주소전달 함수입니다. (주소는 7bit) - Wrie.endTransmission() : write()에 의해 대기중이였던 데이터를 전송하고, 통신을 종료합니다. 이 함수의 리턴값에 따라서 슬레이브가 데이터를 수신했는지 알 수 있습니다. 0: 성공 1: 데이터가 너무 길어 전송 버퍼에 맞지 않음 2: 주소 전송 시 NACK 수신 3: 데이터 전송 시 NACK 수신 4: 기타 오류 Wire.begin..

ATMEGA128 - USART(UART) 통신 코드

안녕하세요. 오늘은 ATMEGA128 - USART(UART)통신 코드를 올리겠습니다. 사용IDE : atmel studio(microchip studio)입니다. 사용MCU : ATMEGA128 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 #define F_CPU 16000000UL #include #include #include #include char receive_buf = 0; /* UART0 */ ISR(USART0_RX_vect) { receive_buf = UDR0; } void ..

STM32-HAL라이브러리 __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); 알아보기

안녕하세요. 오늘은 STM32의 HAL라이브러리에있는 함수 __HAL_FLASH_PREFETCH_BUFFER_ENABLE();에 대해 알아보겠습니다. - PREFETCH? 일단 알아보기전이 프리패치(PREFETCH)를 알아야 합니다. PREFETCH는 메모리관리 정책으로 로딩할때 빠르게 명령어를 실행하려고 사용합니다. 이 글을 참고하면 좋습니다(https://forum.allaboutcircuits.com/threads/stm32-or-arm-in-general-usage-of-prefetch-buffer.175064/) __HAL_FLASH_PREFETCH_BUFFER_ENABLE();? FLASH PREFETCH BUFFER를 ENABLE하는 함수입니다. 선언은 아래처럼 되어있습니다. #define ..

STM32/STM32 2022.06.10

MCU-push pull 알아보기

안녕하세요. 오늘은 push pull에 대해 알아보겠습니다 - push pull란? 일반적으로 IO를 출력모드로 설정하고, 1을 세팅하면 +, 0을 세팅하면 -로 포트가 설정되는 모드가 push pull 모드입니다. 예를들어 위의 그림과 같은형태로 사용합니다. PB0을 OUTPUT MODE로하고 1을 넣으면 LED가 켜지고 0을 넣으면 LED가 꺼집니다. -P-MOS, N-MOS동작방법 Vgs 0이면 ON됩니다. -push pull 구조 내부적으로는 위와같은 형태로 되어있습니다. 쉽게 생각하면 N-MOS와 P-MOS는 전기 스위치라고 보면 되고 N-MOS는 1이면 켜지고 P-MOS는 0이면 켜집니다. GPIO OUTPIN BIT가 LOW면 GPIO OUTPUT PIN에 그라운드가 연결되고, GPIO OU..

MCU지식 2022.06.02

MCU-GPIO구조 알아보기

안녕하세요. 오늘은 MCU의 GPIO 구조에 대해 알아보겠습니다. GPIO블럭도는 STM32데이터시트에 있는걸로 보겠습니다. 그 외의 MCU들도 GPIO구조가 다 비슷하다고 생각합니다. (1) PULL-UP, PULL-DOWN설정 : 입력부분의 풀업, 풀다운 설정하는 부분입니다. (2) Open drain, Push-pull : 출력부분의 오픈드레인, 푸쉬풀 설정 부분입니다. (3) Protection diode : 보호용 다이오드입니다. VDD가 3.3V이라고 가정해보고 다이오드작동전압이 0.7V이라고 가정해보고 I/O Pin에 3.3V+0.7V = 4V이상이 들어오면 다이오드쪽으로 전류가 다 빠져서 회로를 보호해줍니다. 그러므로 입력전압을 3.9V ~ -0.7V로 제한시켜서 보호해줍니다. Protec..

MCU지식 2022.05.22

MOSFET란 무엇인가?

안녕하세요. 오늘은 MOSFET에 대해 알아보겠습니다. MOSFET은 스위치 일반적으로 스위치같은 역할이 필요할때 사용합니다. 기본적인 MOSFET에 대해서 알아야 하는점과 동작방식에 대해 알아보겠습니다. MOSFET은 N-MOSFET과 P-MOSFET이 있고 N-MOSFET에 대해서 알아보겠습니다. * N-MOSFET구조 1. GATE OXIDE는 전류가 흐르지 않는 물질입니다. 2. GATE는 전류가 흐르는 물질입니다. 3. SOURCE와 DRAIN은 N형 반도체 입니다 4. Vds는 DRAIN과 SOURCE사이의 전압을 의미합니다 5. Vgs는 GATE와 SOURCE사이의 전압을 의미합니다 6. BODY와 SOURCE는 내부적으로 연결되어있습니다. *N-MOSFET 동작 1. SOURCE와 DRAI..

회로이론/이론 2022.05.21

캐패시터(콘덴서)란 무엇인가?

안녕하세요. 오늘은 캐패시터(capacitor)에 대해 알아보겠습니다. *캐패시터란? 캐패시터는 전기를 저장하는 소자입니다. 캡 이라고도 부릅니다 *캐패시터 구조 캐패시터는 아래의 그림처럼 2개의 도체와 1개의 절연체를 합쳐서 사용합니다. *캐패시터 동작 양쪽 도체에 건전지 +와 -를 연결하면 캐패시터에 전기가 저장됩니다. 건전지 +와 -를 연결하면 전기력선이 생겨서 전자가 이동합니다. 도체의 전위차와 건전지의 전위차가 같아질때까지 전기가 흐릅니다.건전지가 5V라면 캐패시터에 걸리는 전압이 5V가 될때까지 전기가 흐르고 5V가 된다면 아래의 그림처럼되고 전기가 안흐릅니다. *캐패시터 사용하는곳 (1) 디바운싱 그림A를 보면 스위치를 누르기 전에는 PORT가 HIGH상태고 스위치를 누르면 -상태가 됩니다...

회로이론/이론 2022.05.14

C# 스레드 사용하기

안녕하세요. 오늘은 C# 윈폼환경에서 스레드를 사용해보겠습니다. 가장많이 스레드를 쓰는 이유는 메인스레드에서 UI를 변경할경우 렉이 걸리게되는데 그때 스레드를 사용합니다 위의 동영상처럼 버튼을 클릭하면 숫자가 1씩 올라가고 버튼을 클릭하면 숫자가 멈추는 프로그램을 해볼겁니다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 public partial class Form1 : Form { Thread th; int num=0; bool flag = false; public Form1() { InitializeComponent(); } private ..

어셈블리언어 변수선언하기

안녕하세요 . 오늘은 어셈블리언어 변수선언을 해보겠습니다 변수선언은 section .bss와 section .data에 합니다 section .bss 초기화하지 않은 변수를 선언합니다. 변수를 선언할때 변수의 크기를 넣어줘야합니다. resb 1byte resw 2byte resd 4byte resq 8byte resb(Reserve Byte) resw(Reserve Word) resd(Reserve Doubleword) resq(Reserve Quadword) 선언은 「변수명 크기 개수」순서로 하면 됩니다. 1 2 3 section .bss i resb 1 ; 크기가 1byte이고 변수명이 i이고 1개 선언 j resw 2 ; 크기가 2byte이고 변수명이 j이고 2개 선언 cs section. data..