본문 바로가기

분류 전체보기76

Interrupt Interruptgoal: Push switch를 이용하여 LED Toggle하기Interrupt vs Polling 비교[Interrupt]하드웨어적으로 hardware의 변화를 감지하여 외부로부터의 입력을 CPU가 알아채는 방법CPU가 다른 일을 할 수 있는 상태인터럽트 발생시 해당 task를 수행 후, 다시 하던 일로 돌아옴CPU가 다른 일을 할 수 있는 상태이지만, 다시 해당 task로 순서가 돌아오려면 시간차이가 발생 = Overhead[Polling]hardware의 변화를 지속적으로 읽어들여 변화를 알아채는 방법CPU가 다른 일을 하지 않고 계속 변화를 관찰하므로, 즉각적으로 상태를 알아낼 수 있다. 한 cycle을 돌아야 상태 변화를 check 할 수 있다. Interrupt의 종류Inte.. 2025. 1. 20.
[마이크로프로세서] 마이크로프로세서를 활용한 임베디드 제어 시스템 이해 마이크로프로세서(uP) vs. 마이크로컨트롤러(uC)마이크로프로세서(uP)CPU외부 메모리와 i/O 구성요소 필요노트북, 데스크탑, 자동차 ECU 등 고성능 시스템에 사용마이크로컨트롤러(uC)uP +메모리(RAM/ROM) + 입출력 인터페이스특정 작업을 수행하는 임베디드 시스템에 사용마이크로 프로세서 구조Peripheral: CPU 주변의 hardware컴퓨터/ MCU에 연결된 외부/ 내부 장치General Purpose Input/OutputTimerAnalog Digital ConverterDirect Memory Access통신: UART, SPI, CANPeripheral 제어Register를 사용하여 제어Register 값을 read/ write최소 1bit 단위로 정보를 저장/ 수정TC275 .. 2025. 1. 20.
마이크로프로세서의 전장시스템 활용 자동차의 전자제어ACC, ABS, TCS, VDC, TPMS 등 기계식 -> 전자식 제어 장치자동차에 설치된 여러 센서에서 데이터를 받아 ECU에서 연산을 한 뒤 차량 장치를 제어하는 것Sensor: 차량 속도, 악셀레이터/ 브레이크 페달 각도, 조향 각도, 대기온도ECU(Eletronic Control Unit)통신(Communication)자동차 내 ECU간, 자동차 간, 자동차와 인프라 간의 데이터 교환Telematics = Telecommunication + informaticsgoal: 통신 delay 감소, cyber security 문제 자동차 통신 네트워크종류: CAN, CAN-FD, FlexRay, LIN응용: 차량 상태 원격 진단, 고장시 점검/ 정비소 안내자동차 관련 표준과 프로세스자.. 2025. 1. 17.
[Arduino] 자료형, byte와 int의 차이 아두이노에서 자료형은 변수의 크기, 메모리 사용량, 저장할 수 있는 값의 범위를 결정한다. 기본적으로 C/C++기반이기때문에 C언어의 자료형과 유사하다.1. boolean크기: 1바이트 (8비트)값의 범위: true 또는 falseboolean ledState = true; // true = 1, false = 02. char크기: 1바이트 (8비트)값의 범위: -128 ~ 127 (부호 있는 값) 또는 0 ~ 255 (부호 없는 값으로 사용 시)용도: 문자 저장.char myChar = 'A'; // 문자 'A' 저장3. byte크기: 1바이트 (8비트)값의 범위:0 ~ 255 (부호 없는 정수)음수를 표현할 수 없음사용 예시:작은 정수, 이진 데이터를 다룰 때 유용 (예: 센서 데이터, 비트 연산)... 2025. 1. 15.
[Arduino] Cooling Fan 예제 아두이노오픈 소스를 기반으로 한 단일 보드 마이크로컨트롤러로 완성된 보드와 관련 개발 도구 및 환경다수의 스위치나 센서로부터 값을 받아들여, LED나 모터와 같은 외부 전자 장치를 통제함으로써 환경과 상호작용이 가능한 물건을 만들 수 있다.Arudino UnoHelloWorldint count = 0;void setup() { Serial.begin(115200); pinMode(LED_BUILTIN, OUTPUT);}void loop() { Serial.print("HelloWorld:"); Serial.println(count++); digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(10.. 2025. 1. 14.
[C] 로또 추첨 예제 #include #include #include #include #define MAX_LOTTO_NUMBER 45void generateLottoNumber(int lottoNum[7]) { int cnt = 0; // 뽑은 lottoNum 개수 srand((unsigned)time(NULL)); while(cnt 2025. 1. 13.