Atmel 쪽을 요즘 사용을 안하다보니 신규 디버거나 나왔는지는 모르고 있었다. 


품명은 Jtagice3


관련 홈페이지: http://www.atmel.com/tools/JTAGICE3.aspx


그래서 살펴보니 거의 모든 Ateml 에서 나온 CPU를 사용할수 있고 기존의 ISP 와 JTAG 을 지원한다. 


가격은 약 15만원 부과세 포함해서 17만원 정도  전기적인 안정성이 어떤지 모르겠으나 기존의 


JLINK MKII 를 사용하는 것보다는 편리할것 같다. 


단 사용은 위해서는 studio 6 를 사용해야 하는듯 ~~ 







이쁘게 생겼네~~

'공부 > AVR' 카테고리의 다른 글

Atmel 신규(?) 디버거 Jtagice3  (0) 2013.04.24
[ATMEGA128] 11. EEPROM  (0) 2012.11.09
[ATMEGA128] 10. ADC  (0) 2012.11.09
[ATMEGA128] 9. TWI (I2C)  (0) 2012.11.09
[ATMEGA128] 8.SPI  (0) 2012.11.09
[ATMEGA128] 7.USART  (0) 2012.11.09

 

11.EEPROM

11.1 특징 및 기능

ATmega128은 Byte 단위로 읽고 쓰기가 가능한 4Kbyte의 비 휘발성인 EEPROM 메모리를 내부에 가지고 있습니다. EEPROM은 100,000번까지 쓰고 지울 수 있습니다. 바로 어드레스 단위의 읽고 쓰기를 하지 못하고 관련 레지스터를 이용해 사용 가능합니다.

 

EEPROM 쓰기 동작의 순서는 다음과 같다.

기존에 쓰기 동작이 완료 될 때까지 대기 ( EEWE = 0 이면 완료)

SPMCSR 레지스터의 SPMEN 이 0일 때까지 대기

EEAR 레지스터에 어드레스 기입

EEDR 레지스터에 데이터 기입

EECR 레지스터에 EEMWE = 1, EEWE =0 으로 설정

4사이클 이내에 EEWE = 1로 설정

 

EEPROM 읽기 동작의 순서는 다음과 같다.

기존에 쓰기 동작이 완료 될 때까지 대기 ( EEWE = 0 이면 완료)

EEAR에 읽을 번지 기입

EECR 레지스터에 EERE = 1로 설정

EEDR 에서 DATA 입력

 

1) 레지스터

- EEAR ((EEPROM Address Register High, Low)

읽고 쓰고자 하는 어드레스를 선택 합니다.

- EEDR(EEPROM Data Register)

쓰고자 하는 DATA 또는 읽어진 DATA 값을 가집니다.

- EECR (EEPROM Control Register)

Bit 3, EERIE : 1 을 쓰면 EEPROM Ready Interrupt 가 가능해집니다.

Bit 2, EEMWE : 비트가 1 이 되고 4 클럭 사이클 안에 EEWE 가 1로 셋되면 선택된 주소에 데이터 쓰기가 됩니다. 하드웨어적으로 4 클럭 사이클 후에 0으로 클리어 됩니다.

Bit 1,EEWE : EEPROM 쓰기 가능 비트입니다. 다음 바이트를 쓰기 전에 EEWE 비트가 0 이 되기를 기다려야 합니다.

Bit 0, EERE : EEPROM 읽기 가능 비트입니다.EERE 비트가 1 이 되면 EEAR 레지스터가 가리키는 주소의 데이터를 EEDR 레지스테에 읽어 들입니다.EEPROM 쓰기 동작이 실행중 이면 EEPROM 읽기 동작과 EEAR 레지스터의 내용을 변경하는 것이 불가능합니다. 그러므로 EEWE 비트가 1 인가 0 인가 체크해서 0 이면 읽기 동작을 하여야 합니다.

 

 

'공부 > AVR' 카테고리의 다른 글

Atmel 신규(?) 디버거 Jtagice3  (0) 2013.04.24
[ATMEGA128] 11. EEPROM  (0) 2012.11.09
[ATMEGA128] 10. ADC  (0) 2012.11.09
[ATMEGA128] 9. TWI (I2C)  (0) 2012.11.09
[ATMEGA128] 8.SPI  (0) 2012.11.09
[ATMEGA128] 7.USART  (0) 2012.11.09

 

10.ADC

10.1 특징 및 기능

아날로그 디지털 변환기(A/D 컨버터)는 센서와 같은 소자에서 들어오는 아날로그 값을 디지털 값으로 변경하는 기능을 말합니다. Atmega128의 경우 10비트 축차 근사형의 A/D 컨버터를 1개 내장하고 있다. 입력 받을 수 있는 PIN 이 8개가 있습니다. 내부에 가지고 있는 MUX를 이용하여 채널을 바꿔가며 8개의 PIN중 사용용도에 따라 아날로그 신호선택적으로 입력받을 수 있습니다.A/D 컨버터를 제어하기 위한 레지스터로는 아날로그 디지털 멀티플렉서 선택 제지스터(ADMUX)와 아날로그 디지털 컨버터 제어 상태 레지스터(ADCSR)를 가지고 있습니다.

 

특징

8채널의 입력포트

10비트 분해능

축차 비교형

내부 아날로그 멀티플렉서 탑재

샘플/홀드회로 탑재로 인하여 A/D 동작동안 전압 고정화

단극성 아날로그 입력 및 차동입력 선택 가능

포트F는 아날로그 입력 및 아날로그 비교기 기능으로도 사용 가능

변환시간(13us~260us – 50KHz~200KHz)

ADC 정확도 성능 향상을 위한 독립 전원 구성 가능

입력 전압의 범위는 일반일력에서 0V~Vref 또는 차동입력에서 -Vref ~ Vref 까지 가능

Vref는 VCC전압 또는 내부 레퍼런스 전압(약 2.56V) 또는 외부 레퍼런스 사용가능

 

아날로그 값을 디지털 값으로 변환시 에는 디지털 값의 표현 한계로 인한 양자화 오차 라는 것이 있습니다. 이 오차는 분해능이 높은 ADC 사용으로 극복할 수 있 수 있습니다. 외부적인 노이즈 등의 의한 오차일 경우에는 ADC 변경으로 인해도 그 오차를 잡을수 없습니다. 이때는 입력단에 필터 회로를 넣고 ADC 변환값을 일정 횟수 평균값을 취하여 오차를 줄일수도 있습니다. 또한 AVCC 와 AGND 단에 안정한 전원을 연결하고Vref 단자에 정밀한 외부 레퍼런스를 입력하여 그 오차를 줄일수도 있습니다.

 

1) 레지스터

