20150327.zip

스마트 컨트롤러 - ATmega128a를 사용한 LCD 데이터 전송

 

학습목표 - ATmega128a를 활용한 시리얼 통신으로 입력한 값을 그대로 LCD창에 전송할 수 있다.

 

ATmega128a를 활용한 시리얼 통신

 

발신에 이어 송신도 설정해 보자.

 

수신이 완료될 때까지 while문을 반복시켜 register가 비어 있을 때 shift register를 활용하여 데이터를 전송해 준다.

 

//polling의 힘

 

 

LCD에 나타나는 코드의 윗줄과 아랫줄의 차이가 40byte이다. LCD의 윗줄 아랫줄을 손실없이 사용하기 위해서 커서의 위치를 지정해 주어야 한다.

 

SET CGRAM Address를 활용하여 남은 메모리 영역에 한글을 집어 넣어 보자. 폰트를 디자인하여 메모리에 입력한 뒤 LCD에 출력시키는 것까지.

//인터넷 검색을 활용하자.

 

다음주에는 C를 집중적으로 공부한다.


코드는 첨부한다!

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

디지털 제어 - PIC16F917를 활용한 코딩(카운트, 부저)

 

학습목표 - PIC16917을 활용한 다양한 코딩을 할 수 있다.

 

스위치를 넣었다가 떼면 카운터가 실행되도록 코딩을 해보자.

 

버튼을 누른 시간에 따라 동작이 다르게 되게 하는 코딩을 하려 했으나, 아직 타이머에 대해 배우지 않아 타이머를 배운 후 해당 코드를 작성하도록 하겠다!

 

퀴즈쇼에 나오는 부저 시스템에 대한 코딩을 해보자!

 

- PORT A를 입력으로 사용한다.

PORT A의 핀은 총 3개를 사용한다.

 

- PORT B를 출력으로 사용한다.

- 입력 pull up 저항을 사용한다.

- 출력 Sync type을 설계한다.

- 출력 값 하나에만 불이 들어오게 하고 불이 들어오고 난 후에는 다른 입력 값은 무시한다.

- 리셋하는 입력 값도 만든다.



 

 

반응형

'Busan IT > 디지털 제어' 카테고리의 다른 글

4/1 시험대비 공부  (0) 2015.03.31
PIC16F917를 활용한 코딩(quiz buzzer)  (0) 2015.03.30
PIC16F917을 활용한 LED 불 켜기  (0) 2015.03.25
가산기 실습 대비 및 회로도 연습  (0) 2015.03.24
시험공부  (0) 2015.03.23
Posted by newind2000

스마트 컨트롤러 - ATmega128a를 활용한 데이터 송신

 

학습목표 - ATmega128a를 활용하여 데이터를 PC로 송신할 수 있다.

 

void USART0_TX( unsigned char ucData )

{

// Wait for empty transmit buffer

while ( !( UCSR0A & (1<<UDRE)) );

// Put data into buffer, sends the data

UDRE= ucData;

}

 

Datasheet에 나와 있는 다음의 소스코드를 분석해 보자.

 

UDREn은 버퍼가 비어 있을 때 1이고, 버퍼가 차 있을 때 0이다.

 

위의 while문 안의 조건 UCSR0A0B00010011이고 1<<UDRE(5)0B00010000이다.

즉 버터가 차 있을 때 0을 전송하게 되면 위의 연산의 결과 값은 0이 된다. 여기에 '!'부정이 더해져 1이 되면 루프가 진행된다. 때문에 shift register에 데이터가 전송되지 않는다.

 

//Polling방식: CPU가 한 가지 명령어를 지속적으로 수행하여 다른 일은 할 수 없는 방식

LCD.c

LCD.h

Main.c

UART.c

 

 

UART.h

 

짜잔 결과값!





반응형
Posted by newind2000

디지털 제어 - PIC16F917 카운터 업&다운 코딩

 

학습목표 - PIC16F917의 데이터시트를 보고 카운트 업, 카운트 다운을 출력하는 코딩을 할 수 있다.

 

PIC16F917의 데이터시트 중 Memory 부분을 살펴보자.

 




위의 메모리 주소 값을 참조하여 A0를 누르는 동안 count up, A1을 누르는 동안 count down 사용하여 코딩해보자!




 

LM016L LCD를 활용하여 LCD에 숫자를 출력해 보자. To be continue...



반응형
Posted by newind2000

스마트 컨트롤러 - ATmega를 이용한 시리얼 통신 설정

 

<학습목표>

 

UCSR 레지스터 값을 ATmega128A의 데이터시트를 보고 설정할 수 있다.

ATmega를 이용한 시리얼 통신을 위한 초기화 함수를 만들 수 있다.

 

지난 시간에 봤던 UCSR 레지스터의 값을 설정해 주기 위한 코딩을 한다.

 

우선 Smart.h 파일에 define 해준다.

