스마트 컨트롤러 - 시리얼 통신 UBRR register

 

학습목표

 

ATmega128A의 데이터시트를 보고 UBRR register의 값을 설정할 수 있다.

전처리언어로 UBRR register 값을 설정하는 내용을 코딩할 수 있다.

Clock을 건드릴 수 있는 레지스터는 UBRR이다. UBRRBaud Rate Generator을 조작하여 클럭 속도를 조절할 수 있다.

 

UDR은 전송할 정보를 입력하면 Transmit Shift Register에 해당 정보를 전달한다. Shift Register라고 칭하는 이유는 병렬식이 아닌 직렬식이기 때문에 데이터를 하나를 밀어서 전송하기 때문이다.

 

Shift Register는 보내고 받는 쪽에 하나씩 즉 쌍으로 필요하다.

 

데이터를 주고 받을 때 데이터 신호의 길이에 대한 기준이 필요하다. 이것을 제공해 주는 것이 Baud Rate Generator이다.

 

UDR의 주소는 같지만 TransmitReceive로 나뉜다. 송신과 수신에 따라 UDR은 명령어를 자동분류하여 명령어를 해석한다.

 

//ARM CPUUDR의 송수신 레지스터가 따로 분리되어 있다.

 

UCSRA, UCSRB, UCSRC를 추가시켜 보자.




 

UBRR값을 코딩하여 삽입해 보자.



 

 

UBRR register 표를 보면

앞에 4bit를 사용하지 않고 뒤에 12bit만 쓴다.

//이진수 bitflag로 비유하기도 한다.

//set = 1, clear = 0

 

7bit는 버퍼가 차 있는지 아닌지를 표시해준다.(전송시 1, 비전송시 0)











 

 

 

반응형

'Busan IT > 스마트 컨트롤러' 카테고리의 다른 글

PIC16F917 카운터 업&다운 코딩  (0) 2015.03.26
ATmega를 이용한 시리얼 통신 설정  (0) 2015.03.25
직/병렬 통신과 USART  (0) 2015.03.23
1  (0) 2015.03.20
LCD 기본 프로그래밍  (0) 2015.03.19
Posted by newind2000
Busan IT/디지털 제어2015. 3. 24. 13:44

디지털 제어 - 가산기 실습 대비 및 회로도 연습

 

학습목표

 

반가산기와 전가산기를 OrCAD로 그릴 수 있다.

반가산기와 전가산기를 브레드보드에 만들 수 있다.

 

1. 프로테우스에 회로도를 그려본 후 제대로 작동하는지 확인해보자.

2. 작동을 확인한 후에 OrCAD로 회로도를 그려보자.

3. 브레드 보드에 회로를 만들어 보자.


<74HC86>

<74LS00>

<74LS14>

<74HC32>














반응형
Posted by newind2000

/병렬 통신과 USART

 

학습목표

 

/병렬 통신에 대하여 이해한다.

USART에 대해서 이해하고 데이터 시트를 보고 ATmegaUSART에 대하여 파악할 수 있다.

모든 데이터가 선 하나를 통해 전송되는 방식을 시리얼(Serial) 방식이라고 한다.

 

여러 가지 선을 통해 데이터를 전송하는 방식은 병렬 방식이라고 한다.

 

병렬 방식이 선의 개수 배 만큼 시리얼 방식보다 빠르다. 따라서 속도가 중요시 되는 부분에는 병렬 방식을 사용한다.

 

직렬과 병렬을 절충한 고속 시리얼 방식이 있다.

 

통신 시 데이터 선들은 같은 GND를 사용해야 한다.

 

//장치 연결 시 가장 우선 되는 작업은 GND연결 작업이다.

 

시리얼 통신 시 보내는 선을 Tx, 받는 선을 Rx라고 한다. 기존적으로 GND를 포함하여 3줄이 필요하며, 고속 시리얼 방식에서는 CLK선이 포함되어 총 4줄이다.

 