- ADMUX(ADC Multiplexer Selection Register)

Bit 7, 6 , REFS1~0(Reference Selection Register) : 레퍼런스를 설정한다.

Bit 5, ADLAR(ADC Left Adjust Result) : ADC변경값에 읽는 방식을 설정한다.

Bit 4~0, MUX4~0(Analog Channel and Selection Bit) : 입력 PIN에 대한 설정을 한다.

- ADCSRA(ADC Control and Status Register A)

Bit 7 – ADEN(ADC Enable) : ADC 동작 Enable

Bit 6 – ADSR(ADC Start Conversion) : ADC Conversion 시작 설정

Bit 5 – ADFR(ADC Free Running Select) : ADC를 계속해서 또는 한번만 변환할지 설정

ADFR=1 : 프리런닝모드, ADFR=0 : 단일변환모드

Bit 4 – ADIF(ADC Interrupt Flag) : 인터럽트 발생을 알림

Bit 3 – ADIE(ADC Interrupt Enable) : 인터럽트 발생 설정

Bit 2,1,0 – ADPS2~0(ADC Prescaler Select Bit) : ADC 동작설정

- ADCH/L(ADC Data Register)

ADC 측정한 후 그 값을 저장 합니다. 저장 방식은 두가지며 ADLAR bit 설정에 따라 달라집니다.

 

 

 

 

 

 

'공부 > AVR' 카테고리의 다른 글

Atmel 신규(?) 디버거 Jtagice3  (0) 2013.04.24
[ATMEGA128] 11. EEPROM  (0) 2012.11.09
[ATMEGA128] 10. ADC  (0) 2012.11.09
[ATMEGA128] 9. TWI (I2C)  (0) 2012.11.09
[ATMEGA128] 8.SPI  (0) 2012.11.09
[ATMEGA128] 7.USART  (0) 2012.11.09

 

9. TWI (I2C)

 

9.1 특징 및 기능

 

ATmega128은 4가지의 모드로 구분 됩니다. 마스터 송신 모드(MT), 마스터 수신(MR), 슬레이브 송신(ST), 슬레이브 수신(SR) 이며 각각의 모드에 따라 그 기능이 다릅니다. 특징은 아래와 같습니다.

 

개의 선 (SDA, SCL) 으로 양방향 시리얼 통신을 합니다.

마스터와 슬레이브 동작을 할 수 있습니다.

송신기와 수신기로 동작할 수 있습니다.

7 비트 주소로 최대 128 개의 다른 슬레이브 주소를 만들 수 있습니다.

멀티 마스터 조정(Arbitration) 기능이 있습니다.

최대 400 KHz 데이터 전달 속도를 지원합니다.

SCL 은 클럭 신호로 단 방향으로 항상 마스터가 발생합니다.

SDA 는 양방향으로 데이터를 송/수신 하는데 사용합니다.

 

하드웨어적으로 연결시 주의 해야될 사항이 있습니다. SCL 과 SDA 단자는 오픈 콜렉터 또는 오픈 드레인 방식으로 되어 있어 Wired-AND 기능 지원합니다. 이로 인해 이 단자는 외부에 풀업 저항을 꼭 연결해 주어야 합니다. 용량은 때에 따라 다르나 4.7K ~ 10K 가 많이 사용 됩니다.

 

TWI 버스 에서 데이터 비트는 클럭(SCL) 신호에 동기 되어 전송됩니다. 클럭 신호가 High일 경우 유효한 DATA상태 이어야 하며, LOW 상태에서 DATA값을 변경해야 합니다. 단 예외적으로 START 와 STOP 상태는 클럭이 high 상태에서 변경되어 알려주도록 되어 있습니다. .

 

 