USCR 레지스터에 원하는 설정 값을 입력해준다.

 

<UCSRnA register>

 

7th bit - RX: 수신이 완료되면(자료를 다 받아들이면) 0 -> -

6th bit - TX: 전송이 완료되면 1 -> -

5th bit - EMPTY: shift register에 데이터가 없는 경우(전에 데이터를 다 보낸 경우) -> -

 

//5th bit에서 자료가 남아 있는 상태에서 TX로부터 자료를 받게 되면 덮어쓰게 되어 버리기 //때문에 shift register가 비어있는 것을 확인한 다음에 자료를 받아야 한다.

 

4th bit - FE: 자료 세트가 전송되는데 잡음 유무를 확인하는 bit 에러가 있으면 1 -> -

3rd bit - DOR: 기존에 있던 자료에 전송된 데이터를 엎어 쓰는 경우 1 -> -

2nd bit - UPE: 패리티에러가 있는 경우에 1 -> -

1st bit - U2X: 보통 속도 0 -> 0

Zero bit - MPCM: 1일 때 주소 정보를 가지고 있지 않은 정보는 모두 무시된다. 0으로 설정 -> 0

 

 

 

//비동기식 데이터 송신 방식에서 데이터와 head, tail을 합친 것을 프레임(frame)이라고 한다.

 

<UCSRnB 레지스터>

Bit 7 - RXCIE: 수신 interrupt 활성화 시 1 -> -

Bit 6 - TXCIE: 송신 interrupt 활성화 시 1 -> -

Bit 5 - RDRIE: 데이터 empty interrupt 활성화 시 1 -> -

Bit 4 - RXEN: USART 송신 활성화 시 1 -> 1

Bit 3 - TXEN: USART 수신 활성화 시 1 -> 1

Bit 2 - UCSZ: 글자 크기 -> 0

Bit 1 - RXB8n: 8비트 데이터 수신에서 추가 비트 사용(9bit) -> -

Bit 0 - TXB8n: 8비트 데이터 송신에서 추가 비트 사용(9bit) -> -

 

 

<UCSRnC 레지스터>

Bit 6 - UMSEL: Clock 사용 여부, 비동기식 0, 동기식 1 -> 0

Bit 5 - UPM1: 패리티 생성기와 체크기 활성화, 짝수 패리티 1 -> 1

Bit 4 - UPM0: 패리티 생성기와 체크기 활성화, 짝수 패리티 0 -> 0

Bit 3 - USBS: 스톱 bit 선택 1bit0, 2bits1 -> 0

Bit 2 - UCSZ1: 글자 크기 8bit1 -> 1

Bit 1 - UCSZ0: 글자 크기 8bit1 -> 1

Bit 0 - UCPOL: 클럭 양극화, 동기식만 사용 -> -

작성한 USART.cUSART.h의 코드를 보면,



main.c 파일로 가서 초기화시키는 INIT함수를 만들어보자.


반응형

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

ATmega128a를 활용한 데이터 송신  (0) 2015.03.26
PIC16F917 카운터 업&다운 코딩  (0) 2015.03.26
시리얼 통신 UBRR register  (0) 2015.03.24
직/병렬 통신과 USART  (0) 2015.03.23
1  (0) 2015.03.20
Posted by newind2000
Busan IT/디지털 제어2015. 3. 25. 13:46

PIC16F917을 활용한 LED 불 켜기

 

<학습목표>

 

PIC16F917의 데이터시트를 보고 register 세팅을 할 수 있다.

프로테우스에서 PIC16F917와 프로그래밍을 활용하여 LED에 불을 켤 수 있다.

 

 

요놈을 가지고 놀아보자!

 

우선 microchip.com에 접속하려 PIC16F917과 관련된 자료를 받아보자.

 

----------------------------<다운로드 목록>-----------------------------------

 

1.데이터 시트 - 데이터시트는 위의 그림에 있는 PDF파일의 링크를 눌러 다운로드 받으면 된다.

 

2. MATLAB

3. MPLAB compiler

-----------------------------------------------------------------------------

 

 

2. MATLAB



 

3. MPLAB compiler





 

다운 받은 MPLABcompiler를 설치해 주자!

 

 

PIC16F917 실습내용은 다음과 같다.

 

1. LED에 불 깜빡거리기

2. LCD에 글 표시하기

 

//컴파일러는 GCC기반 makefile이 컴파일이 자동으로 생성 된다.

//Debugging tool <PICKit3> 아래

 

PIC16F917의 핀 설명은 아래와 같다.




 

설치가 끝난 MPLAB X IDE를 실행시켜 보자!











 

하드웨어적인 부분이 끝났으니 코딩을 해보자!

 

<설정>

입력은 A0 port를 사용한다.

출력은 B0 port를 사용한다.





반응형
Posted by newind2000

스마트 컨트롤러 - 시리얼 통신 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