ATmega128 Architecture Pin Configurations 1 Func1 Func2 Func3 PIN Num VCC 21 52 Digital Supply Voltage (+5V) GND 22 53 63 Ground RESET 20 CPU Reset PEN 1 Programming Enable XTAL-1 24 Oscillator Input XTAL-2 23 Oscillator Output AVCC 64 AnalogSupplyVoltage(A/DConverter및 PORTF의전원 ) AREF 62 Analog Reference Voltage (A/D Converter의기준전압 ) PORTA PA0 AD0 51 8bit양방향병렬포트 ( 내부적으로Pull-UP:20KΩ~50KΩ) PA1 AD1 50 DDRn ( 입출력설정 ) PA2 AD2 49 PORTn ( 데이터출력 ) PA3 AD3 48 PINn ( 데이터입력 ) PA4 AD4 47 외부데이타메모리액세스 ( 데이터버스및어드레스버스가시분할다중화 ) PA5 AD5 46 시분할다중화시어드레스버스는 ALE 신호에의하여분리 PA6 AD6 45 PA7 AD7 44 PORTB PB0 SS 10 SPI Slave Select Input (SPI 채널의 Slave선택입력선호 ) PB1 SCK 11 SPI Serial Clock (SPI 채널의 Master 및 Slave의클럭입력신호 ) PB2 MOSI 12 SPI Master Output / Slave Input (SPI 채널의 Master 출력신호 / Slave 입력신호 ) PB3 MISO 13 SPI Master Input / Slave Output (SPI 채널의 Master 입력신호 / Slave 출력신호 ) PB4 OC0 14 Timer/Counter 0,1,2,3 Output Compare Match and PWM Output PB5 OC1A 15 Timer/Counter 0,1,2,3 Output Compare Match and PWM Output PB6 0C1B 16 Timer/Counter 0,1,2,3 Output Compare Match and PWM Output PB7 OC2 OC1C 17 Timer/Counter 0,1,2,3 Output Compare Match and PWM Output PORTC PC0 A8 35 INT0~INT7 ExternalInterrupt( 외부인터럽트요청신호 ) PC1 A9 36 PDI ProgrammingDataInput(MasterOutput/SlaveInput) PC2 A10 37 ATmega128에 ISP 프로그램으로보내는데이터신호 (ISP 케이블의 MOSI단자에연결 ) PC3 A11 38 PDO Programming Data Output (Master Input / Slave Output) PC4 A12 39 ISP 프로그램에서 ATmega128에보내는데이터신호 (ISP 케이블의 MISO단자에연결 ) PC5 A13 40 AIN0 AnalogComparatorPositiveInput( 아날로그비교기플러스극성입력신호 ) PC6 A14 41 AIN0 AnalogComparatorNagativeInput( 아날로그비교기마이너스극성입력신호 ) PC7 A15 42 PORTD PD0 SCL INT0 25 TWI Seerial Clock (TWI 채널의클럭입출력신호 ) PD1 SDA INT1 26 TWI Seerial Data (TWI 채널의데이타입출력신호 ) PD2 RxD1 INT2 27 USART1 Receive Data ( 직렬통신포트 USART1의수신데이터신호 ) PD3 TxD1 INT3 28 USART1 Transmit Data ( 직렬통신포트 USART1의송신데이터신호 ) PD4 ICP1 29 Timer/Counter 1 Input Capture Pin ( 타이머 / 카운터 1의캡쳐모드시트리거신호 ) PD5 XCK1 30 USART1 External Clock Input/Output (USART1이동기모드일때송수신클럭신호 ) PD6 T1 31 Timer/Counter1ClockInput( 타이머 / 카운터1의클럭입력신호 ) PD7 T2 32 Timer/Counter2ClockInput( 타이머 / 카운터2의클럭입력신호 ) PORTE PE0 RxD0 PDI 2 USART0 Receive Data ( 직렬통신포트 USART0의수신데이터신호 ) PE1 TxD0 PDO 3 USART0 Transmit Data ( 직렬통신포트 USART1의송신데이터신호 ) PE2 XCK0 AIN0 4 USART0 External Clock Input/Output (USART0이동기모드일때송수신클럭신호 ) PE3 OC3A AIN1 5 Timer/Counter 0,1,2,3 Output Compare Match and PWM Output PE4 OC3B INT4 6 Timer/Counter 0,1,2,3 Output Compare Match and PWM Output PE5 OC3C INT5 7 Timer/Counter 0,1,2,3 Output Compare Match and PWM Output PE6 T3 INT6 8 Timer/Counter3ClockInput( 타이머 / 카운터3의클럭입력신호 ) PE7 ICP3 INT7 9 Timer/Counter 3 Input Capture Pin ( 타이머 / 카운터 3의캡쳐모드시트리거신호 ) PORTF PF0 ADC0 61 ADC0~ADC7 ADCInputChannel(8채널10비트A/D컨버터아날로그입력신호 ) PF1 ADC1 60 PF2 ADC2 59 PF3 ADC3 58 PF4 TCK ADC4 57 JTAG Test Clock (JTAG ICE가 ATmega128에보내는클럭신호 ) PF5 TMS ADC5 56 JATG Test Mode Select (JTAG IC가 Atmega에보내는모드선택선택신호 ) PF6 TDO ADC6 55 JTAG Test Data Output (ATmega128이 JTAG ICE에보내는데이터신호 ) PF7 TDI ADC7 54 JATG Test Data Input (JTAG ICE가 ATmega128에보내는데이터신호 ) PORTG PG0 WR 33 Write Strobe (CPU가외부데이터메모리에데이터를쓰고있다는신호 ) PG1 RD 34 Read Strobe (CPU가외부데이터메모리에데이터를읽고있다는신호 ) PG2 ALE 43 Address Lantch Enable (AD0~AD7에외부메모리액세스를위한하위어드레스출력신호 ) PG3 TOSC2 18 Timer/Counter0RTCOscillator PG4 TOSC1 19 ( 타이머 / 카운터 0의 RTC기능사용시클럭발생수정발진자접속단자 )
ATmega128 Architecture Block Diagram and Architectural 2
ATmega128 Architecture Execution Timing (ALU - Arithmetic Logic Unit) 3
Fuse Bit Extend Fuse Byte M103C WDTON EFB Default Value 1 1 1 1 1 1 0 1 Unprogramed Unprogramed Unprogramed Unprogramed Unprogramed Unprogramed programed Unprogramed 7 6 5 4 3 2 1 M103C ATmega103 compatibility mode 0 ATmega103 호환모드사용 1 ATmega103 호환모드사용불가능 0 WDTON Watchdog Timer always on 0 워치독타이머동작허용 1 워치독타이머동작금지 4
Fuse Bit Fuse High Byte OCDEN JTAGEN SPIEN CKOPT EESAVE BOOTSZ1 BOOTSZ0 BOOTRST FHB Default Value 1 0 0 1 1 0 0 1 Unprogramed programed programed Unprogramed Unprogramed programed programed programed 7 OCDN Enable OCD 0 On-Chip Debug 사용가능 1 On-Chip Debug 사용불가능 6 JTAGEN Enable JTAG 0 JTAG 사용가능 1 JTAG 사용불가능 5 SPIEN Enable Serial Program and Data Downloading 0 SPI 이용직렬프로그래밍가능 1 SPI 이용직렬프로그래밍불가능 4 CKOPT Oscillator Options 0 오실레이터옵션 1 오실레이터옵션 3 EESAVE EEPROM memory is preserved through the Chip Erase 0 Chip Erase시 EEPROM 삭제금지 1 Chip Erase시 EEPROM 삭제 2 BOOTSZ1 1 BOOTSZ0 Select Boot Size Boot Size 선택 0 BOOTRST Select Reset Vector 0 Boot Reset Vector 사용가능 1 Boot Reset Vector 사용불가능 BOOTSZ1 BOOTSZ0 Boot Size (Word) Pages Application Section Boot Loader Section 1 1 512 4 0x0000 ~ 0xFDFF 0xFE00 ~ 0xFFFF 1 0 1024 8 0x0000 ~ 0xFBFF 0xFC00 ~ 0xFFFF 0 1 2048 16 0x0000 ~ 0xF7FF 0xF800 ~ 0xFFFF 0 0 4096 32 0x0000 ~ 0xEFFF 0xF000 ~ 0xFFFF 5
Fuse Bit Fuse Low Byte BODLEVEL BODEN SUT1 SUT0 CKSEL3 CKSEL2 CKSEL1 CKSEL0 FLB Default Value 1 1 1 0 0 0 0 1 Unprogramed Unprogramed Unprogramed programed programed programed programed Unprogramed 7 BODLEVEL Brown out detector trigger level 0 Brown out detection level at VCC=4.0 1 Brown out detection level at VCC=2.6 6 BODEN Brown out detector enable 0 Brown out 사용가능 1 Brown out 사용불가능 5 SUT1 4 SUT0 3 CKSEL3 2 CKSEL2 1 CKSEL1 0 CKSEL0 Select start-up time Select Clock source 기동시간선택 클럭소스선택 6
Fuse Bit System Clock Select CKSEL3 CKSEL2 CKSEL1 CKSEL0 클럭소스 1111 ~ 1010 1 External Crystal / Ceramic Resonator 1 0 0 1 2 External Low-frequency Crystal 1 0 0 0 8.0 ~ 12.0 Mhz 0 1 1 1 3.0 ~ 8.0 Mhz 3 External RC Oscillator 0 1 1 0 0.9 ~ 3.0 Mhz 0 1 0 1 0.1 ~ 0.9 Mhz 0 1 0 0 8.0 Mhz 0 0 1 1 4.0 Mhz 4 Calibrated Internal RC Oscillator 0 0 1 0 2.0 Mhz 0 0 0 1 1.0 Mhz 0 0 0 0 5 External Clock 7
Fuse Bit 1 External Crystal / Ceramic Resonator 클락소스선택 CKOPT CKSEL3 CKSEL2 CKSEL1 Frequency Range Recommended Range for Capacitors (MHz) C1 and C2 for Use with Crystals (pf) 1 1 0 1 0.4 ~ 0.9 세라믹레조네이터에서만사용 1 1 1 0 0.9 ~ 3.0 1 1 1 1 3.0 ~ 8.0 0 1 0 1 12 ~ 22 0 1 1 0 1.0 ~ 16.0 0 1 1 1 기동시간선택 CKSEL0 SUT1 SUT0 기동시간 (Clock) 리셋시추가시간 (ms) 사용권장분야 0 0 0 258 4.1 fast rising power 0 0 1 258 65 slowly rising power 0 1 0 1024 세라믹레조네이터 BOD 0 1 1 1024 4.1 fast rising power 1 0 0 1024 65 slowly rising power 1 0 1 16348 BOD 1 1 0 16348 4.1 크리스탈 fast rising power 1 1 1 16348 65 slowly rising power 8
Fuse Bit 2 External Low-frequency Crystal 클락소스선택 CKSEL3 CKSEL2 CKSEL1 CKSEL0 Frequency Range (MHz) 클럭소스 1 0 0 1 - External Low-frequency Crystal 기동시간선택 SUT1 SUT0 기동시간 (Clock) 리셋시추가시간 (ms) 사용권장분야 0 0 1024 4.1 fast rising power 0 1 1024 65 slowly rising power 1 0 32768 65 BOD 1 1 Reserved 9
Fuse Bit 3 External RC Oscillator 클락소스선택 CKSEL3 CKSEL2 CKSEL1 CKSEL0 Frequency Range (MHz) 1 0 0 0 8.0 ~ 12.0 0 1 1 1 3.0 ~ 8.0 0 1 1 0 0.9 ~ 3.0 클럭소스 External RC Oscillator 0 1 0 1 0.1 ~ 0.9 기동시간선택 SUT1 SUT0 기동시간 (Clock) 리셋시추가시간 (ms) 사용권장분야 0 0 18 - BOD 0 1 18 4.1 fast rising power 1 0 18 65 slowly rising power 1 1 6 4.1 fast rising power / BOD 10
Fuse Bit 4 Calibrated Internal RCscillator 클락소스선택 CKSEL3 CKSEL2 CKSEL1 CKSEL0 Frequency Range (MHz) 0 1 0 0 8.0 0 0 1 1 4.0 0 0 1 0 2.0 클럭소스 External RC Oscillator 0 0 0 1 1.0 기동시간선택 SUT1 SUT0 기동시간 (Clock) 리셋시추가시간 (ms) 사용권장분야 0 0 6 - BOD 0 1 6 4.1 fast rising power 1 0 6 65 slowly rising power 1 1 Reserved 내부 RC 오실레이터사용시주파수조정범위 OSCCAL 최저주파수 ( 공칭주파수의 % 값 ) 최고주파수 ( 공칭주파수의 % 값 ) 0x00 50 100 0x7F 75 150 0xFF 100 200 11
Fuse Bit 5 External Clock 클락소스선택 CKSEL3 CKSEL2 CKSEL1 CKSEL0 Frequency Range (MHz) 클럭소스 0 0 0 0 - External Clock 기동시간선택 SUT1 SUT0 기동시간 (Clock) 리셋시추가시간 (ms) 사용권장분야 0 0 6 - BOD 0 1 6 4.1 fast rising power 1 0 6 65 slowly rising power 1 1 Reserved 12
Memory Lock Bit Boot Loader 13
Memory Lock Bit BLBSET (Boot Lock Bit SET) BLB12 BLB11 BLB02 BLB01 LB2 BL1 BLBSET Default Value 1 1 1 1 1 1 1 1 Unprogramed Unprogramed Unprogramed Unprogramed Unprogramed Unprogramed Unprogramed Unprogramed 7 6 5 4 BLB12 BLB11 BLB1 MODE (Boot Loader Protection Mode) 3 BLB02 BLB0 MODE 2 BLB01 (Application Protection Mode) 1 LB2 LB MODE 0 LB1 (Memory Protection Mode) 부트로더섹션액세스보호설정모드 응용프로그램섹션엑세스보호설정모드 외부플래시메모리보호설정모드 14
Memory Lock Bit LB MODE MODE BL2 LB1 외부플래시메모리보호설정모드 1 1 1 메모리락기능없음 ( 데이터읽기는가능 ) 2 1 0 모든프로그래밍금지 (FLASH, EEPROM, Fuse Bit 프로그래밍금지 ) 3 0 0 모든프로그래밍, Verity 금지 (FLASH, EEPROM, Fuse Bit 프로그래밍, Verity 금지 ) BLB0 MODE MODE BL02 LB01 응용프로그램섹션엑세스보호설정모드 1 1 1 응용프로그램섹션액세스락기능없음 (SPM /(E)LPM 명령을사용가능 ) 2 1 0 응용프로그램섹션라이트금지 (SPM 명령사용불가능 ) 3 0 0 4 0 1 BLB1 MODE MODE BL02 LB01 응용프로그램섹션라이트 / 리드금지 ((E)LPM /SPM 명령사용불가능 ) 응용프로그램섹션실행중모든인터럽트는금지됨 응용프로그램섹션리드금지 ((E)LPM 명령사용불가능 ) 응용프로그램섹션실행중모든인터럽트는금지됨 부트로더섹션액세스보호설정모드 1 1 1 부트로더섹션액세스락기능없음 (SPM /(E)LPM 명령을사용가능 ) 2 1 0 부트로더섹션라이트금지 (SPM 명령사용불가능 ) 3 0 0 4 0 1 부트로더섹션라이트 / 리드금지 ((E)LPM /SPM 명령사용불가능 ) 부트로더섹션실행중모든인터럽트는금지됨 부트로더섹션리드금지 ((E)LPM 명령사용불가능 ) 부트로더섹션실행중모든인터럽트는금지됨 15
CPU and System Control SREG (Status Register) 0x3F I T H S V N Z C SREG Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 I Global Interrupt Enable 0 전체인터럽트허용 1 전체인터럽트불가 6 T Bit Copy Storage BLD 및 BST 명령을이용하여 T비트와다른비트사이의복사가가능 5 H Half Carry Flag 산술연산중가산에서 Half Carry / 감산에서 Half Borrow 발생 (BCD연산시사용 ) 4 S Sign Bit S = N V ( 부호없는 ( 있는 ) 정수의대소판단사용 ) 3 V Two 's Complement Overflow Flag 2의보수연산에서 Overflow 발생 2 N Negative Flag 산술연산및논리연산결과가 1일때 2의보수표현법을이용연산결과음수발생 1 Z Zero Flag 산술연산및논리연산결과가 0일때발생 0 C Carry Flag 산술연산및논리연산결과가산에서 Carry / 감산에서 Borrow 발생 16
CPU and System Control SP (Stack Pointer) 0x3E SP15 SP14 SP13 SP12 SP11 SP10 SP9 SP8 SPH 0x3D SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0 SPL Read/Write R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 6 5 4 3 2 1 0 SPH SPL Reserved Bits 서부루틴호출또는인터럽트발생시복귀주소 (Return Address) 값저장 어셈블리프로그램에서임시데이터저장 Last-in / First-out 방식 17
CPU and System Control RAMPZ (RAM Page Z Select Register) 0x3B RAMPZ0 RAMPZ Read/Write R R R R R R R R/W Initial Value 0 0 0 0 0 0 0 0 7 6 5 4 3 2 1 0 RAMPZ0 Extended RAM Page Z Select 내부플래시프로그램메모리영역의 2개의페이지중 1개를선택 (64K 단위 ) RAMPZ0 Select Program Memory Address 0 Lower 64K bytes Access &0000 ~ $7FFF 1 Higher 64K bytes Access %8000 ~ $FFFF 18
System Reset CPU and System Control 외부전압참조특성 Symbol Parameter Min Typ Max Units Bandgap reference voltage 1.15 1.23 1.40 V Bandgap reference start-up time 40 70 us Bandgap reference current consumption 10 ua Symbol Parameter Condition Min Typ Max Units Power-on Reset Threshold Voltage (rising) 1.4 2.3 V Power-on Reset Threshold Voltage (falling) 1.3 2.3 V RESET Pin Threshold Voltage 0.2 Vcc 0.85Vcc V Pulse width on RESET Pin 15 us Brown-out Reset Threshold Voltage BODLEVEL = 1 2.4 2.6 2.9 V BODLEVEL = 0 3.7 4.0 4.5 V Minimum low voltage period for Brown-out Detection BODLEVEL = 1 2 us BODLEVEL = 0 2 us Brown-out Detector hysteresis 100 mv 19
CPU and System Control System Reset MCUCSR (MCU Control and Status Register) 0x34 JTD JTRF WDRF BORF EXTRF PORF MCUCSR Read/Write R/W R R R/W R/W R/W R/W R/W Initial Value 0 0 0 See Bit Description 7 JPD 6 5 4 JTRF JTAG Reset Flag 1 JTAG 시스템에의한 MCU Reset 3 WDRF Watchdog Reset Flag 1 Watchdog 시스템에의한 MCU Reset 2 BORF Brown-out Reset Flag 1 Brown-out 시스템에의한 MCU Reset ( 이하일때 Reset) 1 EXYRF External Reset Flag 1 RESET 핀에의한 MCU Reset 0 PORF Power-On Reset Flag 1 ( 이하일때 Reset) 20
CPU and System Control External Memory MCUCR (MCU Control Register) 0x34 SRE SRW10 SE SM1 SM0 SM2 IVSEL IVCE MCUCR Read/Write R/W R R R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 SRE External SRAM/XMEM Enable 1 외부메모리엑세스활성 0 기본병렬 I/O 포트로동작 6 SRW10 Wait-state Select Bit 외부메모리엑세스시상위섹터웨이트사이클수설정 5 SE Sleep Enable 4 3 SM Sleep Mode Select Bits 2, 1, and 0 2 1 IVSEL Interrupt Vector Select 0 IVCE Interrupt Vector Change Enable 21
CPU and System Control External Memory XMCRA (External Memory Control Register A) 0x4D SRL2 SRL1 SRL0 SRW01 SRW00 SRW11 XMCRA Read/Write R R/W R/W R/W R/W R/W R/W R Initial Value 0 0 0 0 0 0 0 0 7 6 5 SRL XRAM Wait-State Setor Limits 외부메모리엑세스섹터별웨이트사이클설정 4 3 2 SRW0 XRAM Wait-state Select Bits,Upper Sector 외부메모리엑세스시하위섹터웨이트사이클수설정 1 SRW11 XRAM Wait-State Select, SRW11 bit 외부메모리엑세스시상위섹터웨이트사이클수설정 0 22
CPU and System Control External Memory 웨이트사이클섹터선택 SRL2 SRL1 SRL0 Lower Sector 섹터영역 Upper Sector 0 0 0 None 0x1100 ~ 0xFFFF 0 0 1 0x1100 ~ 0x1FFF 0x2000 ~ 0xFFFF 0 1 0 0x1100 ~ 0x3FFF 0x4000 ~ 0xFFFF 0 1 1 0x1100 ~ 0x5FFF 0x6000 ~ 0xFFFF 1 0 0 0x1100 ~ 0x7FFF 0x8000 ~ 0xFFFF 1 0 1 0x1100 ~ 0x9FFF 0xA000 ~ 0xFFFF 1 1 0 0x1100 ~ 0xBFFF 0xC000 ~ 0xFFFF 1 1 1 0x1100 ~ 0xDFFF 0xE000 ~ 0xFFFF 23
CPU and System Control External Memory 웨이트사이클선택 SRWn1 SRWn0 웨이트사이클수 0 0 웨이트사이클없음 0 1 리드 / 라이트신호에 1개의웨이트사이클 1 0 리드 / 라이트신호에 2개의웨이트사이클 1 1 리드 / 라이트신호에 2개의웨이트사이클 + 어드레스출력전 1개의웨이트사이클 n = Sector Number (0=Lower Sector, 1=Upper Sector) 24
CPU and System Control External Memory XMCRB(External Memory Control RegisterB) 0x4C XMBK XMM2 XMM1 XMM0 XMCRB Read/Write R/W R R R R R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 XMBK External Memory Bus-keeper Enable 1 버스키퍼기능설정 (SRE=0 일때유효 ) 6 5 4 BUS Keeper AD7~AD0 신호가 3-State 로되는동안이를이전의값으로출력 3 2 1 XMM External Memory High Mask 포트 C 와어드레스버스상위바이트한계설정 0 25
CPU and System Control External Memory 포트 C와어드레스버스상위바이트한계설정 XMM2 XMM1 XMM0 어드레스버스 포트 C 0 0 0 7 A15 ~ A8-0 0 1 6 A14 ~ A8 PC7 0 1 0 5 A13 ~ A8 PC7 ~ PC6 0 1 1 4 A12 ~ A8 PC7 ~ PC5 1 0 0 3 A11 ~ A8 PC7 ~ PC4 1 0 1 2 A10 ~ A8 PC7 ~ PC3 1 1 0 1 A9 ~ A8 PC7 ~ PC2 1 1 1 0 - PC7 ~ PC0 26
CPU and System Control OSCCAL (Oscillator Calibration Register) 0x4F CAL7 CAL6 CAL5 CAL4 CAL3 CAL2 CAL1 CAL0 OSCCAL Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value Device Specific Calibration Value 7 6 5 4 3 CAL Oscillator Calibration Value 오실레이터보정값설정 2 1 0 27
CPU and System Control XDIV (XTAL Divide Control Register) 0x3C XDIVEN XDIV6 XDIV5 XDIV4 XDIV3 XDIV2 XDIV1 XDIV0 XDIV Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 XDIVEN XTAL Divide Enable 0 소스클럭의분주비사용가능 1 소스클럭의분주비사용불가능 6 5 4 3 2 1 0 XDIV XTAL Divide Select Bits : 분주비설정값 설정범위 : 0 ~ 127 28
CPU and System Control sleep mode MCUCR (MCU Control Register) 0x34 SRE SRW10 SE SM1 SM0 SM2 IVSEL IVCE MCUCR Read/Write R/W R R R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 SRE External SRAM/XMEM Enable 6 SRW10 Wait-state Select Bit 5 SE Sleep Enable 1 슬립모드활성 0 슬립모드차단 4 3 SM Sleep Mode Select Bits 2, 1, and 0 슬립모드선택 2 1 IVSEL Interrupt Vector Select 0 IVCE Interrupt Vector Change Enable 29
CPU and System Control sleep mode SM2 SM1 SM0 슬립모드 차단되지않는클럭오실레이터슬립모드해제방법 메인타이머0 INT TWI Timer0 클럭클럭 7~0 SPM/ EEPROM 다른 ADC I/O 0 0 0 Idle 0 0 1 ADC Noise Reduction 0 1 0 Power-down 0 1 1 Power-save 1 0 0-1 0 1-1 1 0 1) Standby 1 1 1 1) Extended Standby 1) 외부크리스탈또는레조네이트사용시유효 2) ASSR 레지스터의 AS0=1 일때유효 3) INT7~4는레벨트리거모드일때유효 30
EEPROM General Purpose Register 데이터메모리의 16bit 어드레스를간접지정 Z-Register 는 LPM/ELPM/SPM 명령시프로그램메모리영역의상수를엑세스 8bit 단위 32 개의범용레지스터 사칙연산수행 31
EEPROM SRAM Data Memory Map Memory Configurations Configuration Internal SRAM External SRAM Data Memory Data Memory Normal mode 4096 up to 64K ATmega103 Compatibility mode 4000 32
EEPROM EEAR (EEPROM Address Register) 0x1F EEAR11 EEAR10 EEAR9 EEAR8 EEARH 0x1E EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 EEARL Read/Write R R R R R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 X X X X X X X X X X X X 7 6 5 4 3 2 1 0 E E A R H E E A R L EEPROM Address Register High Byte EEPROM Address Register Low Byte EEPROM 의주소레지스터 33
EEPROM EEDR (EEPROM Data Register) 0x1D MSB LSB EEDR Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 6 MSB 5 4 3 2 EEPROM Data EEPROM 의데이터레지스터 1 0 LSB 34
EEPROM EECR (EEPROM Control Register) 0x1C EERIE EEMWE EEWE EERE EECR Read/Write R R R R R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 X 0 7 6 5 4 3 EERIE EEPROM Ready Interrupt Enable 1 EEWE 비트가클리어될때 EEPROM Ready 인터럽트발생 2 EEMWE EEPROM Master Write Enable 1 EEPROM 라이트가능 0 EEPROM 라이트완료 1 EEWE EEPROM Write Enable 1 EEPROM 라이트가능 0 EEPROM 라이트완료 0 EERE EEPROM Read Enable 1 EEPROM 리드가능 0 EEPROM 리드완료 EEPROM 쓰기과정 1 이전의라이트동작이완료 (EEWE=0) 될때까지대기 2 SPMCSR 레지스터의 SPMEN=0 될때까지대기 3 라이트할 EEPROM의어드레스를 EEAR에저장 4 라이트할 EEPROM의데이타를 EEDR에저장 5 EECR의 EEMWE=1, EEWE=0으로설정 6 4사이틀이내에 EEWE=1로설정 EEPROM 읽기과정 1 이전의라이트동작이완료 (EEWE=0) 될때까지대기 2 리드할 EEPROM의어드레스를 EEAR에저장 3 EECR의 EERE=1로설정 4 리드할 EEPROM의데이터를 EEDR로부터읽음 35
MISC (Miscellaneous) SFIOR (Special Function IO Register) 0x20 TSM ACME PUD PSR0 PSR321 SFIOR Read/Write R/W R R R R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 TSM Timer/Counter Synchronization Mode 6 5 4 3 ACME Analog Comparator Multiplexer Enable 2 PUD Pull-up disable 1 PSR0 Prescaler Reset Timer/Counter0 0 PSR321 Prescaler Reset Timer/Counter3, 2, 1 36
Watchdog Timer WDTCR (Watchdog Timer Control Register) 0x21 WDCE WDE WDP2 WDP1 WDPO WDTCR Read/Write R R R R R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 6 5 4 WDCE Watchdog Change Enable 0 워치독타이머변경불가능 1 워치독타이머변경가능 3 WDE Watchdog Enable 0 워치독타이머사용불가능 1 워치독타이머사용가능 2 1 WDP Timer Prescaler 워치독타이머프리스케일러설정 0 37
I/O Ports Watchdog Timer Prescale Select 워치독타이머프리스케일러설정 WDP 2 WDP 1 WDP 0 워치독분주비 (VCC = 3.0V) 타임아웃 (VCC = 5.0V) 0 0 0 16K (16,384) 14.8 ms 14.0 ms 0 0 1 32K (32,768) 29.6 ms 28.1 ms 0 1 0 64K (65,536) 59.1 ms 56.2 ms 0 1 1 128K (131,072) 0.12 s 0.11 s 1 0 0 256K (262,144) 0.24 s 0.22 s 1 0 1 512K (524,288) 0.47 s 0.45 s 1 1 0 1024K (1,048,576) 0.95 s 0.9 s 1 1 1 2048K (2,097,152) 1.9 s 1.8 s 워치독타이머설정, 변경, 해제방법 M103C WDTON 안전레벨 워치독워치독워치독타임아웃초기상태해제방법변경방법 1 1 1 금지 지정된처리순서 지정된처리순서 1 0 2 허용 해제불가능 지정된처리순서 0 1 0 금지 지정된처리순서 항상가능 0 0 2 허용 해제불가능 지정된처리순서 38
I/O Port I/O Ports 39
I/O Ports SFIOR (Special Function IO Register) 0x20 TSM ACME PUD PSR0 PSR321 SFIOR Read/Write R/W R R R R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 TSM Timer/Counter Synchronization Mode 6 5 4 3 ACME Analog Comparator Multiplexer Enable 2 PUD Pull-up disable 0 내부풀업저항사용허용 1 내부풀업저항사용금지 1 PSR0 Prescaler Reset Timer/Counter0 0 PSR321 Prescaler Reset Timer/Counter3, 2, 1 DDxn PORTxn PUD I/O 풀업저항 비고 0 0 - 입력 No 3 State ( 하이임피던스 ) 0 1 0 입력 Yes 내부에서풀업 0 1 1 입력 No 3 State ( 하이임피던스 ) 1 0 - 출력 No L 출력 (Sink) 1 1 - 출력 No H 출력 (Source) 40
I/O Ports PORTn (Port n Data Register) - (n=a, B, C, D, E, F), (G = 5bit) PORTn7 PORTn6 PORTn5 PORTn4 PORTn3 PORTn2 PORTn1 PORTn0 PORTn Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 6 5 4 3 PORT Data Register 데이터출력설정 2 1 0 8bit 양방향병렬포트 ( 내부적으로 Pull-UP:20KΩ~50KΩ) DDRn ( 입출력설정 ) PORTn ( 데이터출력 ) PINn ( 데이터입력 ) 외부데이타메모리액세스 ( 데이터버스및어드레스버스가시분할다중화 ) 시분할다중화시어드레스버스는 ALE 신호에의하여분리 41
I/O Ports DDRn (Port n Direction Register) - (n=a, B, C, D, E, F) (G = 5bit) DDRn7 DDRn6 DDRn5 DDRn4 DDRn3 DDRn2 DDRn1 DDRn0 DDRn Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 6 5 4 3 DDR Direction Register 데이터입 / 출력방향설정 2 1 0 42
I/O Ports PINn (Port n Input Pins Address) - (n=a, B, C, D, E, F) (G = 5bit) PINn7 PINn6 PINn5 PINn4 PINn3 PINn2 PINn1 PINn0 PINn Read/Write R R R R R R R R Initial Value N/A N/A N/A N/A N/A N/A N/A N/A 7 6 5 4 3 PIN Input Pins 핀입력설정 2 1 0 43
I/O Ports I/O Alternate Port Functions Func1 Func2 Func3 PIN Num PORTA PA0 AD0 51 External Memory Interface address and data bit 0 PA1 AD1 50 External Memory Interface address and data bit 1 PA2 AD2 49 External Memory Interface address and data bit 2 PA3 AD3 48 External Memory Interface address and data bit 3 PA4 AD4 47 External Memory Interface address and data bit 4 PA5 AD5 46 External Memory Interface address and data bit 5 PA6 AD6 45 External Memory Interface address and data bit 6 PA7 AD7 44 External Memory Interface address and data bit 7 PORTB PB0 SS 10 SPI Slave Select Input (SPI 채널의 Slave선택입력선호 ) PB1 SCK 11 SPI Serial Clock (SPI 채널의 Master 및 Slave의클럭입력신호 ) PB2 MOSI 12 SPI Master Output / Slave Input (SPI 채널의 Master 출력신호 / Slave 입력신호 ) PB3 MISO 13 SPI Master Input / Slave Output (SPI 채널의 Master 입력신호 / Slave 출력신호 ) PB4 OC0 14 Timer/Counter 0 Output Compare Match and PWM Output PB5 OC1A 15 Timer/Counter 1 Output Compare Match and PWM Output A PB6 0C1B 16 Timer/Counter 1 Output Compare Match and PWM Output B PB7 OC2 OC1C 17 Timer/Counter 2 Output Compare Match and PWM Output Timer/Counter 1 Output Compare Match and PWM Output C PORTC PC0 A8 35 External Memory Interface address bit 8 PC1 A9 36 External Memory Interface address bit 9 PC2 A10 37 External Memory Interface address bit 10 PC3 A11 38 External Memory Interface address bit 11 PC4 A12 39 External Memory Interface address bit 12 PC5 A13 40 External Memory Interface address bit 13 PC6 A14 41 External Memory Interface address bit 14 PC7 A15 42 External Memory Interface address bit 15 PORTD PD0 SCL INT0 25 TWI Seerial Clock (TWI 채널의클럭입출력신호 ) PD1 SDA INT1 26 TWI Seerial Data (TWI 채널의데이타입출력신호 ) PD2 RxD1 INT2 27 USART1 Receive Data ( 직렬통신포트 USART1의수신데이터신호 ) PD3 TxD1 INT3 28 USART1 Transmit Data ( 직렬통신포트 USART1의송신데이터신호 ) PD4 ICP1 29 Timer/Counter 1 Input Capture Pin ( 타이머 / 카운터 1의캡쳐모드시트리거신호 ) PD5 XCK1 30 USART1 External Clock Input/Output (USART1이동기모드일때송수신클럭신호 ) PD6 T1 31 Timer/Counter1 Clock Input ( 타이머 / 카운터1의클럭입력신호 ) PD7 T2 32 Timer/Counter2 Clock Input ( 타이머 / 카운터2의클럭입력신호 ) PORTE PE0 RxD0 PDI 2 USART0 Receive Data ( 직렬통신포트 USART0의수신데이터신호 ) Program Data Input PE1 TxD0 PDO 3 USART0 Transmit Data ( 직렬통신포트 USART1의송신데이터신호 ) Program Data Output PE2 XCK0 AIN0 4 USART0 External Clock Input/Output (USART0이동기모드일때송수신클럭신호 ) Analog Comparator 0 Negative Input PE3 OC3A AIN1 5 Timer/Counter 3 Output Compare Match and PWM Output A Analog Comparator 1 Negative Input PE4 OC3B INT4 6 Timer/Counter 3 Output Compare Match and PWM Output B PE5 OC3C INT5 7 Timer/Counter 3 Output Compare Match and PWM Output C PE6 T3 INT6 8 Timer/Counter 3 Clock Input ( 타이머 / 카운터3의클럭입력신호 ) PE7 ICP3 INT7 9 Timer/Counter 3 Input Capture Pin ( 타이머 / 카운터 3의캡쳐모드시트리거신호 ) PORTF PF0 ADC0 61 ADC0 ~ ADC7 ADC Input Channel (8채널10비트A/D컨버터아날로그입력신호) PF1 ADC1 60 INT0 ~ INT7 External Interrupt 0 ~ 7 Input PF2 ADC2 59 PF3 ADC3 58 PF4 TCK ADC4 57 JTAG Test Clock (JTAG ICE가 ATmega128에보내는클럭신호 ) PF5 TMS ADC5 56 JATG Test Mode Select (JTAG IC가 Atmega에보내는모드선택선택신호 ) PF6 TDO ADC6 55 JTAG Test Data Output (ATmega128이 JTAG ICE에보내는데이터신호 ) PF7 TDI ADC7 54 JATG Test Data Input (JTAG ICE가 ATmega128에보내는데이터신호 ) PORTG PG0 WR 33 Write Strobe (CPU가외부데이터메모리에데이터를쓰고있다는신호 ) PG1 RD 34 Read Strobe (CPU가외부데이터메모리에데이터를읽고있다는신호 ) PG2 ALE 43 Address Lantch Enable (AD0~AD7에외부메모리액세스를위한하위어드레스출력신호 ) PG3 TOSC2 18 Timer/Counter0 RTC Oscillator Input PG4 TOSC1 19 ( 타이머 / 카운터 0의 RTC기능사용시클럭발생수정발진자접속단자 ) 44
Interrupts Interrupt Vector MCUCR (MCU Control Register) 0x34 SRE SRW10 SE SM1 SM0 SM2 IVSEL IVCE MCUCR Read/Write R/W R R R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 SRE External SRAM/XMEM Enable 6 SRW10 Wait-state Select Bit 5 SE Sleep Enable 4 3 SM Sleep Mode Select Bits 2, 1, and 0 2 1 IVSEL Interrupt Vector Select 인터럽트벡터설정 0 IVCE Interrupt Vector Change Enable 0 인터럽트벡터바꿈차단 1 인터럽트벡터바꿈허용 45
Interrupts Interrupt Vector Vector No. Program Address(2) Source 1 $0000(1) RESET Interrupt Definition External Pin, Power-on Reset, Brown-out Reset, Watchdog Reset, and JTAG AVR Reset 2 $0002 INT0 External Interrupt Request 0 3 $0004 INT1 External Interrupt Request 1 4 $0006 INT2 External Interrupt Request 2 5 $0008 INT3 External Interrupt Request 3 6 $000A INT4 External Interrupt Request 4 7 $000C INT5 External Interrupt Request 5 8 $000E INT6 External Interrupt Request 6 9 $0010 INT7 External Interrupt Request 7 10 $0012 TIMER2 COMP Timer/Counter2 Compare Match 11 $0014 TIMER2 OVF Timer/Counter2 Overflow 12 $0016 TIMER1 CAPT Timer/Counter1 Capture Event 13 $0018 TIMER1 COMPA Timer/Counter1 Compare Match A 14 $001A TIMER1 COMPB Timer/Counter1 Compare Match B 15 $001C TIMER1 OVF Timer/Counter1 Overflow 16 $001E TIMER0 COMP Timer/Counter0 Compare Match 17 $0020 TIMER0 OVF Timer/Counter0 Overflow 18 $0022 SPI, STC SPI Serial Transfer Complete 19 $0024 USART0, RX USART0, Rx Complete 20 $0026 USART0, UDRE USART0 Data Register Empty 21 $0028 USART0, TX USART0, Tx Complete 22 $002A ADC ADC Conversion Complete 23 $002C EE READY EEPROM Ready 24 $002E ANALOG COMP Analog Comparator 25 $0030(3) TIMER1 COMPC Timer/Countre1 Compare Match C 26 $0032(3) TIMER3 CAPT Timer/Counter3 Capture Event 27 $0034(3) TIMER3 COMPA Timer/Counter3 Compare Match A 28 $0036(3) TIMER3 COMPB Timer/Counter3 Compare Match B 29 $0038(3) TIMER3 COMPC Timer/Counter3 Compare Match C 30 $003A(3) TIMER3 OVF Timer/Counter3 Overflow 31 $003C(3) USART1, RX USART1, Rx Complete 32 $003E(3) USART1, UDRE USART1 Data Register Empty 33 $0040(3) USART1, TX USART1, Tx Complete 34 $0042(3) TWI Two-wire Serial Interface 35 $0044(3) SPM READY Store Program Memory Ready 리셋및인터럽트벡터의위치설정 BOOTRST IVSEL Reset Address Interrupt Vectors Start Address 1 0 0x0000 0x0002 1 1 0x0000 Boot Reset Address + 0x0002 0 0 Boot Reset Address 0x0002 0 1 Boot Reset Address Boot Reset Address + 0x0002 (BOOTRST in Fuse High Byte) 인터럽트처리과정 1 인터럽트요청신호의검출 2 인터럽트우선순위제어및허용여부판단 3 입터럽트처리루틴의시작번지확인 4 복귀주소및레지스터를저장 5 인터럽트서비스루틴을실행 6 인터럽트서비스루틴을종료하고원래의프로그램으로복귀 46
External Interrupts EICRA (External Interrupt Control Register A) 0x4A ISC31 ISC30 ISC21 ISC20 ISC11 ISC10 ISC01 ISC00 EICRA Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 6 5 4 3 2 1 0 ISC3 External Interrupt 3 Sense Control 외부인터럽트 INT3의트리거방식설정 ISC2 External Interrupt 2 Sense Control 외부인터럽트 INT2의트리거방식설정 ISC1 External Interrupt 1 Sense Control 외부인터럽트 INT1의트리거방식설정 ISC0 External Interrupt 0 Sense Control 외부인터럽트 INT0의트리거방식설정 ISOn1 ISOn0 인터럽트트리거방식 0 0 INTn 핀의 L레벨신호 (Low Level) 입력이입터럽트를트리거 0 1-1 0 INTn 핀의하강에지 (Falling Edge) 입력이입터럽트를트리거 1 1 INTn 핀의상승에지 (Rising Edge) 입력이입터럽트를트리거 (n = 0, 1, 2, 3) 47
External Interrupts EICRB (External Interrupt Control Register B) 0x3A ISC71 ISC70 ISC61 ISC60 ISC51 ISC50 ISC41 ISC40 EICRB Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 6 5 4 3 2 1 0 ISC7 External Interrupt 7 Sense Control 외부인터럽트 INT7의트리거방식설정 ISC6 External Interrupt 6 Sense Control 외부인터럽트 INT6의트리거방식설정 ISC5 External Interrupt 5 Sense Control 외부인터럽트 INT5의트리거방식설정 ISC4 External Interrupt 4 Sense Control 외부인터럽트 INT4의트리거방식설정 ISOn1 ISOn0 인터럽트트리거방식 0 0 INTn 핀의 L레벨신호 (Low Level) 입력이입터럽트를트리거 0 1 INTn 핀의하강에지 (Falling Edge) 또는상승에지 (Rising Edge) 입력이입터럽트를트리거 1 0 INTn 핀의하강에지 (Falling Edge) 입력이입터럽트를트리거 1 1 INTn 핀의상승에지 (Rising Edge) 입력이입터럽트를트리거 (n = 4, 5, 6, 7) 48
External Interrupts EIMSK (External Interrupt Mask Register) 0x39 INT7 INT6 INT5 INT4 INT3 INT2 INT1 INT0 EIMSK Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 6 5 4 3 INT External Interrupt Mask Register 1 각각의인터럽트허용 0 각각의인터럽트금지 2 1 0 49
External Interrupts EIFR (External Interrupt Flag Register) 0x38 INTF7 INTF6 INTF5 INTF4 INTF3 INTF2 INTF1 INTF0 EIFR Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 6 5 4 3 INTF External Interrupt Flag Register 각각의인터럽트발생 2 1 0 50
Timer/Counter Timer / Counter Summary Timer / Counter 0 1 2 3 기본구조 8 bit 16 bit 8 bit 16 bit 타이머입력 타이머프리스케일러 1, 8, 32, 64, 128, 256, 1024 1, 8, 64, 256, 1024 1, 8, 64, 256, 1024 1, 8, 64, 256, 1024 카운터입력 Timer / Counter Oscillator TOSC1 T1 T2 T3 관련레지스터 동작모드 TCCR0 TCNT0 OCR0 ASSR SFIOR, TIMSK, TIFR TCCR1A, TCCR1B, TCCR1C TCNT1H, TCNT1L OCR1AH/L, OCR1BH/L, OCR1CH/L ICR1H/L SFIOR, TIMSK, TIFR ETIMSK, ETIFR TCCR2 TCNT2 OCR2 SFIOR, TIMSK, TIFR TCCR3A, TCCR3B, TCCR3C TCNT3H, TCNT3L OCR3AH/L, OCR3BH/L, OCR3CH/L ICR3H/L SFIOR, TIMSK, TIFR ETIMSK, ETIFR Normal CTC Normal CTC Normal CTC Normal CTC Fast PWM Fast PWM Fast PWM Fast PWM Phase Correct PWM Phase Correct PWM Phase Correct PWM Phase Correct PWM - Phase and Frequency Correct PWN - Phase and Frequency Correct PWN 입력신호 TOSC1, TOSC2 T1 T3 T2 ICP1 ICP3 출력신호 OC0 OC1A, OC1B, OC1C OC2 OC3A, OC3B, OC3C Overflow Overflow Overflow Overflow 입터럽트 Output Compare Match Output Compare Match A/B/C Output Compare Match Output Compare Match A/B/C Input Capture Input Capture 기타 RTC기능타이머및카운터모두프리스케일러사용 캡쳐기능 캡쳐기능 51
8-bit Timer/Counter 0 PWM / Asynchronous 8bit Timer/Counter0 52
8-bit Timer/Counter 0 PWM / Asynchronous 8bit Timer/Counter0 53
8-bit Timer/Counter 0 PWM / Asynchronous TCCR0 (Timer/Counter 0 Control Register) 0x33 FOC0 WGM00 COM01 COM00 WGM01 CS02 CS01 CS00 TCCR0 Read/Write W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 FOC0 Force Output Compare 1 강제로 OC0 단자에출력비교가매치된신호출력 (PWM 아닌경우에유효 ) 6 WGM00 Waveform Generation Mode 타이머 / 카운터동작모드설정 5 4 COM0 Compare Match Output Mode OC0 핀기능설정 3 WGM01 Waveform Generation Mode 타이머 / 카운터동작모드설정 2 1 CS0 Clock Select 클럭의분주비설정 0 54
8-bit Timer/Counter 0 PWM / Asynchronous 8bit 타이머 / 카운터 0 동작모드설정 모드 WGM01 WGM00 동작모드 TOP OCR0 업데이트시점 TOV0 플랙의셋트시점 0 0 0 Normal 0xFF 설정즉시 MAX 1 0 1 Phase Correct PWM 0xFF TOP BOTTOM 2 1 0 CTC OCR0 설정즉시 MAX 3 1 1 Fast PWM 0xFF TOP MAX 일반모드 C T C P C P W M F P W M 55
8-bit Timer/Counter 0 PWM / Asynchronous OC0 핀기능설정 COM01 COM00 OC0 핀기능 0 0 정상적인범용 I/O 포트로동작 (OC0 출력차단 ) PWM 모드가아닌경우 0 1 Compare Match 에서 OC0 출력을토글 1 0 Compare Match 에서 OC0 출력을 0 으로클리어 1 1 Compare Match 에서 OC0 출력을 1 로셋트 0 0 정상적인범용 I/O 포트로동작 (OC0 출력차단 ) Fast PWM 0 1-1 0 Compare Match 에서 OC0 출력을 0 으로클리어한후 TOP 에서 OC0 출력을 1 로셋트 1 1 Compare Match 에서 OC0 출력을 1 로셋트한후 TOP 에서 OC0 출력을 0 으로클리어 0 0 정상적인범용 I/O 포트로동작 (OC0 출력차단 ) Phase Correct PWM 0 1-1 0 1 1 상향카운터에서는 Compare Match 에서 OC0 출력을 0 으로클리어하향카운터에서는 Compare Match 에서 OC0 출력을 1 로셋트 상향카운터에서는 Compare Match 에서 OC0 출력을 1 로셋트하향카운터에서는 Compare Match 에서 OC0 출력을 0 으로클리어 56
8-bit Timer/Counter 0 PWM / Asynchronous 클럭의프리스케일러설정 CS02 CS01 CS00 프리스케일러 0 0 0 클럭입력차단 ( 타이머 / 카운터 0 기능정지 ) 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 57
8-bit Timer/Counter 0 PWM / Asynchronous TCNT0 (Timer/Counter 0 Register) 0x32 TCNT07 TCNT06 TCNT05 TCNT04 TCNT03 TCNT02 TCNT01 TCNT00 TCNT0 Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 6 5 4 3 TCNT0 Timer / Counter Register 타이머 / 카운터 0 의 8bit 카운터값을저장 2 1 0 58
8-bit Timer/Counter 0 PWM / Asynchronous OCR0 (Output Compare 0 Register) 0x31 OCR07 OCR06 OCR05 OCR04 OCR03 OCR02 OCR01 OCR00 OCR0 Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 6 5 4 3 OCR0 Output Compare Register TCNT0 값과비교하여 OC0 단자에출력신호를발생하기위한 8bit 값저장 2 1 0 59
8-bit Timer/Counter 0 PWM / Asynchronous ASSR (Asynchronous Status Register) 0x30 AS0 TCN0UB OCR0UB TCR0UB ASSR Read/Write R R R R R/W R R R Initial Value 0 0 0 0 0 0 0 0 7 6 5 4 3 AS0 Asynchronus Timer / Counter 0 클럭소스 = ( 동기모드 ) 1 클럭소스 = TOSC1 ( 비동기모드 ) 2 TCN0UB Timer / Counter (TCNT0) Update Busy 비동기모드일때 TCNT0 에새로운값이라이트되면셋트 1 OCR0UB Output Compare Register (OCR0) Update Busy 비동기모드일때 OCR0 에새로운값이라이트되면셋트 0 TCR0UB Control Register (TCCR0) Update Busy 비동기모드일때 TCCR0 에새로운값이라이트되면셋트 60
8-bit Timer/Counter 0 PWM / Asynchronous TIMSK (Timer/Counter Interrupt Mask Register) 0x37 OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE0 TIMSK Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 OCIE2 6 TOIE2 5 TOIE1 4 OCIE1A 3 OCIE1B 2 TOIE1 1 OCIE0 Output compare Match Interrupt Enable 1 0 TCIE0 Overflow Interrupt Enable 1 타이머 / 카운터 0 의출력비교인터럽트허용 (SIEG 의 I=1 일때가능 ) 인터럽트발생시 TIFR 의 OCF0=1 이면인터럽트처리 타이머 / 카운터 0 의오버플로우인터럽트허용 (SIEG 의 I=1 일때가능 ) 인터럽트발생시 TIFR 의 TOV0=1 이면인터럽트처리 61
8-bit Timer/Counter 0 PWM / Asynchronous TIFR (Timer/Counter Interrupt Flag Register) 0x36 OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV0 TIFR Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 OCF2 6 TOV2 5 ICF1 4 OCF1A 3 OCF1B 2 TOV1 1 OCF0 Output Compare Flag TCNT0 = OCR0 일때셋트 ( 출력비교인터럽트요청 ) 0 TOV0 Overflow Flag 오버플로우발생시셋트 ( 오버플로우인터럽트요청 ) (PCPWM 모드시 0x00 에서계수방향이바뀌면셋트 ) 62
8-bit Timer/Counter 0 PWM / Asynchronous Timing Diagrams TOV0=1 로되는타이밍 OCF0=1 로되는타이밍 프리스케일러 = 1 Normal, FPWM, PCPWM 63 프리스케일러 = 8 CTC
8-bit Timer/Counter 0 PWM / Asynchronous SFIOR (Special Function IO Register) 0x20 TSM ACME PUD PSR0 PSR321 SFIOR Read/Write R/W R R R R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 TSM Synchronization Mode 6 0 PSR0, PSR321 비트값하드웨어적으로클리어 / 타이머 / 카운터의카운팅시작 1 PSR0, PSR321 비트값유지대응하는프리스케일러리셋신호발생타이머 / 카운터의동작을정지똑같은값으로설정가능 5 4 3 ACME 2 PUD 1 PSR0 Prescaler Reset 타이머 / 카운터의프리스케일러리셋후자동적으로클리어됨 비동기모드일때이값이 1 이면프리스케일러가리셋될때까지유지 ( 만약 TSM=1 이면하드웨어적으로자동클리어되지않는다 ) 0 PSR321 64
8-bit Timer / Counter 2 PWM 8bit Timer/Counter2 65
8-bit Timer / Counter 2 PWM 8bit Timer/Counter0 66
8-bit Timer / Counter 2 PWM TCCR2 (Timer/Counter 2 Control Register) 0x25 FOC2 WGM20 COM21 COM20 WGM21 CS22 CS21 CS20 TCCR2 Read/Write W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 FOC2 Force Output Compare 1 강제로 OC0 단자에출력비교가매치된신호출력 (PWM 아닌경우에유효 ) 6 WGM20 Waveform Generation Mode 타이머 / 카운터동작모드설정 5 4 COM2 Compare Match Output Mode OC0 핀기능설정 3 WGM21 Waveform Generation Mode 타이머 / 카운터동작모드설정 2 1 CS2 Clock Select 클럭의분주비설정 0 67
8-bit Timer / Counter 2 PWM 8bit 타이머 / 카운터 0 동작모드설정 모드 WGM21 WGM20 동작모드 TOP OCR2 업데이트시점 TOV2 플랙의셋트시점 0 0 0 Normal 0xFF 설정즉시 MAX 1 0 1 Phase Correct PWM 0xFF TOP BOTTOM 2 1 0 CTC OCR2 설정즉시 MAX 3 1 1 Fast PWM 0xFF TOP MAX 일반모드 C T C P C P W M F P W M 68
8-bit Timer / Counter 2 PWM OC2 핀기능설정 COM21 COM20 OC0 핀기능 0 0 정상적인범용 I/O 포트로동작 (OC2 출력차단 ) PWM 모드가아닌경우 0 1 Compare Match 에서 OC2 출력을토글 1 0 Compare Match 에서 OC2 출력을 0 으로클리어 1 1 Compare Match 에서 OC2 출력을 1 로셋트 0 0 정상적인범용 I/O 포트로동작 (OC2 출력차단 ) Fast PWM 0 1-1 0 Compare Match 에서 OC2 출력을 0 으로클리어한후 TOP 에서 OC2 출력을 1 로셋트 1 1 Compare Match 에서 OC2 출력을 1 로셋트한후 TOP 에서 OC2 출력을 0 으로클리어 0 0 정상적인범용 I/O 포트로동작 (OC2 출력차단 ) Phase Correct PWM 0 1-1 0 1 1 상향카운터에서는 Compare Match 에서 OC2 출력을 0 으로클리어하향카운터에서는 Compare Match 에서 OC2 출력을 1 로셋트 상향카운터에서는 Compare Match 에서 OC2 출력을 1 로셋트하향카운터에서는 Compare Match 에서 OC2 출력을 0 으로클리어 69
8-bit Timer / Counter 2 PWM 클럭의프리스케일러설정 CS22 CS21 CS20 프리스케일러 0 0 0 클럭입력차단 ( 타이머 / 카운터 2 기능정지 ) 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 T2 핀의입력되는외부클럭 ( 하강에지동작 ) T2 핀의입력되는외부클럭 ( 하강에지동작 ) 70
8-bit Timer / Counter 2 PWM TCNT2 (Timer/Counter 2 Register) 0x24 TCNT27 TCNT26 TCNT25 TCNT24 TCNT23 TCNT22 TCNT21 TCNT20 TCNT2 Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 6 5 4 3 TCNT2 Timer / Counter Register 타이머 / 카운터 2 의 8bit 카운터값을저장 2 1 0 71
8-bit Timer / Counter 2 PWM OCR2 (Output Compare 2 Register) 0x23 OCR27 OCR26 OCR25 OCR24 OCR23 OCR22 OCR21 OCR20 OCR2 Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 6 5 4 3 OCR2 Output Compare Register TCNT2 값과비교하여 OC2 단자에출력신호를발생하기위한 8bit 값저장 2 1 0 72
8-bit Timer / Counter 2 PWM TIFR (Timer/Counter Interrupt Flag Register) 0x36 OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV0 TIFR Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 OCF2 Output Compare Flag 2 TCNT2 = OCR2 일때셋트 ( 출력비교인터럽트요청 ) 6 TOV2 Timer / Counter2 Overflow Flag 5 ICF1 오버플로우발생시셋트 ( 오버플로우인터럽트요청 ) (PCPWM 모드시 0x00 에서계수방향이바뀌면셋트 ) 4 OCF1A 3 OCF1B 2 TOV1 1 OCF0 0 TOV0 73
8-bit Timer / Counter 2 PWM TIMSK (Timer/Counter Interrupt Mask Register) 0x37 OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE0 TIMSK Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 OCIE2 Output Compare Match Interrupt Enable 1 6 TOIE2 Overflow Interrupt Enable 1 5 TICIE1 타이머 / 카운터 0 의출력비교인터럽트허용 (SIEG 의 I=1 일때가능 ) 인터럽트발생시 TIFR 의 OCF2=1 이면인터럽트처리 타이머 / 카운터 0 의오버플로우인터럽트허용 (SIEG 의 I=1 일때가능 ) 인터럽트발생시 TIFR 의 TOV2=1 이면인터럽트처리 4 OCIE1A 3 OCIE1B 2 TOIE1 1 OCIE0 0 TOIE0 74
8-bit Timer / Counter 2 PWM SFIOR (Special Function IO Register) 0x20 TSM ACME PUD PSR0 PSR321 SFIOR Read/Write R/W R R R R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 TSM Synchronization Mode 6 0 PSR0, PSR321 비트값하드웨어적으로클리어 / 타이머 / 카운터의카운팅시작 1 PSR0, PSR321 비트값유지대응하는프리스케일러리셋신호발생타이머 / 카운터의동작을정지똑같은값으로설정가능 5 4 3 ACME 2 PUD 1 PSR0 Prescaler Reset 0 PSR321 Prescaler Reset Timer/Counter3,2,1 타이머 / 카운터 3,2,1 의프리스케일러를리셋시킨후자동으로클리어 (TSM=1 이면자동으로클리어되지않는다.) 75
16-bit Timer / Counter 1,3 16bit Timer/Counter 76
16-bit Timer / Counter 1,3 16bit Timer/Counter 77
16-bit Timer / Counter 1,3 TCCRnA (Timer/Counter n Control Register A) (n=1,3) 0x6B COMnA1 COMnA0 COMnB1 COMnB0 COMnC1 COMnC0 WGMn1 WGMn0 TCCR3A Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 6 5 4 3 2 COMnA Compare Output Mode 3A OCnA 핀기능설정 COMnB Compare Output Mode 3B OCnB 핀기능설정 COMnC Compare Output Mode 3C OCnC 핀기능설정 1 WGMn1 Waverform Generation Mone Bit 1 타이머 / 카운터동작모드설정 0 WGMn0 Waverform Generation Mone Bit 0 타이머 / 카운터동작모드설정 78
16-bit Timer / Counter 1,3 16bit 타이머 / 카운터 1,3 동작모드설정 모드 WGMn3 WGMn2 WGMn1 WGMn0 동작모드 TOP OCR0 업데이트시점 TOV0 플랙의셋트시점 0 0 0 0 0 Normal 0xFFFF 설정즉시 MAX 1 0 0 0 1 Phase Correct PWM (8-bit) 0x00FF TOP BOTTOM 2 0 0 1 0 Phase Correct PWM (9-bit) 0x01FF TOP BOTTOM 3 0 0 1 1 Phase Correct PWM (10-bit) 0x03FF TOP BOTTOM 4 0 1 0 0 CTC OCRnA 설정즉시 MAX 5 0 1 0 1 Fast PWM (8-bit) 0x00FF TOP TOP 6 0 1 1 0 Fast PWM (9-bit) 0x01FF TOP TOP 7 0 1 1 1 Fast PWM (10-bit) 0x03FF TOP TOP 8 1 0 0 0 Phase and Frequency Correct PWM ICRn BOTTOM BOTTOM 9 1 0 0 1 Phase and Frequency Correct PWM OCRnA BOTTOM BOTTOM 10 1 0 1 0 Phase Correct PWM ICRn TOP BOTTOM 11 1 0 1 1 Phase Correct PWM OCRnA TOP BOTTOM 12 1 1 0 0 CTC ICRn 설정즉시 MAX 13 1 1 0 1 - - - - 14 1 1 1 0 Fast PWM ICRn TOP TOP 15 1 1 1 1 Fast PWM OCRnA TOP TOP 79
16-bit Timer / Counter 1,3 16bit 타이머 / 카운터 1,3 동작모드설정 C T C F P W M Mode 4 Mode 12 P C P W M P F C P W M 80
16-bit Timer / Counter 1,3 OCnX 핀기능설정 COMnX1 COMnX0 OC0 핀기능 0 0 정상적인범용 I/O 포트로동작 (OCnX 출력차단 ) PWM 모드가아닌경우 0 1 Compare Match 에서 OCnX 출력을토글 1 0 Compare Match 에서 OCnX 출력을 0 으로클리어 1 1 Compare Match 에서 OCnX 출력을 1 로셋트 0 0 정상적인범용 I/O 포트로동작 (OCnX 출력차단 ) Fast PWM 0 1 모드 15 - Compare Match에서 OCnA 출력을토글, OCnB, OCnC 출력차단기타모드 - OCnX 차단 1 0 Compare Match에서 OCnX 출력을 0으로클리어한후 TOP에서 OCnX 출력을 1로셋트 1 1 Compare Match 에서 OCnX 출력을 1 로셋트한후 TOP 에서 OCnX 출력을 0 으로클리어 0 0 정상적인범용 I/O 포트로동작 (OCnX 출력차단 ) Phase Correct PWM Phase and Frequency Correct PWM 0 1 1 0 1 1 모드 9,10 - Compare Match 에서 OCnA 출력을토글, OCnB, OCnC 출력차단 기타모드 - OCnX 차단 상향카운터에서는 Compare Match 에서 OCnX 출력을 0 으로클리어하향카운터에서는 Compare Match 에서 OCnX 출력을 1 로셋트 상향카운터에서는 Compare Match 에서 OCnX 출력을 1 로셋트하향카운터에서는 Compare Match 에서 OCnX 출력을 0 으로클리어 81
16-bit Timer / Counter 1,3 TCCRnB (Timer/Counter 3 Control Register B) (n=1,3) 0x6A ICNCn ICESn WGMn3 WGMn2 CSn2 CSn1 CSn0 TCCR3B Read/Write R/W R/W R R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 ICNCn Input Capture 3 Noise Canceler 1 ICPn의입력캡쳐신호의노이즈제거회로작동 6 ICESn Input Capture 3 Edge Select 1 상승에지에서캡쳐 0 하강에지에서캡쳐 5 4 WGMn3 Waveform Generation Mode Bit 3 타이머 / 카운터동작모드설정 3 WGMn2 Waveform Generation Mode Bit 2 타이머 / 카운터동작모드설정 2 1 CSn Clock Select 클럭의분주비설정 0 82
16-bit Timer / Counter 1,3 클럭의프리스케일러설정 CSn2 CSn1 CSn0 프리스케일러 0 0 0 클럭입력차단 ( 타이머 / 카운터 2 기능정지 ) 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 Tn 핀의입력되는외부클럭 ( 하강에지동작 ) Tn 핀의입력되는외부클럭 ( 하강에지동작 ) 83
16-bit Timer / Counter 1,3 Input Capture 기능 84
16-bit Timer / Counter 1,3 TCCRnC (Timer/Counter n Control Register C) (n=1, 3) 0x6C FOC3A FOC3B FOC3C TCCRnC Read/Write W W W R R R R R Initial Value 0 0 0 0 0 0 0 0 7 FOC3A Forece Output Compare for Channel A 1 OCnA 단자에출력비교매치신호강제출력 6 FOC3B Forece Output Compare for Channel B 1 OCnB 단자에출력비교매치신호강제출력 5 FOC3C Forece Output Compare for Channel C 1 OCnC 단자에출력비교매치신호강제출력 4 3 2 1 0 85
16-bit Timer / Counter 1,3 TCNTn (Timer/Counter n Register) (n=1, 3) 0x6A TCNTn15 TCNTn14 TCNTn13 TCNTn12 TCNTn11 TCNTn10 TCNTn09 TCNTn08 TCNTnH 0x69 TCNTn7 TCNTn6 TCNTn5 TCNTn4 TCNTn3 TCNTn2 TCNTn1 TCNTn0 TCNTnL Read/Write R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 6 5 4 3 2 T C N T 3 H T C n T 3 L Timer / Counter 3 Register 타이머 / 카운터 n 의 16bit 카운터값을저장 1 0 86
16-bit Timer / Counter 1,3 OCRnX (Output Compare Register nx) (n=1,3 X=A,B,C) 0x68 OCRnA15 OCRnA14 OCRnA13 OCRnA12 OCRnA11 OCRnA10 OCRnA9 OCRnA8 OCRnXH 0x67 OCRnA7 OCRnA6 OCRnA5 OCRnA4 OCRnA3 OCRnA2 OCRnA1 OCRnA0 OCRnXL Read/Write R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 6 5 4 3 2 O C R n X H O C R n X L Output Compare Register A TCNTn 값과비교하여 OCnX 단자에출력신호를발생하기위한 16bit 값저장 1 0 87
16-bit Timer / Counter 1,3 ICRn (Input Capture Register n) (n=1, 3) 0x62 ICRn15 ICRn14 ICRn13 ICRn12 ICRn11 ICRn10 ICRn09 ICRn08 ICRnH 0x61 ICRn7 ICRn6 ICRn5 ICRn4 ICRn3 ICRn2 ICRn1 ICRn0 ICRnL Read/Write R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 6 5 4 3 2 1 0 I C R n H I C R n L Input Compare Register TCNTn 값을캡쳐한 16bit 값저장 88
16-bit Timer / Counter 1,3 TIMSK (Timer/Counter Interrupt Mask Register) 0x37 OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE0 TIMSK Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 OCIE2 6 TOIE2 5 TCIE1 4 OCIE1A 3 OCIE1B 2 TOIE1 Timer/Counter Interrupt1 Input Capture Interrupt Enable Timer/Counter1 Output Compare Match A Interrupt Enable Timer/Counter1 Output Compare Match B Interrupt Enable Timer/Counter1 Overflow Interrupt Enable 1 타이머 / 카운터 1 의입력캡쳐인터럽트허용 (SIEG 의 I=1 일때가능 ) 1 1 1 타이머 / 카운터 1A 의출력비교인터럽트허용 (SIEG 의 I=1 일때가능 ) 인터럽트발생시 TIFR 의 OCF1A=1 이면인터럽트처리 타이머 / 카운터 1A 의출력비교인터럽트허용 (SIEG 의 I=1 일때가능 ) 인터럽트발생시 TIFR 의 OCF1A=1 이면인터럽트처리 타이머 / 카운터 0 의오버플로우인터럽트허용 (SIEG 의 I=1 일때가능 ) 인터럽트발생시 TIFR 의 TOV0=1 이면인터럽트처리 1 OCIE0 Output compare Match Interrupt Enable 0 TCIE0 Overflow Interrupt Enable 89
16-bit Timer / Counter 1,3 ETIMSK (Extended Timer/Counter Interrupt Mask Register) 0x5D TICIE3 TICIE3A TICIE3B TOIE3 OCIE3C OCIE1C ETIMSK Read/Write R R R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 6 5 TICIE3 Input Capture Interrupt Enable 1 타이머 / 카운터3 의입력캡쳐인터럽트허용 (SIEG의 I=1일때가능 ) 4 TICIE3A Output Compare A Match Interrupt Enable 1 3 TICIE3B Output Compare B Match Interrupt Enable 1 2 TOIE3 Overflow Interrupt Enable 1 1 OCIE3C Output Compare 3C Match Interrupt Enable 1 0 OCIE1C Output Compare 1C Match Interrupt Enable 1 타이머 / 카운터 3A 의출력비교인터럽트허용 (SIEG 의 I=1 일때가능 ) 인터럽트발생시 ETIFR 의 OCF3A=1 이면인터럽트처리 타이머 / 카운터 3B 의출력비교인터럽트허용 (SIEG 의 I=1 일때가능 ) 인터럽트발생시 ETIFR 의 OCF3B=1 이면인터럽트처리 타이머 / 카운터 3 의오버플로우인터럽트허용 (SIEG 의 I=1 일때가능 ) 인터럽트발생시 ETIFR 의 TOV3=1 이면인터럽트처리 타이머 / 카운터 3C 의출력비교인터럽트허용 (SIEG 의 I=1 일때가능 ) 인터럽트발생시 ETIFR 의 OCF3C=1 이면인터럽트처리 타이머 / 카운터 1C 의출력비교인터럽트허용 (SIEG 의 I=1 일때가능 ) 인터럽트발생시 ETIFR 의 OCF1A=1 이면인터럽트처리 90
16-bit Timer / Counter 1,3 TIFR (Timer/Counter Interrupt Flag Register) 0x36 OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV0 TIFR Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 OCF2 6 TOV2 5 ICF1 4 OCF1A 3 OCF1B 2 TOV1 Timer/Counter1 Input Capture Flag Timer/Counter1 Output Compare A Match Flag Timer/Counter1 Output Compare B Match Flag Timer/Counter1 Overflow Flag 입력캡쳐인터럽트요청 ICR1-TOP / TCNT1=TOP 일때인터럽트요청 ( 자동으로클리어 ) TCNT1=OCR1A 일때출력비교인터럽트요청 ( 자동으로클리어 ) TCNT1=OCR1B 일때출력비교인터럽트요청 ( 자동으로클리어 ) 오버플로우발생시인터럽트요청 ( 자동으로클리어 ) 1 OCF0 Output Compare Flag 0 TOV0 Overflow Flag 91
16-bit Timer / Counter 1,3 ETIFR (Extended Timer/Counter Interrupt Flag Register) 0x5C ICF3 OCF3A OCF3B TOV3 OCF3C OCF1C ETIFR Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 6 5 ICF3 4 OCF3A 3 OCF3B 2 TOV3 1 OCF3C 0 OCF1C Timer/Counter3 Input Capture Flag Timer/Counter3 Output Compare A Match Flag Timer/Counter3 Output Compare B Match Flag Timer/Counter3 Overflow Flag Timer/Counter3 Output Compare C Match Flag Timer/Counter1 Output Compare C Match Flag 입력캡쳐인터럽트요청 ICR3-TOP / TCNT3=TOP 일때인터럽트요청 ( 자동으로클리어 ) TCNT3=OCR3A 일때출력비교인터럽트요청 ( 자동으로클리어 ) TCNT3=OCR3B 일때출력비교인터럽트요청 ( 자동으로클리어 ) 오버플로우발생시인터럽트요청 ( 자동으로클리어 ) TCNT3=OCR3C 일때출력비교인터럽트요청 ( 자동으로클리어 ) TCNT1=OCR1C 일때출력비교인터럽트요청 ( 자동으로클리어 ) 92
16-bit Timer / Counter 1,3 SFIOR (Special Function IO Register) 0x20 TSM ACME PUD PSR0 PSR321 SFIOR Read/Write R/W R R R R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 TSM Synchronization Mode 1 모든타이머 / 카운터들을동기화기능 PSR0 및 PSR321 bit의라이트값을유지 대응하는프리스케일러리셋신호발생 ( 타이머. 카운터의동작을정지시켜이것과똑같은값으로설정가능 ) 0 PSR0 및 PSR321 bit 가하드웨어적으로클리어된다. 6 5 4 3 ACME 2 PUD 1 PSR0 0 PSR321 Prescaler Reset for TC3, TC2 and TC1 1 타이머 / 카운터 321 프리스케일러리셋 (TSM=0 일때자동으로클리어 ) 93
Serial Peripheral Interface (SPI) SPDR (SPI Data Register) 0x0F MSB LSM SPDR Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value X X X X X X X X Undefined 7 6 MSB 5 4 3 2 Data Register SPI 통신시송신 / 수신데이터저장 ( 송신시단일버퍼로동작 ) ( 수신시이중버퍼로동작 ) 1 0 LSM 94
Serial Peripheral Interface (SPI) SPSR (SPI Status Register) 0x0E SPIF WCOL SPI2X SPSR Read/Write R R R R R R R R/W Initial Value 0 0 0 0 0 0 0 0 7 SPIF Interrupt Flag 전송완료시셋트 6 WCOL Write Collision Flag 데이터전송시 SPDR에라이트시작시셋트 5 4 3 2 1 0 SPI2X Double SPI Speed Bit 1 SPI가마스터로동작시 Sck 클럭신호주파수 2배로설정 95
Serial Peripheral Interface (SPI) SPCR (SPI Control Register) 0x0D SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0 SPCR Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 SPIE Interrupt Enable 1 SPI 인터럽트허용 6 SPE SPI Enable 1 SPI 동작허용 5 DORD Data Order 1 데이터직렬전송시 LSB부터전송 0 데이터직렬전송시 MSB부터전송 4 MSTR Master / Slave Select 1 SPI 모듈마스터동작 0 SPI 모듈슬레이브동작 3 CPOL Clock Polarity Sck 데이터샘플링에지극성설정 2 CPHA Clock Phase Sck 데이터샘플링에지위상설정 1 0 SPR Clock Rate Selection Sck 클럭주파수설정 96
Serial Peripheral Interface (SPI) SPCR (SPI Control Register) CPOL (Sck 데이터샘플링에지극성설정 ) CPOL Leading Edge Trailing Edge 0 Rising Edge Falling Edge 1 Falling Edge Rising Edge SPR (Sck 클럭주파수설정 ) SPI2X SPR1 SPR2 Sck 클럭주파수 0 0 0 0 0 1 0 1 0 CPHA (Sck 데이터샘플링에지위상설정 ) CPHA Leading Edge Trailing Edge 0 Sample Set up 1 Set up Sample 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 97
USARTn (n=0, 1) UDRn (USARTn I/O Data Register) - (n=0, 1) (0) 0x0C / (1) 0x7C RXBn7 RXBn6 RXBn5 RXBn4 RXBn3 RXBn2 RXBn1 RXBn0 UDRn (Read) TXBn7 TXBn6 TXBn5 TXBn4 TXBn3 TXBn2 TXBn1 TXBn0 UDRn (Write) Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 6 5 4 3 2 RXB n TXB n USART 송수신데어터저장 ( 송신시 TXBn 에저장 ) ( 수신시 RXBn 에저장 ) 1 0 98
USARTn (n=0, 1) UCSRnA (USART Control and Status Register A) - (n=0, 1) (0) 0x0B / (1) 0x7B RXCn TXCn UDREn FEn DORn UPEn U2Xn MPCMn UCSRnA Read/Write R R/W R R R R R/W R/W Initial Value 0 0 1 0 0 0 0 0 7 RXCn Receive Complete 수신완료시셋트 6 TXCn Transmit Complete 송신완료시셋트 5 UDREn Data Register Empty 송신준비완료시셋트 4 FEn Framing Error 수신신프레임에러시셋트 3 DORn Data overrun 수신시오버런에러시셋트 2 UPEn Parity Error 수신시패리티에러시셋트 1 U2Xn Double the USART transmission speed 1 전송속도를 2배로설정 ( 비동기모드에서만유효 ) 0 MPCMn Multi-processor Communication Mode 1 멀티프로세서통신모드허용 99
USARTn (n=0, 1) UCSRnB (USART Control and Status Register B) - (n=0, 1) (0) 0x0A / (1) 0x7A RXCIEn TXCIEn UDRIEn RXENn TXENn UCSZn2 RXB8n TXB8n UCSRnB Read/Write R/W R/W R/W R/W R/W R/W R R/W Initial Value 0 0 0 0 0 0 0 0 7 RXCIEn RX Complete Interrupt Enable 1 1문자수신시 (UCSRnA의 RXCn=1) 수신완료인터럽트발생 (SIEG의 I=1) 6 TXCIEn TX Complete Interrupt Enable 1 1문자송신시 (UCSRnA의 TXCn=1) 송신완료인터럽트발생 (SIEG의 I=1) 5 UDRIEn Data Register Empty Interrupt Enable 1 송신준비완료시 (UCSRnA의 UDR뚜 =1) 송신준비완료인터럽트발생 (SIEG의 I=1) 4 RXENn Receiver Enable 1 USART 수신부동작허용 3 TXENn Transmitter Enable 1 USART 송신부동작허용 2 UCSZn2 Character Size 전송문자데이터비트수설정 1 RXB8n Receive Data bit 8 전송문자데이터비트수가 9비트일때 9번비트 (MSB) 를저장 (UDRn 보다먼저라이트 ) 0 TXB8n Transmit Data bit 8 송신문자데이터비트수가 9비트일때 9번비트 (MSB) 를저장 (UDRn 보다먼저라이트 ) 100
USARTn (n=0, 1) UCSRnC (USART Control and Status Register C) - (n=0, 1) (0) 0x75 / (1) 0x7D UMSELn UPMn1 UPMn0 USBSn UCSZn1 UCSZn0 UCPOLn UCSRnC Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 1 1 0 7 6 UMSELn Mode Select 1 동기전송모드설정 0 비동기전송모드설정 5 4 UPMn Parity Mode 패리티모드설정 3 USBSn Stop bit Select 1 스톱비트 2개설정 0 스톱비트 1개설정 2 UCSZn Character Size 전송문자데이터비트수설정 1 XCKn 클럭의하강에지에서값출력 XCKn 클럭의상승에지에서값출력 1 0 0 UCPOLn Clock Polarity XCKn 클럭의상승에지에서값검출 XCKn 클럭의하강에지에서값검출 동기전송모드시가능 101
USARTn (n=0, 1) USART Parity Mode 설정 UPMn1 UPMn0 패리티모드 0 0 패리티체크기능사용안함 0 1-1 0 짝수패리티모드 1 1 홀수패리티모드 USART Character Size 설정 UCSZn2 UCSZn1 UCSZn0 전송데이터길이 0 0 0 5 bit 0 0 1 6 bit 0 1 0 7 bit 0 1 1 8 bit 1 0 0-1 0 1-1 1 0-1 1 1 9 bit 102
USARTn (n=0, 1) UBRRn (USART Baud Rate Registers) - (n=0, 1) (0) 0x70 / (1) 0x78 UBRRn11 UBRRn10 UBRRn9 UBRRn8 UBRRnH (0) 0x09 / (1) 0x79 UBRRn7 UBRRn6 UBRRn5 UBRRn4 UBRRn3 UBRRn2 UBRRn1 UBRRn0 UBRRnL Read/Write R R R R R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 6 5 4 3 2 1 0 U B R R n H U B R R n L USART Baud Rate Register High Byte USART Baud Rate Register Low Byte 보레이트값결정 103
USARTn (n=0, 1) Baud Rate 보레이트값공식 동작모드비동기일반모드 (U2Xn = 0) 비동기 2배속모드 (U2Xn = 1) 공식 보레이트값에따른 UBRRn 값 Baud Rate (bps) 비동기일반모드 (U2Xn = 0) 비동기 2배속모드 (U2Xn = 1) UBRRn Error UBRRn Error 2400 416-0.08% 832 +0.04% 4800 207 +0.16% 416-0.08% 동기마스터모드 9600 103 +0.16% 207 +0.16% 14400 68 +0.64% 138-0.08% 19200 51 +0.16% 103 +0.16% 28800 34-0.79% 68 +0.64% 38400 25 +0.16% 51 +0.16% 57600 16 +2.12% 34-0.79% 76800 12 +0.16% 25 +0.16% 115200 8-3.55% 16 +2.12% 230400 3 +8.51% 8-3.55% 250000 3 +0.00% 7 +0.00% 500000 1 +0.00% 3 +0.00% 1M 0 +0.00% 1 +0.00% 104
Two-wire Serial Interface TWBR (TWI Bit Rate Register) 0x50 TWBR7 TWBR6 TWBR5 TWBR4 TWBR3 TWBR2 TWBR1 TWBR0 TWBR Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 6 5 4 3 TWBR Bit Rate Register 마스터모드에서전송속도에필요한 SCL 의클럭주파수설정 2 1 0 105
Two-wire Serial Interface TWCR (TWI Bit Control Register) 0x54 TWINT TWEA TWSTA TWSTO TWWC TWEN TWIE TWCR Read/Write R/W R/W R/W R/W R R/W R R/W Initial Value 0 0 0 0 0 0 0 0 7 TWINT Interrupt Flag 현재동작완료후소프트웨어적으로필요한경우셋트 ( 인터럽트요청 ) 확인신호 (L) 를출력 6 TWEA Enable Acknowledge Bit 1 - 슬레이브모드에서잔신과일치하는 jemfptm를수신한경우 - TWAR 레지스터에서 TWGCE=1로설정, 전체호출이검출된경우 - 마스터또는슬레이브수신모드에서 1바이트데이터를수신한경우 5 TWSTA Start Condition Bit 1 마스터로동작시버스가사용가능한상태인지체크한후 START 조건을출력 4 TWSTO Stop Condition Bit 1 마스터로동작시 STOP 조건을출력슬레이브로동작시 TWI 에러상태에서정상적인슬레이브모드의수신대기모드진입 3 TWWC Write Condition Bit TWINT=0 인상태에서 TWDR에값을라이트할때셋트 2 TWEN Enable Bit 1 TWI 동작허용 (SDA, SCL 핀유효 ) 1 0 TWE Interrupt Enable 1 TWI 인터럽트허용 106
Two-wire Serial Interface TWSR (TWI Status Register) 0x51 TWS7 TWS6 TWS5 TWS4 TWS3 TWPS1 TWPS0 TWSR Read/Write R R R R R R R/W R/W Initial Value 1 1 1 1 1 0 0 0 7 6 5 TWS TWI Status TWI 의버스상태표시 4 3 2 TWI 프리스케일러설정 1 0 TWPS TWI Prescaler TWPS1 TWPS0 프리스케일러값 0 0 1 0 1 4 1 0 16 1 1 64 107
Two-wire Serial Interface TWDR (TWI Data Register) 0x53 TWD7 TWD6 TWD5 TWD4 TWD3 TWD2 TWD1 TWD0 TWDR Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 1 1 1 1 1 1 1 1 7 6 5 4 3 TWD TWI Data Register TWI 송신모드 : 송신할바이트 ( 스레이브어드레스, 전송데이터 ) 를저장 TWI 수신모드 : 수신된바이트를저장 2 1 0 108
Two-wire Serial Interface TWAR (TWI (Slave) Address Register) 0x52 TWA6 TWA5 TWA4 TWA3 TWA2 TWA1 TWA0 TWGCE TWAR Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 1 1 1 1 1 1 1 0 7 6 5 4 TWA (Slave) Address Register Bit 7 슬레이브어드레스설정 3 2 1 0 TWGCE General Call Recognition Enable Bit 마스터가 7 비트를 0000000 를전송하여전체호출을할경우슬레이브가이를검출하도록 허용 109
Analog Comparetor SFIOR (Special Function IO Register) 0x20 TSM ACME PUD PSR0 PSR321 SFIOR Read/Write R/W R R R R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 7 TSM 6 5 4 3 ACME Multiplexer Enable 1 ADC0~7 의신호가음극성입력으로사용 (ADC 동작정지 -ADCSRA 의 ADEN=0) 0 AIN1 의신호가음극성입력으로사용 2 PUD 1 PSR0 0 PSR321 110