데이터 전달을 시작하고 끝내는 것을 구분하기 위해 START, STOP 신호로 확인을 합니다. START 와 STOP 신호 동안은 버스는 비지(busy) 상태에 있게 되고, 다른 마스터는 버스의 제어권을 얻을 수 없습니다.

예외적으로 디바이스에 따라 START 와 STOP 사이에 새로운 START 가 발생할 수 있습니다. 이것을 REPEATED START 라 하고 마스터가 버스의 제어권을 잃지 않고 새로운 데이터 전달을 초기화할 때 사용됩니다. REPEATED START 는 START 와 동일한 역할을 합니다.

 

 

TWI 버스상에 전달되는 주소 패킷은 9 비트로 구성됩니다. 7 비트 주소와 1 비트 READ/WRITE 제어 비트 그리고 1 비트의 확인 신호(Acknowledge) 비트로 구성 되어 집니다.

READ/WRITE 비트는 1 이면 READ 이며, 0 이면 WRITE 동작이 다음에 수행됩니다. 이를 받은 슬레이브 디바이스는 9 번째 클럭에서 SDA 를 LOW로 컨트롤해서 받았다는 확인 신호(ACK) 를 보내야 합니다. 하이(HIGH) 상태로 되어 있을 경우 마스터는 NACK로 확인하고 STOP 신호를 보내거나 REPEATED START 신호를 보내서 새로운 데이터 전달을 시작합니다. (슬레이브 주소와 READ 또는 WRITE 신호를 SLA+R 또는 SLA+W 라고 합니다.)

 

TWI 버스상에 전달되는 데이터 패킷은 9 비트로 구성됩니다. 8 비트의 데이터와 1 비트의 확인 신호(Acknowledge)로 구분되어 집니다. 데이터 MSB부터 전달됩니다.

 

 

TWI 신호 전달은 기본적으로 START 와 SLA+R/W 와 한 개 이상의 데이터 패킷 마지막에 STOP 신호로 구성됩니다.

 

 

1) 레지스터

 

- TWBR (TWI Bit Rate Register)

 

TWBR 은 비트 레이트 발생기의 나눗셈 비율을 결정합니다. 전송 속도를 조절 합니다.

 

- TWCR (TWI Control Register)

 

 

bit 7, TWINT (TWI Interrupt Flag) : TWI 의 현재 작업이 끝나고, 응용 프로그램의 응답을 기다릴 때 셋됩니다. 이 비트가 셋 된 동안은 SCL 은 로(LOW) 상태로 유지됩니다. 이 비트에 1 을 써서 소프트웨어적으로 클리어 시켜주어야 합니다. 인터럽트 루틴이 실행되어도 클리어 되지 않습니다.

bit 6, TWEA (TWI Enable Acknoledge bit) : TWEA 비트는 확인 신호(Acknoledge) 펄스를 발생시키는 것을 제어합니다. TWEA 비트에 1 을 쓰면 아래 조건을 만났을 때 ACK 신호를 발생합니다.

1. 디바이스의 슬레이브 주소를 수신했을 때

2. TWGCE 비트가 1 이고 general call 을 수신했을 때

3. 마스터 수신 또는 슬레이브 수신 상태에서 데이터 바이트를 수신했을 때

bit 5, TWSTA (TWI START Condition bit) : 2 선 시리얼 버스(Two-Wire Serial Bus) 상에서 마스터가 되고자 할 때 TWSTA 비트에 1 을 씁니다. TWI 하드웨어는 버스가 활용할 수 있는 상태인지를 체크하고나서 START 신호를 발생합니다. TWSTA 비트는 START 비트가 발생한 후에 소프트웨어적으로 클리어시켜 주어야 합니다.

bit 4, TWSTO (TWI STOP Condition bit) : 마스터 모드에서 2 선 시리얼 버스(Two-Wire Serial Bus) 상에서 STOP 신호를 발생시키기 위하여 1 을 씁니다. TWSTO 비트는 자동으로 클리어됩니다.

bit 3, TWWC (TWI Write Collistion Flag): TWINT 비트가 로(LOW) 인 상태에서 TWI 데이터 레지스터(TWDR) 에 쓰려고 할 때 TWWC 플래그가 1 이 됩니다. 이 플래그는 TWINT 플래그가 1 인 상태에서 TWDR 레지스터에 쓰면 클리어 됩니다.

bit 2, TWEN (TWI Enable bit) : TWEN 비트에 1 을 쓰면 TWI 작동이 가능하게 됩니다. TWEN 비트에 0 을 쓰면 TWI 작동은 불가능으로 됩니다.

bit 0 , TWIE (TWI Interrupt Enable bit) : 이 비트가 1 이고 SREG 레지스터의 I 비트가 1 로 셋되어 있으면 TWINT 플래그가 1 이 동안 TWI 인터럽트 요구가 활성화됩니다.

 

 

- TWSR (TWI Status Register)

 

 

bit 7..3, TWS (TWI Status) : TWI 로직과 TWI 버스의 상태를 나타냅니다.