//USB - Universal Serial Bus

RxTx를 교차하여 단 후 시리얼 통신을 해보자.

변조(modulation)와 복조(demodulation)을 통해 신호를 주고 받는다. 이를 합친 것을 모뎀(modem)이라고 한다.

 

ATmega128ADatasheet를 보자.

 

Ch. 20. USART(Universal Synchronous and Asynchronous serial Receiver and Transmitter)

 

- 전이중 방식

 

- 비동기 또는 동기식 //클럭(clock)선 연결 시 동기화까지 가능하다

 

- Baud Rate = BPS(Bit per Second)

 

- 한 번에 5 - 9 bit의 데이터를 전송, 1 - 2 stop bit

 

- /홀수 패리티(비트 수를 짝수 혹은 홀수로 지정하여 제대로 데이터가 전송되었는지 확인하는 방식)

 

- 데이터가 무리하게 전송되어 전에 데이터를 버리고 새 데이터를 받았는지 확인하는 기능

 

- 프레임 오류 감지기

 

- 3개로 분할된 인터럽트(interrupt)가 존재

 





 

반응형
Posted by newind2000
Busan IT/디지털 제어2015. 3. 23. 17:39

가산기와 감산기의 논리회로 이해와 카르노맵 공부


반응형
Posted by newind2000

1

반응형
Posted by newind2000
Busan IT/디지털 제어2015. 3. 20. 13:16

발진기를 활용한 디지털 시계(카운터의 응용)

 

학습목표 - 발진기를 사용하여 카운터와 역카운터를 만들 수 있다.

100에서 0으로 내려가는 역카운터

60에서 0으로 내려가는 역카운터

규칙을 살펴보면 7483회로는 입력된 수의 +1을 결과 값으로 보내주는 역할을 한다. 때문에 우리가 역카운트를 원하는 수의 -1인 값을 리셋 조건으로 넣어주면 원하는 수부터 역카운터가 된다.

 

10의 자리 역카운터는 일의 자리가 리셋이 될 때 한 숫자씩 내려가도록 설정해 주면 된다.

 

 

 

74HC14의 데이터시트를 찾아보고 이것을 발전기로 활용하여 역카운터를 만들어 보자!

 

1. 74HC14의 데이터시트를 찾아보고 어떻게 발진기를 만들지 고민해 본다.

 

2. 발진기를 만들고 나면 Clock자리에 발진기를 대체시켜 주자.

 

 



74HC14의 기능은 Input에 반대되는 Output을 출력한다는 것이다.

 

우선 프로테우스를 활용하여 제대로 된 출력 값이 나오는지 확인해 보자.









반가산기와 가산기를 작성하는 연습을 지속적으로 할 것이다.

 

시험은 가산기와 감산기를 만드는 실습이다회로도는 OrCAD작성하여 제출한다.

 

반응형
Posted by newind2000


HY-1602W-204-LCD.pdf


케릭터 LCD 명령어 설명.pdf


20150318.IAB


20150318.IAD


20150318.IMB


20150318.IMD


20150318.PFI


20150318.PO


20150318.PR


20150318.PRI


20150318.PS


20150318.WK3

LCD 기본 프로그래밍

 

학습목표 - LCD 데이터 시트를 보고 기본 세팅을 프로그래밍 할 수 있다.

 

 

