728x90
반응형
Atmega 에서의 송수신포트
※ PORT이름이 하나만 있는 경우에는 한가지의 역할만 수행한다.
(같은 PORT이름으로 여러개 존재하는 경우에는 갯수만큼 같은 역할가능하다 )
기판의 발전
①과거에는 회로와 트랜지스터를 직접연결하고 -> ②트랜지스터 핀과 선을 각각 연결(논리회로 수업에서 배웠던 방법)
③에칭기법
- 인쇄 회로 기판의 배선 형성을 위해 도체(동박)을 제거하기 위한 공정에도 이용된다. (출처_위키백과)
- 에칭기법을 이용하여 많든 기판을 사용하였다.
④ PCB(print circuit board)
- 종이에 출력하듯이 보드에 프린트하는 방식으로 만들어진 기판을 말한다. 대부분 자동화 되어 있고 현재 사용하고 있는기판들은 대부분 PCB이다.
전자파의 영향을 받지 않도록 회로를 그려서 노이즈(잡음)을 타지 않게끔 설계가 되어진다.
※ 잡음을 유입시키지 않도록 하는것 (impedence 기법)
시리얼 통신
- 시리얼 통신을 RS-232 또는 RS-485라고 부른다.
- 232통신(UART)은 선, 전압, 통신방법에 대한 각각의 표준을 가지고 있다.
RS - 232 전압 레벨
- ATmega의 전압(5V)와 UART(±12V, 232통신)의 전압 차이가 있기 때문에 변환장치로 접압을 낮추고 들어오거나 나가야 한다.
(ATmega 와 ARM은 보드에 변환장치가 없기때문에 주의해야 한다. )
- 만약 다른 AVR과 AVR이 서로 연결된다면 변환장치 필요없다(전압이 같기 때문에).
UART BLOCK DIAGRAM
① UBRR(레지스터): 보레이트 생성기(보레이트를 만든다) 1초에 몇 bit를 보낼껀지 속도(상황에 따라 다르게)를 setting한다.
BAUD RATE GENERATOR: UBRR 에서 셋팅된 보레이트(속도)를 발생시키는 일을 한다.
② Clock Generator: 디지털신호발생기(I/O)
③ OSC: main에서 오는 전기적 신호
④ SYNC LOGIC -> PIN CONTROL -> XCK: 동기통신을 위한 신호선
※ UART는 비동기(통신)방식이나, ATmega에 동기 통신을 위한 신호선이 존재한다.
아날로그 신호 -------------------------> 디지털 신호
- 아날로그 신호를 ATmega에서 받아서 speed grade(동작주파수, 16MHz)지나 가면서 디지털 신호를 만든다(OSC)
- 비동기방식: 장치로 보내는 값은 ' 000100 ' 이라고 했을때 비동기 방식에서는 장치가 ' 0 '값을 인식하지 못하므로 값의 앞과 뒤를넣어준다
'앞 000100 뒤' 이렇게 넣어주면 앞, 뒤, 1(high)값이 인식가능하며 앞(1 byte), 뒤(1 byte), 1(1 byte) 총 3byte가 가야하므로 느려지게 된다.
- 동기방식: clock을 값과 동시에 주기 때문에 비동기 방식보다 빠르나 선들이(clock을 위한 선들) 더 들어가게 되고 비용이 더 발생하는 단점이 있다.
- 아래와 같이 보내는값이 만약 ' 000100 ' 라고 하면 장치가 받아들일때 ' 0 ' 이 먼저와야 하는데 원래 LOW에 있다가 값이 전달되기 때문에 언제 ' 0 ' 이 가는지 알수 없다. 이 문제를 해결하기 위해 값을 보냄과 동시에 clock를 주면 clock이 들어옴과 동시에 값으로 받아들이므로 data 판단이 용이해지고 정확한 data를 보내기에 좋다.
⑤ UDR: 송수신(read & write)이 다르게 선택된다(위 오른쪽 그림), 크기(Tx)는 8bit 이며, UDR 에서 TRANSMIT SHIFT REGISTER로 그대로 들어간다
TRANSMIT SHIFT REGISTER: 전송할때 밀어내는 레지스터
(전송시 보레이터 맞춰서 밀어내면서 전송한다. 셋팅해놓은 속도를 조정해서 데이터를 전송하는 레지스터
⑥ PARITY GENERATOR: 각각의 bit로 밀어 낼때 잡음을 감지할수 있는 추가 비트를 보낸다.
* OPTIONS
a. 1의 갯수가 홀수 일 경우: 0
b. 1의 갯수가 짝수 일 경우: 1
c. PARITY BIT 넣지 않는 경우
- 위의 그림의 경우 1의 갯수(high)는 5개 홀수 이므로 추가 비트를 ' 0 '으로 넣으면 잡음으로 인해서 LOW값이 HIGH 값으로 인식되면
1(HIGH)의 수가 짝수가 된다.
이때 추가비트를 홀수로 넣어줬을경우에 추가 비트와 data의 비교를 통해서 에러가 발생한다.
⑦ PIN CONTROL -> TxD: shift에서 나간다(Tx) 1bit씩 밀어낸다 10101101 -> HLHHLHLH(10110101)뒤집혀서 나간다.
- 1초에 8bit가 전달되므로 8bit/sec = 8bps
⑧ RECEIVE SHIFT REGISTER: 받는 장치가 8bit 를 확보해놓고 -> 10101101로 들어간다(READ)
⑨ CLOCK RECOVERY & DATA RECOVERY: 받는쪽과 주는쪽의 속도와 PARITY가 일치해야 한다.
⑩ PARITY CHECKER: 홀수 짝수 있고 선택하지 않을수도 있다. 그래서 들어와서 받을때 parity checker을 통해서 PARITY BIT(추가비트)를 줄것인지, 주지 않을 것인지 정할 수 있다.
데이터 수정
- [UART.c, UART.h], [LCD.c, LCD.h] 파일들을 모두 기능에 따라서 나눠서 만든다.
장점: 문제가 생길경우 모든 소스파일들이 기능에 따라 나눠져 있기 때문에 수정이 간편하다.
- 소스파일과 헤더파일을 만들어도 실행되지 않는다. 이러한 문제점을 해결하기 위해 makefile을 수정한다.
- TARGET(변수명) = main(값)
변수선언을 의미한다
- SRC = $(TARGET).c
TARGET자리에 main.c가 대입된다. main.c 말고 다른 소스파일을 넣고 싶다면 위의 그림과 같이 _ (한칸 띄우고) 소스파일명을 적어주면 컴파일 가능하다.
fopen 함수 호출
- 위의 그림에서 처럼 MEMORY의 data를 HDD로 옮기기 위한 메커니즘을 할수 있게 하는 함수가 fopen이다.
: 반대의 개념, 파일을연다(fopen), 파일을 닫는다(fclose).
- 기본적으로 C에서 stdout, stdin, stderr은 자동으로 열려있다.
- 유닉스에서 장치를 제어할때 장치들을 파일로 취급하였다. 즉 장치를 제어할때 파일에 접근하여 제어하도록 하였다. 그래서 C에서도 장치(화면)을 파일로 취급한다.
- w 모드에서는 파일이 없을경우 생성하므로, 아래 소스의 test.aaa 파일을 만들고 주소 fp에 hello를 출력하라고 했기 때문에 만들어진 파일 test.aaa안에 hello 찍히게 된다.
728x90
'코스웨어 > 14년 스마트컨트롤러' 카테고리의 다른 글
2014.05.02 교육보고 (20. 이경진) (16) | 2014.05.06 |
---|---|
2014.04.29 교육보고 <오영주 18번> (14) | 2014.04.30 |
2014.04.28 교육보고 <오두환 17번> (20) | 2014.04.28 |
2014년 4월 25일 양태영 [출석번호 16번] (13) | 2014.04.25 |
2014년 04월 23일 손병규_출석번호 14 (18) | 2014.04.23 |
20140422서상우_수업보고서 (19) | 2014.04.22 |
20140421 일일보고 박영주 (17) | 2014.04.21 |
20140418 문대영 일일보고서[11번] (17) | 2014.04.18 |