bit 1..0, TWPS (TWI Prescaler bits) : 읽고 쓸 수 있는 비트로, 비트 레이트 프리스케일러를 제어합니다.

 

 

- TWDR (TWI Data Register)

 

 

송신 모드에서 TWDR 은 다음 전송할 데이터를 갖습니다.

수신 모드에서 TWDR 은 수신된 이전 데이터를 갖습니다.

 

- TWAR (TWI (slave) Address Register)

 

 

슬레이브 전송기나 슬레이브 수신기로 프로그램 되었을 때 TWI 가 응답할 7 비트의 슬레이브 주소를 라이트 합니다. 마스터 모드에서는 사용하지 않습니다. TWAR 의 최하위 비트 TWGCE 는 general call address (0x00) 를 인식하도록 설정합니다.

 

bit 7..1, TWA (TWI (slave) Address Register) : 7 비트는 TWI 의 슬레이브 주소를 구성합니다.

bit 0 , TWGCE (TWI General Call Enable bit) : 1 인경우 general call 을 인식할 수 있도록 합니다.

 

 

 

'공부 > AVR' 카테고리의 다른 글

[ATMEGA128] 11. EEPROM  (0) 2012.11.09
[ATMEGA128] 10. ADC  (0) 2012.11.09
[ATMEGA128] 9. TWI (I2C)  (0) 2012.11.09
[ATMEGA128] 8.SPI  (0) 2012.11.09
[ATMEGA128] 7.USART  (0) 2012.11.09
[ATMEGA128] 6. 타이머 카운터 (2)  (0) 2012.11.09

 

8. SPI

 

8.1 특징 및 기능

 

SPI (Serial Peripheral Interface) 란 근거리용 고속 직렬 동기식 통신 규격을 말합니다. 일반적으로 MOSI, MISO, SCK, /SS의 4개의 신호선을 이용합니다. UART보다는 고속이며 전이중 통신을 지원합니다.

MASTER와 SLAVE 사이에서 직렬로 데이터를 송수신하며, 클럭은 항상 MASTER가 발생하도록 되어 있습니다.

/SS 신호를 S/W 적으로 처리할 경우 한 개의 ATmega128에 여러 개의 SPI용 디바이스를 장착 할 수도 있습니다. SCK 는 SPI 의 클럭 신호로 출력되는 핀이며 마스터가 보내줍니다. MOSI 는 마스터-출력, 슬레이브-입력 핀으로 마스터에서 슬레이브로 시리얼 데이터를 전송 합니다. MISO 는 마스터-입력, 슬레이브-출력 핀으로 슬레이브에서 마스터로 시리얼 데이터를 전송 합니다. SS 는 슬레이브 선택 핀으로 마스터가 여러 슬레이브중에 활성화하는 슬레이브를 선택할 수 있는 핀이며, 이 단자에 로(Low) 신호가 입력되면 슬레이브로 선택됩니다.

 

1) 레지스터

- SPCR (SPI Control Register)

 

 

bit 7, SPIE (SPI Interrupt Enable) : SPI 의 인터럽트를 가능하게 합니다. SPSR 레지스터의 SPIF 비트가 1 이고 SREG 레지스터의 전체 인터럽트 인에이블 비트(I) 가 1 이면 인터럽트가 발생합니다.

bit 6, SPE (SPI Enable) : SPI 기능을 사용하게 하는 비트입니다.

bit 5, DORD (Data Order) : 1 은 데이터의 LSB 가 먼저 전송되고, 0 은 데이터의 MSB 가 먼저 전송됩니다.

bit 4, MSTR (Master/Slave Select) : 1 은 마스터로 사용하며 , 0 은 슬레이브로 사용하게 합니다.

bit 3, CPOL (Clock Polarityt) : 클럭의 극성 을 어떻게 사용할지 결정합니다.

 

bit 2, CPHA (Clock Phase) : 데이터의 샘플링을 언제 할 것인가를 결정하는 비트입니다.

bit 1:0, SPR1:0 (Clock Rate Select) : 마스터로 구성된 디바이스의 SCK 속도를 결정합니다.

 

- SPSR (SPI Status Register)

 

bit 7, SPIF (SPI Interrupt Flag) : 시리얼 전달이 완료되면 설정, 인터럽트 처리시 리셋 됩니다. SPIF 비트가 셋된 상태에서 SPSR 을 처음 읽고 나서 SPI 데이터 레지스터(SPDR)를 엑세스 하면 리셋 됩니다.

bit 6, WCOL (Write Collision Flag) : 데이터 전달이 되는 동안 SPI 데이터 레지스터(SPDR) 에 쓰면 셋 됩니다. 이 비트가 셋된 상태에서 SPSR 을 처음 읽고 SPI 데이터 레지스터(SPDR)를 처리하면 리셋 됩니다.

bit 0, SPI2X (Double SPI Speed) : SPI 마스터 모드에서 이 비트가 1 이 되면 SPI 속도 (SCK 주파수) 는 2 배가 됩니다. 슬레이브 모드에서는 Fosc/4 이하의 주파수에서만 동작이 보장됩니다.

 