E0일 상태에서는 다른 값이 무엇이 들어간다고 해도 아무런 실행이 되지 않기 때문에 DC(DON'T CARE) 상태라고 부른다.

 

Return Home 명령어를 수행하면 커서의 위치는 왼쪽 최상단으로 이동하게 된다.

 

 

 

AVR을 통해 명령어 전송할 때 다음과 같은 내용을 선택해야 한다.

 

1. Instruction(L)/Data register(H) 선택

 

2. Read(H)/Write(L) 선택

 

3. Bus를 통해 명령어 선택

 

4. Enable(H)을 통해 활성화 선택

//DB 명령어에서 가장 앞에 1이 무엇이냐에 따라 명령어가 결정된다.

 

 

 

Entry Mode에서 I(H)increase방식으로 글자를 쓰면 다음 글자가 우측에 씌여 진다.

D(L)decrease방식은 글자의 좌측에 다음 글자가 씌여 진다.

 

Display ON/OFF Control3에서 Dset display로써 1(H)을 넣어야 화면에 글자가 출력된다. 이 때 DB01(H)를 입력하면 커서가 깜빡거린다.

 

Cursor or Display Shift는 커서를 화면에 표시할지 선택하는 명령어이다.

 

 

// A = U 0100 L 0001 -> 65 ASCII code 와 일치한다!

 

 

FND500(7 segment)를 획득하였습니다.



 

 

 

반응형
Posted by newind2000
Busan IT/디지털 제어2015. 3. 19. 13:55

T 플립플롭, 역카운터 만들기

 

지난 시간에 만들었던 역카운터를 계속 만들어 보자.

 

T 플립 플롭은 JK 플립플롭의 일종이다. 차이점은 JK를 하나로 묶어준 것이다.



비동기 입력을 사용하면 우리가 사용한 AND회로가 필요 없어진다.

 

//위에 Active low 마크를 잘 봐두자!

 

PR0인 경우에 Q는 무조건 1, CLR0인 경우 Q바는 무조건 1



비동기식 카운터에서 주파수 쪽으로 넘어가도록 한다.

 


반응형
Posted by newind2000

스마트 컨트롤러 - 변수 공유 및 보완을 위한 명령어/LCD datasheet를 토대로 한 ATmega 기초코딩

 

학습목표

 

명령어 static/extern를 이해할 수 있다.

LCD datasheettimetable을 보고 LCD 작동을 위한 코드를 작성할 수 있다.

 

externstatic의 활용

 

전역변수에 static을 앞에 붙이면 외부파일에서 해당 변수를 사용할 수 없게 되고 전역변수에 extern을 사용하면 해당 함수를 외부파일에서 사용할 수 있게 된다.

 

static은 보완 또는 공유방지 목적으로 사용된다.

 

staticextern이 동시에 사용되는 경우에는 static이 우선적으로 작용한다.

= static > extern




해당 신호를 바탕으로 프로그램을 작성해야 한다.

 

하나씩 분석해 보자!

 

명령어를 실행시키기 위해서는 E를 실행시켜야 한다.

 

 

RSRW를 설정해 놓고 E를 활성화 해야 한다. 구체적인 데이터는 데이터버스를 활용하여 알아낼 수 있다.

 

여기서 enabletrigger로써 데이터 전송에 결정적인 역할을 한다.

 

장치에 대한 프로그램을 driver라고 한다.

우선 초기화를 해보자.

 

함수의 prototype은 헤더파일의 끝에 넣도록 하자. //이유는 다음에 설명

 

금일(3/18)까지 작성한 코드는 다음과 같다.





 

 

반응형

'Busan IT > 스마트 컨트롤러' 카테고리의 다른 글

1  (0) 2015.03.20
LCD 기본 프로그래밍  (0) 2015.03.19
LCD 프로그래밍을 위한 기초 작업  (0) 2015.03.17
포인터의 이해&LCD Datasheet  (1) 2015.03.16
1차원 배열의 입력과 출력  (0) 2015.03.13
Posted by newind2000
Busan IT/디지털 제어2015. 3. 18. 13:49

디저털 제어 - JK flip-flop을 활용한 카운터

 

학습목표

 

JK flip-flop을 활용하여 카운터로 시계를 만들 수 있다.

JK flip-flop을 활용하여 역카운터를 만들 수 있다.





 

<주의할 점>

 진수의 표현

- 각 자리 마라 어느 숫자까지 표시가 되는지 확인하고 해당 자리에 도달하면 리셋을 입력해 주어야 한다.



 

반응형
Posted by newind2000