본문 바로가기
코스웨어/15년 스마트컨트롤러

2015-10-29 업무일지 천정호

by 알 수 없는 사용자 2015. 10. 30.
728x90
반응형

Raspberry Pi 2


Char LCD - P.288

Char LCD는 8Bit 모드와 4Bit 모드가 존재하는데 ATMega나 ARM의 경우에는 연결할 핀이 많이 있지만 라즈베리파이의 경우에는 연결할 핀의 개수가 40개로 구성이 되어있다.

그렇기 때문에 라즈베리파이에서는 대부분 8Bit 모드대신 4Bit 모드로 Char LCD를 사용한다.

8Bit 모드는 데이터버스를 0 ~ 7번까지 모두 다 쓰지만 4Bit 모드에서는 데이터버스를 4 ~  7번까지만 사용을한다.(0 ~ 3번의 핀연결은 하지않고 열린상태로 둔다)


그래픽 LCD - P.301

GPS - P.323

GPS 모듈의 RX, TX를 통하여 UART 통신을 이용하여 좌표값을 받을 수 있다.

GPS를 이용하여 시간, 속도, 좌표등 여러가지 정보들을 알아낼수 있다.


IR 리모컨 - P.340

적외선 센서에 VCC, GND를 연결하고 Output을 연결하면 적외선을 쏠때마다 PWM 파형이 발생되고 수신기에서 파형을 읽어 값을 계산하여 각각의 명령을 수행한다.


원격 CCTV - P.356


위의 내용들은 모두 모듈을 구매하여야 실습이 가능하기 때문에 실습은 생략하고 넘어간다.


RPi NAS - P.405

이전에 SamBa를 미리 구축하여 사용했기때문에 생략한다.

이름만 거창하게 RPi NAS라고 하지만 SamBa와 같다.


라즈베리 파이 C 프로그래밍 - P.421

- 온습도 센서 P.433

온습도 센서(DHT22 / AM2302)

MCU와 센서의 통신 절차



온습도 센서 값 구하기

총 40비트의 데이터가 있는데 16비트는 습도 중간 16비트는 온도 마지막 8비트는 체크섬으로 구성되어있다.
초기의 16비트를 10진수로 변경하여 나누기 10을 하게 되면 습도 퍼센테이지가 나오게 되고
중간의 16비트를 10진수로 변경하여 나누기 10을 하게 되면 섭씨온도가 나오게 된다.

이 습도와 온도가 제대로 나왔는지 확인하기 위하여 전체 40비트를 앞에서 8비트씩 끊어서 모두 더한 값을 체크썸값과 비교하여 두값이 같으면 올바른 데이터가 나온것이다.





Assembly

7.1 문자열


문자열을 조작하기 위한 5가지 명령어

movs - Move String

cmps - Compare String

scas - Scan String

stos - Store String

lods - Load String


Assembly에서 문자열은 C언어의 배열에 문자를 하나씩 넣는것과 같은 형태이다.


response BYTE 20 DUP (?)                    ; 1Byte짜리 20개 생성

wordString WORD 50 DUP (?)                ; 2Byte짜리 50개 생성

arrayD DWORD 60 DUP (0)                    ; 4Byte짜리 60개 생성




Assembly에서 문자열의 주소를 가르키는 명령은 두가지가 존재한다.


시작을 가르키는 명령은 ESI, 목적지를 가르키는 명령은 EDI이다.


문자열이 한번에 이동할수 있는 크기는 B, W, D(B - Byte, W - Word, D - Double Word)가 존재하며 이렇게 한번에 이동할 수 있는 크기를 가르켜 Suffixes라 부른다.



DF Flag

DF Flag는 문자열 복사가 일어날때 변화가 일어나는 Flag로서 DF Flag가 1이면 문자열을 복사하는 ESI, EDI 레지스터의 값이 1씩 감소하게 되고 반대로 DF Flag가 0이게 되면 ESI, EDI의 레지스터값이 1씩 증가하게 된다.


방향 Flag 설정 CLD, STD

CLS - DF Flag를 0으로 설정

STD - DF Flag를 1로 설정


movsb, movsw, movsd 명령이 Clock Cycles이 높은이유는 메모리 대 메모리로 데이터의 이동이 발생되기 때문에 Clock Cycles이 높은것이다.


728x90