- SPDR (SPI Data Register)

SPI 데이터 송 수신용 레지스터 입니다.

 

 

2) SPI MODE

CPOL 과 CPHA 설정 bit에 의해 DATA를 클럭이 어떤 상태에서 동기 되서 받아 들일지 결정하게 됩니다.

모드는 전부 4개가 있습니다.

모드의 특징은 아래와 같습니다.

모드 0 에서 클럭은 상승했다가 하강하는데, 상승할 때 DATA를 읽습니다.

모드 1 에서 클럭은 상승했다가 하강하는데, 하강할 때 DATA를 읽습니다.

모드 2 에서 클럭은 하강했다가 상승하는데, 하강할 때 DATA를 읽습니다.

모드 3 에서 클럭은 하강했다가 상승하는데, 상승할 때 DATA를 읽습니다.

 

 

 

 

'공부 > AVR' 카테고리의 다른 글

[ATMEGA128] 10. ADC  (0) 2012.11.09
[ATMEGA128] 9. TWI (I2C)  (0) 2012.11.09
[ATMEGA128] 8.SPI  (0) 2012.11.09
[ATMEGA128] 7.USART  (0) 2012.11.09
[ATMEGA128] 6. 타이머 카운터 (2)  (0) 2012.11.09
[ATMEGA128] 6. 타이머 카운터 (1)  (0) 2012.11.09

 

7.USART

7.1 특징 및 기능

ATmega128은 USART (Universal Synchronous and Asynchronous serial Receiver and Transmitter) 라는 통신 회로를 지원 합니다. 이를 이용해 외부 디바이스와 Serial 형태의 데이터를 송수신할 수 있게 해줍니다.

USART를 제어하기 위한 레지스터로는 USART를 통해 보낼 데이터나 받은 데이터를 두는 USART I/O 데이터 레지스터(UDRn), USART 상태를 알 수 있는 USART 제어 상태 레지스터(UCSRnA, UCSRnB, UCSRnC) 그리고 데이터 통신의 속도를 결정하는 보레이트(Baud Rate)를 설정하는 USART 보레이트 레지스터(UBRRnL, UBRRnH)가 있습니다. 통신 속도를 결정해 주는 보레이트는 부착되거나 사용 되어지는 크리스탈이나 오실레이터의 속도에 의해 좌우됩니다. 이를 이용해 계산값 또는 지정값을 UBRR에 지정하여 속도를 결정합니다.

 

1) 주요 특징

동기 모드 : Master (내부클럭). Slave (외부 XCKn pin에 입력된 클럭)

비동기 모드 : 내부 클럭 사용

멀티프로세서 통신

높은 정밀도의 보레이트 발생기 내장

전송데이터 5~9비트 설정

스톱비트 1~2설정

페리티 비트 설정(사용, 미사용, 짝수/홀수패리티 선택)

에러검출기능(페리티 에러, 오버런에러, 프레임에러)

노이즈 필터링(3번 샘플링 동작)

 

2) USART 사용 인터럽트 3가지

수신완료 인터럽트, 송신완료 인터럽트, 송신데이터 준비완료 인터럽트를 이용해 MAIN 프로그램의 영향을 최저를 받으면서 송/수신이 가능합니다.

 

3) 레지스터

- UDRn(Usart 0 I/O Data Register) : 송수신 DATA 의 버퍼, TXBn은 송신시 사용, RXBn은 수신시 사용

 

- UCSRnA(USART Control and Status Register A)

Bit 7, RXCn(USART Receive Complete) : 1 은 UDRn의 수신버퍼에 안 읽은 데이터가 존재함을 뜻합니다.

Bit 6, TXCn(USART Transmit Complete) : 1 은 송신 시프트 레지스터에 있는 송신데이터가 모두 전송 되었음을 뜻 합니다.

Bit 5, UDREn(USART Data Register Empty) :1 은 송신 버퍼가 비어있어서 새로운 송신 데이터를 받을 준비 되었음을 뜻합니다.

Bit 4, FEn(USART Frame Error) : 1 은 수신할 때 프레임 에러가 발생 한 것을 뜻합니다.

Bit 3, DORn(USART Data Overrun Error) : 수신시에 오버런 에러가 발생 한 것을 뜻합니다.

Bit 2, UPEn(USART Parity Error) : 수신할 때 패리티 에러가 발생 한 것을 뜻합니다.

Bit 1, U2Xn(Double the USART Transmission Speed) : 비동기 모드에서 클럭의 분주비를 16에서 8로 조절하여전송속도를 2배 높이는 기능을 수행한다.

Bit 0, MPCMn(USART Multi-Processer Communication Mode) : 멀티프로세서 통신모드로 설정한다.

 

- UCSRnB(USART Control and Status Register B)

Bit 7, RXCIEn(USART RX Complete Interrupt Enable) : 수신완료 인터럽트 활성화

Bit 6, TXCIEn(USART TX Complete Interrupt Enable) : 송신완료 인터럽트 활성화

Bit 5, UDRIEn(USART Data Register Empty Interrupt Enable) : 송신 데이터 레지스터 준비완료 인터럽트 활성화

Bit 4, RXENn(USART Receiver Enable) : 수신부 동작 활성화

Bit 3, TXENn(USART Transmitter Enable) : 송신부 동작 활성화

Bit 2, UCSZn2(USART Character Size) : UCSRnC의 UCSZn1~0 비트와 함께 전송 문자의 데이터 비트수를 설정한다.

Bit 1, RXB8n(USARTReceive Data Bit 8) : 전송 데이터수가 9로 설정된 경우 수신된 9번째 데이터를 저장하게 된다.

Bit 0, TXB8n(USART Transmit Data Bit 8) :전송 데이터수가 9로 설정된 경우 송신될 9번째 데이터를 저장하게 된다.

 

- UCSRnC(USART Control and Register C)

Bit 6, USMSELn(USART Mode Select) : 1 은 동기전송모드, 0 은 비 동기전송모드

Bit 5,4, UPMn1, UPMn0(USART Parity Mode)

Bit 3, USBSn(USART Stop Bit Select) : 1 은 스톱비트 2개로 설정, 0 은 스톱비트 1개로 설정

Bit 2,1, UCSZn1, UCSZn0(USART Character Size) : UCSRnB의 UCSZn2 비트와 함께 전송 문자의 데이터 비트수를 설정한다.

Bit 0, UCPOLn(USART Clock Polarity) :동기 전동 모드의 슬레이브 동작한다. 1 일때 송신데이터는 XCKn 클럭의 하강에지에서 새로운 값이 출력 수신데이터는 XCKn 클럭의 상승 에지에서 검출되며, 0 일때 송신데이터는 XCKn 클럭의 상승에지에서 새로운 값이 출력 수신데이터는 XCKn 클럭의 하강 에지에서 검출된다.

 

- UBBRnH/L(USART Baud Rate Register)

USART의 송수신 속도를 설정합니다. (설정시 UBRRn 레지스터를 먼저 설정 해야 한다.)

ATmega128에는 입력 클럭에 따라 설정되는 값을 미리 계산값된 표로 제공하고 있습니다. 그러나 클럭 주파수에 따른 보드레이트를 계산 할 수도 있습니다. 이를 이용해 능동적으로 계산하여 사용하시는 것을 추천합니다.

'공부 > AVR' 카테고리의 다른 글

[ATMEGA128] 9. TWI (I2C)  (0) 2012.11.09
[ATMEGA128] 8.SPI  (0) 2012.11.09
[ATMEGA128] 7.USART  (0) 2012.11.09
[ATMEGA128] 6. 타이머 카운터 (2)  (0) 2012.11.09
[ATMEGA128] 6. 타이머 카운터 (1)  (0) 2012.11.09
[ATMEGA128] 5. 외부 인터럽트 및 내부 인터럽트  (0) 2012.11.09

 

6.3 타이머 1,3

타이머 1,3은 기본 동작은 타이머 0와 크게 다르지 않습니다. 그러나 8bit 타이머가 아닌 16bit 타이머 이기 때문에 Overflow 인터럽트의 경우 0xFFFF 에서 0x0000으로 변경될 때 발생하는 것과 같이 세부적으로는 다른 모습을 지녔습니다.

- TCCR1A 와 TCCR3A 레지스터

Bit 7:6, COMnA1:0 (Compare Output Mode for Channel A) :

Bit 5:4, COMnB1:0 (Compare Output Mode for Channel B):

Bit 3:2, COMnC1:0 (Compare Output Mode for Channel C) :

각각은 3개의 OCnx 핀의 기능을 설정 합니다.

MODE

COMnx1

COMnx0

설명

일반

0

0

범용 입출력 포트,OCnx 사용 안함

0

1

[비교매치] OCnx Toggle 출력

1

0

[비교매치] OCnx 은 0 출력

1

1

[비교매치] OCnx 은 1 출력

FAST PWM

0

0

범용 입출력 포트,OCnx 사용 안함

0

1

[비교매치] 모드 15에서 OCnA Toggle 출력,nB,nC출력차단, 나머지 모드 OCnx 사용안함

1

0

[비교매치] OCnx 은 0 출력

[오버플로우] OCnx 은 1 출력

1

1

[비교매치] OCnx 은 1 출력

[오버플로우] OCnx 은 0 출력

Phase Correct PWM

0

0

범용 입출력 포트,OCnx 사용 안함

0

1

[비교매치] 모드9,11에서 OCnA Toggle 출력,nB,nC출력차단, 나머지 모드 OCnx 사용안함

1

0

[상향비교매치] OCnx 은 0 출력

[하향비교매치] OCnx 은 1 출력

1

1

[상향비교매치] OCnx 은 1 출력

[하향비교매치] OCnx 은 0 출력

Bit 1:0, WGMn1:0 (Waveform Generation Mode) : TCCRxB 의 WGMn3:2 와 함께 모드 설정

- TCCR1B 와 TCCR3B 레지스터

Bit 7, ICNCn (Input Capture Noise Canceler) :ICn 으로 입력되는 캡쳐 신호에 노이즈를 제거하는 회로를 동작

Bit 6, ICESn (Input Capture Edge Select) : ICn으로 입력되는 신호의 에지를 선택 하며, 1 일때 상승에지, 0일 때 하강 에지를 선택 한다.

Bit 4:3, WGMn3:2 (Waveform Generation Mode) : WGMn1:0 와 함께 모드 설정

Bit 2:0, CSn2:0 (Clock Select) : 클럭분주비를 설정

- TCCR1C 와 TCCR3C

Bit 7 , FOCnA (Force Output Compare for Channel A)

Bit 6, FOCnB (Force Output Compare for Channel B)

Bit 5, FOCnC (Force Output Compare for Channel C)

PWM 모드가 아닐 때만 설정값이 유효 합니다. 1로 설정하면 강재로 OCnx 단자에 비교메치가 동작하는 것과 같이 동작을 하나 출력만 나갈 뿐 인터럽트 등이 발생하지 않아 일반적으로 사용하지 않습니다.

- TCNT1 과 TCNT3 : 타이머 0와 크게 다르지 않습니다.

- OCR1A,OCR1B,OCR1C, OCR3A,OCR3B,OCR3C : 타이머 0와 크게 다르지 않습니다.

- ICR1 , ICR3 : 입력캡쳐 신호에 의해 저장되는 카운터

- TIMSK , ETIMSK : 타이머 카운터 인터럽트를 허용한다.

TICIEx : 입력캡쳐 인터럽트 허용

OCIExx : 출력비교 인터럽트 허용

TOIEx : 오버플로우 인터럽트 허용

- TIFR ,ETIFR : 발생한 인터럽트 이벤트를 저장한다.

 

6.4 타이머 2

기본 동작은 타이머 0와 동일합니다. 특이하게 다른 부분은 분주비 부분을 예로 들수 있습니다. 그 외에는 TIMSK 와 TIFR 레지스터는 OCIE2,TOIE2 와 OCF2,TOV2가 사용 됩니다.

 

 

 

'공부 > AVR' 카테고리의 다른 글

[ATMEGA128] 8.SPI  (0) 2012.11.09
[ATMEGA128] 7.USART  (0) 2012.11.09
[ATMEGA128] 6. 타이머 카운터 (2)  (0) 2012.11.09
[ATMEGA128] 6. 타이머 카운터 (1)  (0) 2012.11.09
[ATMEGA128] 5. 외부 인터럽트 및 내부 인터럽트  (0) 2012.11.09
[ATMEGA128] 4. 입출력 I/O  (0) 2012.11.09

 

6. 타이머 카운터

6.1 특징 및 기능

 

ATmega128은 4개의 범용 타이머/카운터를 가지고 있습니다. 즉 Timer0, Timer1, Timer2, Timer3입니다. 즉 Timer0, Timer2 는 8비트 레지스터를 사용 하며, Timer1, Timer3는 16비트 레지스터를 사용 합니다.


타이머/카운터의 제어에 필요한 레지스터는 타이머/카운터 제어 레지스터(TCCRn), 타이머/카운터 레지스터(TCNTn), 출력 비교 레지스터(OCRn)가 있습니다. 인터럽트 관련하여 타이머/카운터 인터럽트 플래그 레지스터(TIFR), 타이머/카운터 인터럽트 마스크 레지스터(TIMSK)가 있습니다.

타이머를 사용하기 위해서는 타이머에서 사용하는 클럭에 대해서 설정을 해야 하고, 이는 프리스케일러(Prescaler) 값으로 조절할 수 있다. 프리스케일러 값은 각 타이머의 컨트롤 레지스터(TCCRn)에서 설정할 수가 있습니다. 타이머 인터럽트는 각 타이머 관련 컨트롤 레지스터에서 적절한 프리스케일러 값을 설정한 후, 각 타이머 레지스터(TCNTn)에 얼마마다 한번씩 인터럽트를 걸게 할 것인지와 관련된 값을 써주면 됩니다.
마지막으로 인터럽트를 사용해야 하므로 타이머 인터럽트 관련 레지스터들을 설정해야 합니다. 타이머 인터럽트에서는 TIMSK 레지스터만 설정하면 됩니다.

 

1) 타이머 인터럽트의 2가지 방식

- Compare Match (비교매치): Timer 의 값과 비교 레지스터의 값이 일치할 경우 발생

- Overflow (오버플로우): Timer의 값이 레지스터 범위를 벗어나 다시 0으로 되었을 때 발생

 

2) PWM 사용

PWM 기능은 IO에 출력되는 신호의 Pluse 의 0과 1의 폭(Duty Ratio)을 조절하는 기능 입니다. 이를 이용해 모터제어,각종 센서 측정, 전압 전류 컨트롤등 다양한 분야에 활용이 가능합니다.

 

 

6.3 타이머0

 

1) 레지스터 설명

- TCCR0(Timer/Counter Control Register 0) : 동작모드와 분주비등을 설정한다.

Bit 7 ,FOC0(Force Output Compare) : OSC0 Pin 에 출력비교 패치 신호를 출력

Bit 3,6, WGM01,WGM00(Waveform Generation Mode) : 파형 출력 모드 설정

Bit 5,4, COM01, COM00(Compare Match Output Mode) : 비교패치 출력 모드 설정

