Перейти к содержанию

Регистры ATmega16A

ATmega16A управляется 59 регистрами ввода-вывода: все они лежат в области ввода-вывода (адреса 0x20–0x5F) и доступны командами IN и OUT. Ниже — все регистры по адресам и страницы блоков с описанием каждого бита и конструктором значения.

Данные: описание ATmega16A из пакета Microchip ATmega_DFP 3.6.299 (Apache-2.0), сверено со сводкой регистров даташита 8154C.

Блоки

Все регистры по адресам

АдресРегистрНазначениеБиты 7…0После сброса
0x20 (I/O 0x00)TWBRСкорость TWIданные0x00
0x21 (I/O 0x01)TWSRСостояние TWITWS7 TWS6 TWS5 TWS4 TWS3 — TWPS1 TWPS00xF8
0x22 (I/O 0x02)TWARСобственный адрес TWITWA6 TWA5 TWA4 TWA3 TWA2 TWA1 TWA0 TWGCE0xFE
0x23 (I/O 0x03)TWDRДанные TWIданные0xFF
0x24 (I/O 0x04)ADCРезультат преобразования АЦП16 бит0x0000
0x26 (I/O 0x06)ADCSRAУправление АЦП, регистр AADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS00x00
0x27 (I/O 0x07)ADMUXОпорное напряжение и вход АЦПREFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX00x00
0x28 (I/O 0x08)ACSRУправление и состояние компаратораACD ACBG ACO ACI ACIE ACIC ACIS1 ACIS0—
0x29 (I/O 0x09)UBRRLСкорость USART, младший байтданные0x00
0x2A (I/O 0x0A)UCSRBУправление USARTundefined, регистр BRXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB80x00
0x2B (I/O 0x0B)UCSRAСостояние USARTundefined, регистр ARXC TXC UDRE FE DOR UPE / PE U2X MPCM0x20
0x2C (I/O 0x0C)UDRДанные USARTundefinedданные0x00
0x2D (I/O 0x0D)SPCRУправление SPISPIE SPE DORD MSTR CPOL CPHA SPR1 SPR00x00
0x2E (I/O 0x0E)SPSRСостояние SPISPIF WCOL — — — — — SPI2X0x00
0x2F (I/O 0x0F)SPDRДанные SPIданные—
0x30 (I/O 0x10)PINDВходы порта DPIND7 PIND6 PIND5 PIND4 PIND3 PIND2 PIND1 PIND0—
0x31 (I/O 0x11)DDRDНаправление выводов порта DDDD7 DDD6 DDD5 DDD4 DDD3 DDD2 DDD1 DDD00x00
0x32 (I/O 0x12)PORTDВыходы и подтяжки порта DPORTD7 PORTD6 PORTD5 PORTD4 PORTD3 PORTD2 PORTD1 PORTD00x00
0x33 (I/O 0x13)PINCВходы порта CPINC7 PINC6 PINC5 PINC4 PINC3 PINC2 PINC1 PINC0—
0x34 (I/O 0x14)DDRCНаправление выводов порта CDDC7 DDC6 DDC5 DDC4 DDC3 DDC2 DDC1 DDC00x00
0x35 (I/O 0x15)PORTCВыходы и подтяжки порта CPORTC7 PORTC6 PORTC5 PORTC4 PORTC3 PORTC2 PORTC1 PORTC00x00
0x36 (I/O 0x16)PINBВходы порта BPINB7 PINB6 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0—
0x37 (I/O 0x17)DDRBНаправление выводов порта BDDB7 DDB6 DDB5 DDB4 DDB3 DDB2 DDB1 DDB00x00
0x38 (I/O 0x18)PORTBВыходы и подтяжки порта BPORTB7 PORTB6 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB00x00
0x39 (I/O 0x19)PINAВходы порта APINA7 PINA6 PINA5 PINA4 PINA3 PINA2 PINA1 PINA0—
0x3A (I/O 0x1A)DDRAНаправление выводов порта ADDA7 DDA6 DDA5 DDA4 DDA3 DDA2 DDA1 DDA00x00
0x3B (I/O 0x1B)PORTAВыходы и подтяжки порта APORTA7 PORTA6 PORTA5 PORTA4 PORTA3 PORTA2 PORTA1 PORTA00x00
0x3C (I/O 0x1C)EECRУправление EEPROM— — — — EERIE EEMWE EEWE EERE—
0x3D (I/O 0x1D)EEDRДанные EEPROMданные0x00
0x3E (I/O 0x1E)EEARАдрес EEPROM16 бит—
0x40 (I/O 0x20)UCSRCФормат кадра USARTundefined, регистр CURSEL UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL0x86
0x40 (I/O 0x20)UBRRHСкорость USART, старшие битыURSEL — — — UBRR11 UBRR10 UBRR9 UBRR80x00
0x41 (I/O 0x21)WDTCRУправление сторожевым таймером— — — WDTOE WDE WDP2 WDP1 WDP00x00
0x42 (I/O 0x22)ASSRАсинхронный режим таймера 2— — — — AS2 TCN2UB OCR2UB TCR2UB0x00
0x43 (I/O 0x23)OCR2Регистр сравнения таймера 2данные0x00
0x44 (I/O 0x24)TCNT2Счётный регистр таймера 2данные0x00
0x45 (I/O 0x25)TCCR2Управление таймером 2FOC2 WGM20 COM21 COM20 WGM21 CS22 CS21 CS200x00
0x46 (I/O 0x26)ICR1Регистр захвата таймера 116 бит0x0000
0x48 (I/O 0x28)OCR1BРегистр сравнения B таймера 116 бит0x0000
0x4A (I/O 0x2A)OCR1AРегистр сравнения A таймера 116 бит0x0000
0x4C (I/O 0x2C)TCNT1Счётный регистр таймера 116 бит0x0000
0x4E (I/O 0x2E)TCCR1BУправление таймером 1, регистр BICNC1 ICES1 — WGM13 WGM12 CS12 CS11 CS100x00
0x4F (I/O 0x2F)TCCR1AУправление таймером 1, регистр ACOM1A1 COM1A0 COM1B1 COM1B0 FOC1A FOC1B WGM11 WGM100x00
0x50 (I/O 0x30)SFIORСпециальные функции ввода-выводаADTS2 ADTS1 ADTS0 — ACME PUD PSR2 PSR100x00
0x51 (I/O 0x31)OSCCALКалибровка RC-генератораданные—
0x51 (I/O 0x31)OCDRРегистр внутрисхемной отладки (OCD)данные0x00
0x52 (I/O 0x32)TCNT0Счётный регистр таймера 0данные0x00
0x53 (I/O 0x33)TCCR0Управление таймером 0FOC0 WGM00 COM01 COM00 WGM01 CS02 CS01 CS000x00
0x54 (I/O 0x34)MCUCSRПричина сброса и управление микроконтроллеромJTD ISC2 — JTRF WDRF BORF EXTRF PORF—
0x55 (I/O 0x35)MCUCRУправление микроконтроллеромSM2 SE SM1 SM0 ISC11 ISC10 ISC01 ISC000x00
0x56 (I/O 0x36)TWCRУправление TWITWINT TWEA TWSTA TWSTO TWWC TWEN — TWIE0x00
0x57 (I/O 0x37)SPMCSRСамопрограммирование (SPM)SPMIE RWWSB — RWWSRE BLBSET PGWRT PGERS SPMEN—
0x58 (I/O 0x38)TIFRФлаги прерываний таймераOCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV00x00
0x59 (I/O 0x39)TIMSKМаска прерываний таймераOCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE00x00
0x5A (I/O 0x3A)GIFRФлаги внешних прерыванийINTF1 INTF0 INTF2 — — — — —0x00
0x5B (I/O 0x3B)GICRРазрешение внешних прерываний и векторыINT1 INT0 INT2 — — — IVSEL IVCE0x00
0x5C (I/O 0x3C)OCR0Регистр сравнения таймера 0данные0x00
0x5D (I/O 0x3D)SPУказатель стека16 бит0x0000
0x5F (I/O 0x3F)SREGРегистр состоянияI T H S V N Z C0x00

Частые вопросы

Сколько регистров ввода-вывода у ATmega16A?

В описании Microchip у ATmega16A 59 регистров периферии и ядра (16-битные — ADC, EEAR и ICR1 — считаются одним регистром). 59 из них доступны командами IN и OUT, 30 — ещё и битовыми командами SBI и CBI.

Чем адрес регистра в области ввода-вывода отличается от адреса в памяти?

Регистры с адресами 0x20–0x5F в пространстве данных доступны и как область ввода-вывода с адресами 0x00–0x3F: IN и OUT принимают именно этот адрес, на 0x20 меньше. Регистры выше 0x5F (расширенная область) читаются и пишутся только командами LDS, STS, LD и ST.

Где описаны биты регистров ATmega16A?

На страницах блоков: TC0, TC1, EXINT, EEPROM, CPU, TC2, SPI, USART, TWI, AC, ADC и порты. У каждого бита — номер, имя из avr/io.h, назначение, доступ и значение после сброса по даташиту 8154C.

Источники

  1. Microchip. Atmel. ATmega16A datasheet (8154C) — сводка регистров, диаграммы битов и значения после сброса
  2. Microchip ATmega_DFP 3.6.299, описание ATmega16A (ATDF) — регистры, битовые поля и их значения, лицензия Apache-2.0

Нашли ошибку в регистрах?