전체 글 81

장치 통합

현재 세그먼트 과정 1 > 2 > 3 > 4 순서대로 킴 + void send_port(unsigned char X, unsigned char port) {     send(X);  // 첫 번째 데이터 전송     send(port);     HAL_GPIO_WritePin(FND_RCLK_GPIO_Port, FND_RCLK_Pin, GPIO_PIN_RESET);     HAL_GPIO_WritePin(FND_RCLK_GPIO_Port, FND_RCLK_Pin, GPIO_PIN_SET); } void digit4_temper(int n, int replay) {   int n1, n2, n3, n4;   n1 = (int)  n % 10;   n2 = (int) (n % 100)/10;   n3 = (..

Task 구조, signal

void main () {        Lamp_init();        while (1)       {             Lamp_on();             time_wait (100); /* wait 100uS */               Lamp_off();             time_wait (100); /* wait 100uS */       } }  Motor도 움직이고싶다.     >  또하나의 main()함수 생성 void main() {         Motor_init();        while (1)       {             Motor_on();             time_wait (100); /* wait 100uS */             Moto..

난방실 만들기

HAL_GPIO_TogglePin(GPIOx, GPIO_Pin); 알아서 on/off 해줌 static 파일내 전역변수 원래 함수끝나면 그 안에서 소멸인데 static으로하면 계속 유지됨 //파일내에선 ex) static uint8_t m_state=0; void heaterControll(uint8_t onoff){ HAL_GPIO_WritePin(RELAY_ON_OFF_CTRL_GPIO_Port, RELAY_ON_OFF_CTRL_Pin, onoff); m_state=onoff; } uint8_t getHeaterState(){ return m_state;  // 함수 내에서는 m_state 에 대한 선언 없어도 사용가능 // 그값은 heeaterControll 에서 사용된 그 값이 유지됨 } 열거형 ..

Embedded Software는 무한 Loop

대부분의 Embedded System : 특정한 목적을 가진 System   >  목적달성 > 한 개의 Software가 동작    >  대부분 무한 Loop를 이용해서 구현  > Embedded System의 기능 + Hardware Control도 구현 while (1) { 뭐라뭐라뭐라 void main () {    Lamp_init();    while (1)    {       Lamp_on();       wait (100); /* wait 100uS */       Lamp_off();                  wait (100); /* wait 100uS */    } } }  100uS동안 Lamp가 켜져 있고, 100uS동안 Lamp가 꺼져 있고를 반복하는 Embedded Syst..

6장) RTOS, Kernel

RTOS, 요즘은 Kernel what is Kernel?  OS 없을 때 : User가 모든 기능을 Software가 처리하도록 처음부터 끝까지 작성 OS 등장 :  Software > Hardware에 자동으로 Loading, 실행해 주는 Monitoring 환경         > 실행만 하면 자동으로 Memory에 Loading ex) DOS  모든 Software 공통점 :  I/O   :  Input을 받고 Output을 해주는 Architecture 사용 ex) 키보드, 모니터    >  Monitoring 환경에 아예 집어 넣고 사용  " Operating System "   >  실행만 해주면 자동으로 Memory에 올려서 실행 가능하게 만들어줌 + I/O를 사용할 수 있도록 해줌 (옛날엔..

linked list, Queue

Inter Process Communication (IPC)을 제대로 하려면   > Queue라는 자료구조 Software에서 사용하는 Data > Queue 주로 이용.  ( Stack : 메모리 주소 ). Stack 과 달리  먼저 넣은 놈 먼저 나옴     >  FIFO : 줄세우기  >  대기행렬 > 일종의 Buffer - Stack : push, pop  Queue : put, get Stack push (0x1); // 저장하는곳의 주소가 높은곳에서 작은곳임 push (0x2);  // push (0x2) > 0x2 라는 주소를 저장하는 값임 push (0x3); // 주의! pop (); /* 0x3이 나옵니다. */ pop (); /* 0x2가 나옵니다. */ pop (); /* 0x1이 ..

릴레이 모듈

릴레이 모듈 (AC Relay) GPIO > HIGH or LOW > like S/W ON ~= TR ex) trigger : LOW > HIGH 였다가 LOW 로 바뀔때 동작 DC+ : 5V DC- : GND IN1 : LOW 받아와야함 > PB5 : HIGH > TR ON > IN1 : 0v > LOW    PB5 : LOW > TR OFF > IN1 : 5V >HIGH NO (6) 에 드라이기 연결 > NC , COM(기준) 평상시    NO , COM  > IN1 : HIGH > LOW 작동      TR : 판판한걸 기준으로 왼쪽1 ( emitter ) , 오른쪽3 (collector)  납땜 도체  도체 연결           // 인두기로 순식간에 녹이고, 금방 굳음 수동확인 > PB5 대신..

온도센서 검증

Ds18b20_ManualConvert(); > DS18B20_StartAll(&OneWire); OneWire_Reset(OneWire); // 리셋 OneWire_WriteByte(OneWire, ONEWIRE_CMD_SKIPROM); // 전체선택 OneWire_WriteByte(OneWire, DS18B20_CMD_CONVERTTEMP); // 온도 변환 시작 명령어 > OneWire_WriteByte(OneWire, ONEWIRE_CMD_SKIPROM); > // 0xCC : Skip ROM 모든 slave들에게 동시 전송 OneWire_WriteByte(OneWire, DS18B20_CMD_CONVERTTEMP);  >  // 0x44 : function 명령어 > convert T : 온도 ..

함수 포인터와 실행 주소 변경

함수의 이름 : Symbol > Physical 주소 점유 실제 함수의 이름 > 함수의 시작주소를 의미 1. 함수포인터의 선언 자료형 (* 함수포인터 이름) (인자목록)  > character형을 가르키는 pointer char * cdata; 포인터 함수  EX) integer형을 return integer형 argument를 하나 받는 포인터함수 int (*function)(int a); int * function (int a);  function 함수 > integer형 포인터를 return받음 포인터 함수 선언   pointer함수 > int recipe(int a)라는 함수 엮으려면 function = recipe; 또는 function = &recipe; 주의) 함수의 이름 : 시작주소를 의..

Stack의 Size

현재 PC : 0x18122C9E인 경우  addr/line__|code_____|label____|mnemonic________________|commentST:18122C90|4010                and     r0,r2ST:18122C92|40C8                lsr     r0,r1ST:18122C94|40CB                lsr     r3,r1ST:18122C96|1A18                sub     r0,r3,r0ST:18122C98|2801                cmp     r0,#0x1ST:18122C9A|D103                bne     0x18122CA4|           {1552|            ..