MODE

COM01

COM00

설명

일반

0

0

범용 입출력 포트,OC0 사용 안함

0

1

[비교매치] OC0 Toggle 출력

1

0

[비교매치] OC0 은 0 출력

1

1

[비교매치] OC0 은 1 출력

FAST PWM

0

0

범용 입출력 포트,OC0 사용 안함

0

1

사용안함

1

0

[비교매치] OC0 은 0 출력

[오버플로우] OC0 은 1 출력

1

1

[비교매치] OC0 은 1 출력

[오버플로우] OC0 은 0 출력

Phase Correct PWM

0

0

범용 입출력 포트,OC0 사용 안함

0

1

사용안함

1

0

[상향비교매치] OC0 은 0 출력

[하향비교매치] OC0 은 1 출력

1

1

[상향비교매치] OC0 은 1 출력

[하향비교매치] OC0 은 0 출력

Bit 2,1,0, CS02~CS00(Clock Select) : 클럭의 분주비를 설정

- TCNT0(Timer/Counter Register 0) : 타이머/카운트 0의 8비트 카운터 값을 저장하고 있는 레지스터

- OCR0(Timer/Counter Output Compare Register 0) : 타이머/카운트 0의 카운터 값인 TCNT0과 비교하여 OC0 단자에 출력신호를 발생하기 위한 8비트 값을 저장하고 있는 레지스터

- ASSR (Asynchronous Status Register) : 외부클럭을 이용해 비동기적으로 동작시 설정

Bit 3, AS0(Asynchronous Status Register) : 0은 내부클럭 (clkI/O) 동기모드,1은 외부클럭 (TOSC1)비동기모드

Bit 2, TCNOUB (Timer/Counter0 Update Busy) : 동작중 TCNT0레지스터 값이 변경되면 발생

Bit 1, OCROUB (Output Compare Register0 Update Busy) : 동작중 OCR0 레지스터 값이 변경되면 발생

Bit 0, TCROUB (Timer/Count Control Register0 Update Busy): 동작중 TCCR0 레지스터 값이 변경되면 발생

- SFIOR(Special Function I/O Register)

Bit 7, TSM(Timer/Counter Synchronization Mode) : 모든 타이머/카운터들을 동기화시키는 기능을 수행한다.

Bit 1, PSR0(Prescaler Reset Timer/Counter0) : 타이머/카운트0의 프리스케일러를 리셋 시키며 동작 후에 자동적으로 클리어 된다.

- TIMSK(Timer/Counter Interrupt Mask Register) : 인터럽트 Enable

Bit 1 , OCIE0(Timer/Counter0 Output Compare Match Interrupt Enable) : 1로 Set시켜주면 Output Compare Match Interrupt가 활성화 된다.

Bit 0 , TOIE0(Timer/Counter Overflow Interrupt Enable) :1로 Set시켜주면 Overflow Interrupt가 활성화된다.

- TIFR(Timer/Counter Interrupt Flag Register): 인터럽트 발생 플레그 저장

Bit1, OCF0(Output Compare Match Flag) : TCNT0값과 OCR0값을 비교하여 이것이 같으면 이 비트가 1로 Set되면서 Output Compare Match 인터럽트가 요청된다. 이 비트는 인터럽트 처리의 시작과 함께 0으로 Clear된다.

Bit0, TOV0(Timer/Count Overflow Flag) : 타이머/카운트에서 Overflow가 발생되면 이 비트가 1로 Set되면서 Output Compare Match 인터럽트가 요청된다. 이 비트는 인터럽트 처리의 시작과 함께 0으로 Clear된다.

2) 타이머의 동작 모드

- Normal Mode : 일반적인 타이머 오버플로우 인터럽트가 필요할 때 사용 합니다 0 ~ 0xFF 까지 상향증가 하며 반복적으로 동작합니다. 오버플로우(OVF) 인터럽트는 최고 값인 0xFF 에서 0x00으로 변경 될 때 발생합니다.

- CTC Mode(Clear Timer on Compare Match Mode) : 0 ~ OCR0 까지 증가하면서 동작하고 OCR0레지스터와 동일한 값이 발생시 오버프로우(OVF) 인터럽트를 발생하면서 TCNT0 값을 0으로 변경된다.

3) PWM 동작 모드

- FAST PWM : 높은 주파수 PWM 파형발생이 필요할 때 사용합니다.0x00~0xFF 까지 증가하도록 동작을 하며, TCNT0과 OCR0의 의 값이 같아지면 OC0에 LOW출력(COM0 1:0 = 2) 되고 전부 증가하여 0xFF 에서 0x00 으로 변경되면(오버플로우) OC0에 HIGH출력(COM 1:0 = 2) 이 나갑니다.

- Phase Correct PWM : 높은 분해능의 PWM출력 파형을 발생하는데 사용 0x00 → 0xFF 로 갔다가 다시0xFF → 0x00 으로 변화합니다. 값 증가시 카운터 비교패치가 될경우 OC0 에 0출력되고, 값 감소시 카운터 비교패치가 될경우 OC0 에 1출력 됩니다.

+ Recent posts