이전 포스팅에 이어 CAN, SPI와 I2C를 비교해보자. FeatureCANSPII2CCommunication TypeMulti-Master, Multi-Slave, BroadcastSingle Master-Multi Slave (typically)Multi-Master, Multi-Slaved, AddressedPhysical WiringTwo wires (CAN High, CAN Low)Four wires (MOSI, MISO, SCLK, SS)Two wires (SDA, SCL)SpeedUp to 1 Mbps (Standard CAN)UP to several Mbps (usually 10+ Mbps)Up to 3.4 Mbps (High-Speed mode)Data IntegrityHigh (wit..
master device (예: 마이크로 컨트롤러)와 slave device 간에 데이터를 주고받는 방법을 시뮬레이션하는 C로 작성된 I2C 통신 기본 예제를 살펴보자. 이 예제에는 I2C 초기화 함수 설정, 슬레이브로 데이터 전송, 슬레이브로부터 데이터 읽기가 포함된다. 슬레비 장치의 특정 레지스터에 대한 기본적인 읽기 및 쓰기 작업을 보여준다. 실제 애플리케이션에서는 특정 마이크로 컨트롤러의 레지스터와 하드웨어 설정에 따라 코드를 조정할 수 있다.주소 0x3C 에서 슬레이브 장치와 통신하고 있다고 가정하자.마이크로컨트롤러에는 필요한 레지스터 (예: control, status, data 등)가 있는 하드웨어 I2C peripheral이 있다.단순화된 예시이며, 실제 레지스터 이름과 I2C 처리 기능은..
임베디드 시스템과 SPI와 같은 통신 프로토콜에서 Polling은 데이터를 읽을 준비가 되었는지 등 조건이 충족되었는지 확인하기 위해 하드웨어 레지스터나 플래그를 지속적으로 확인하는 작업을 포함한다. Polling은 간단한 접근 방식이지만, 특히 리소스가 제한적이거나 단일 코어 시스템에서는 한계가 있는 것이 사실이다.Polling과 Polling이 시스템 성능에 미치는 영향, 그리고 멀티코어 시스템이 이러한 한계를 완화하는 데 어떻게 도움이 되는지 알아보자. Polling in SPI and General CaseSPI 예제에서 Polling은 "data ready" 플래그 (예: SPI_SR_RXNE)가 설정될 때까지 status register를 반복적으로 읽음으로써 데이터가 완전히 수신되었는지 확..
I2C 는 통신 프로토콜이라는 점에서 SPI와 유사하지만 마이크로 컨트롤러 핀 및 주변 장치와의 연결 방식이 약간 다르다. I2C가 칩에 연결되는 방식과 일반적으로 GPIO 또는 MPIO 핀과 상호 작용한 방식은 아래와 같다. I2C Dedicated PinsMicrocontroller I2C Peripheral: 대부분의 마이크로 컨트롤러에는 I2C 통신에 특별히 최적화된 전용 핀이 있는 I2C peripheral module 이 있다. 이러한 모듈은 일반적으로 I2C 프로토콜에 하드웨어적으로 최적화되어 있으며 자동 타이밍 및 동기화 기능을 제공합니다.I2C PinsSDA (Serial Data Line): 장치 간에 데이터를 전달한다.SCL (Serial Clock Line): 통신을 동기화하기 위해..
마이크로 컨트롤러와 주변 장치 (peripheral devices) 간의 연결 및 통신을 위해 널리 사용되는 통신 프로토콜인 CAN (Controller Area Network), SPI (Serial Peripheral Interface) 와 I2C (Inter-Integrated Circuit) 에 대해 알아보자.CAN (Controller Area Network): CAN 은 자동차, 산업 및 의료용 애플리케이션에 여러 장치를 연겨랗기 위해 자주 사용되는 강력한 저속 통신 프로토콜이다. 특히 열악한 환경에서의 신뢰성으로 잘 알려져 있다.FeaturesMulti-Master Capability: bus가 여유가 있을 때 네트워크의 모든 디바이스가 메시지를 보낼 수 있다.Broadcast Communi..
이전 포스팅에 이어 SPI 에 좀 더 알아보자. SPI_receive (uint8_t received_data = 0xAB; ) 는 앞선 예제에서 데모용으로 사용된 placeholder 다. 실제 SPI_receive 구현에서 수신된 데이터는 고정된 값이 아니며 이러한 방식으로 하드코딩되지 않는다. 대신 SPI_receive 는 SPI 데이터 레지스터 또는 SPI 전송이 발생할 때 자동으로 채워지는 하드웨어 버퍼에서 읽는다. 실제 구현에서 일반적으로 작동하는 방식은 아래와 같다. SPI Registers or BUffers: SPI 마스터가 SPI_send 를 통해 데이터를 전송하면 클록 신호가 MOSI 라인을 통해 데이터를 전송하고 동시에 MISO 라인에서 들어오는 데이터를 전송한다. 슬레이브로부터 도..
Django의 다목적성과 강력한 프레임워크는 단순한 웹사이트와 복잡한 데이터 기반 애플리케이션 모두에 널리 사용된다. Django에 대해 좀 더 자세히 알아보자. Architecture (MVT Pattern)Model: 데이터 구조를 정의한다. 데이터베이스 레이아웃을 나타내며 데이터베이스 상호 작용을 담당한다. 예를 들어, 데이터베이스 레코드 생성 및 업데이트는 모델을 통해 수행된다.View: 사용자 요청을 처리하고, 모델에서 데이터를 가져오고 일반적으로 HTML 웹 페이지 또는 JSON 으로 응답을 렌더링하는 비즈니스 로직 계층이다.Template: 프레젠테이션 계층이다. Django 템플릿 언어를 사용해 사용자의 브라우저로 전송되는 동적 HTML 콘텐츠를 만든다.Key ComponentsDjango..
{{ form.as_p }} 구문은 form의 각 field를 해당 입력 field가 포함된 (paragraph, 단락) 요소로 자동 렌더링하는 Django 템플릿 태그이다. 이는 각 field에 대해 수동으로 HTML을 작성하지 않고도 form을 렌더링할 수 있는 편리한 방법이다. 하지만 {{ form.as_p }} 은 form을 빠르게 렌더링하는 데 유용한대신 여기에는 필요한 사용자 정의가 부족할 수 있다. 각 field를 수동으로 정의하면 표시 및 동작을 더 잘 제어할 수 있다. 다음은 작동 방식과 예상대로 작동하지 않을 수 있는 몇 가지 잠재적인 이유다: What {{ form.as_p }} DoesPurpose: {{ form.as_p }} 는 양식의 form fields에 대한 HTML을 생..
Django에 대해 알아보자. Django는 안전하고 유지 관리가 가능한 웹 애플리케이션을 신속하게 개발할 수 있는 고급 Python 웹 프레임워크다. MVC (Model-View-Controller) 아키텍처 패턴을 따른다. Django에서는 MVT (Model-View-Template) 이라고도 한다. Django는 reusability, scalability, simplicity 를 강조하는 것으로 유명하며 개발자에게 데이터베이스 상호 작용, 라우팅, 사용자 인증 등을 처리할 수 있는 포괄적인 도구 세트를 제공한다. Django의 주요 기능ORM (Object-Relational Mapping): 데이터베이스와 Python 코드를 원활하게 연결한다.Security: SQL injection, cr..
Locaiton Service나 onClick에 대한 Listener (예: LocationCallback with FusedLocationProviderClient 또는 LocationListener with LocaitonManager)는 전통적인 의미에서 별도의 스레드, 서비스 또는 인터럽트로 작동하지 않는다. 위치 업데이트를 처리하기 위해 별도의 스레드가 필요한 경우 (예: 무거운 연산을 윟) Thread, HandlerThread 또는 ExecutorService 를 사용해 명시적으로 생성하고 관리해야 한다. 작동 방식을 아래와 같다. Listener MechanismCallback-Based: LocationCallback 또는 LocationListener와 같은 Listener는 콜백 메..
- Total
- Today
- Yesterday
- ml
- Python
- join
- The Economist
- leetcode
- 파이썬
- 안드로이드
- 오블완
- java
- tf-idf
- 딕셔너리
- vertex shader
- 소켓 프로그래밍
- defaultdict
- C++
- min heap
- 리트코드
- Hash Map
- machine learning
- socket programming
- Computer Graphics
- I2C
- 티스토리챌린지
- Android
- 이코노미스트 에스프레소
- 이코노미스트
- The Economist Espresso
- 투 포인터
- 머신 러닝
- DICTIONARY
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |