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

Регистры ATmega32U4

ATmega32U4 управляется 135 регистрами ввода-вывода: 48 из них лежат в области ввода-вывода (адреса 0x20–0x5F, команды IN и OUT), остальные — в расширенной области (LDS и STS). Ниже — все регистры по адресам и страницы блоков с описанием каждого бита и конструктором значения.

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

Блоки

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

АдресРегистрНазначениеБиты 7…0После сброса
0x23 (I/O 0x03)PINBВходы порта BPINB7 PINB6 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0—
0x24 (I/O 0x04)DDRBНаправление выводов порта BDDB7 DDB6 DDB5 DDB4 DDB3 DDB2 DDB1 DDB00x00
0x25 (I/O 0x05)PORTBВыходы и подтяжки порта BPORTB7 PORTB6 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB00x00
0x26 (I/O 0x06)PINCВходы порта CPINC7 PINC6 — — — — — ——
0x27 (I/O 0x07)DDRCНаправление выводов порта CDDC7 DDC6 — — — — — —0x00
0x28 (I/O 0x08)PORTCВыходы и подтяжки порта CPORTC7 PORTC6 — — — — — —0x00
0x29 (I/O 0x09)PINDВходы порта DPIND7 PIND6 PIND5 PIND4 PIND3 PIND2 PIND1 PIND0—
0x2A (I/O 0x0A)DDRDНаправление выводов порта DDDD7 DDD6 DDD5 DDD4 DDD3 DDD2 DDD1 DDD00x00
0x2B (I/O 0x0B)PORTDВыходы и подтяжки порта DPORTD7 PORTD6 PORTD5 PORTD4 PORTD3 PORTD2 PORTD1 PORTD00x00
0x2C (I/O 0x0C)PINEВходы порта E— PINE6 — — — PINE2 — ——
0x2D (I/O 0x0D)DDREНаправление выводов порта E— DDE6 — — — DDE2 — —0x00
0x2E (I/O 0x0E)PORTEВыходы и подтяжки порта E— PORTE6 — — — PORTE2 — —0x00
0x2F (I/O 0x0F)PINFВходы порта FPINF7 PINF6 PINF5 PINF4 — — PINF1 PINF0—
0x30 (I/O 0x10)DDRFНаправление выводов порта FDDF7 DDF6 DDF5 DDF4 — — DDF1 DDF00x00
0x31 (I/O 0x11)PORTFВыходы и подтяжки порта FPORTF7 PORTF6 PORTF5 PORTF4 — — PORTF1 PORTF00x00
0x35 (I/O 0x15)TIFR0Флаги прерываний таймера 0— — — — — OCF0B OCF0A TOV00x00
0x36 (I/O 0x16)TIFR1Флаги прерываний таймера 1— — ICF1 — OCF1C OCF1B OCF1A TOV10x00
0x38 (I/O 0x18)TIFR3Флаги прерываний таймера 3— — ICF3 — OCF3C OCF3B OCF3A TOV30x00
0x39 (I/O 0x19)TIFR4Флаги прерываний таймера 4OCF4D OCF4A OCF4B — — TOV4 — —0x00
0x3B (I/O 0x1B)PCIFRФлаги прерываний по изменению выводов— — — — — — — PCIF00x00
0x3C (I/O 0x1C)EIFRФлаги внешних прерываний— INTF6 — — INTF3 INTF2 INTF1 INTF00x00
0x3D (I/O 0x1D)EIMSKРазрешение внешних прерываний— INT6 — — INT3 INT2 INT1 INT00x00
0x3E (I/O 0x1E)GPIOR0Регистр общего назначения 0данные0x00
0x3F (I/O 0x1F)EECRУправление EEPROM— — EEPM1 EEPM0 EERIE EEMPE EEPE EERE—
0x40 (I/O 0x20)EEDRДанные EEPROMданные0x00
0x41 (I/O 0x21)EEARАдрес EEPROM16 бит—
0x43 (I/O 0x23)GTCCRОбщее управление таймерамиTSM — — — — — PSRASY PSRSYNC0x00
0x44 (I/O 0x24)TCCR0AУправление таймером 0, регистр ACOM0A1 COM0A0 COM0B1 COM0B0 — — WGM01 WGM000x00
0x45 (I/O 0x25)TCCR0BУправление таймером 0, регистр BFOC0A FOC0B — — WGM02 CS02 CS01 CS000x00
0x46 (I/O 0x26)TCNT0Счётный регистр таймера 0данные0x00
0x47 (I/O 0x27)OCR0AРегистр сравнения A таймера 0данные0x00
0x48 (I/O 0x28)OCR0BРегистр сравнения B таймера 0данные0x00
0x49 (I/O 0x29)PLLCSRУправление PLL— — — PINDIV — — PLLE PLOCK—
0x4A (I/O 0x2A)GPIOR1Регистр общего назначения 1данные0x00
0x4B (I/O 0x2B)GPIOR2Регистр общего назначения 2данные0x00
0x4C (I/O 0x2C)SPCRУправление SPISPIE SPE DORD MSTR CPOL CPHA SPR1 SPR00x00
0x4D (I/O 0x2D)SPSRСостояние SPISPIF WCOL — — — — — SPI2X0x00
0x4E (I/O 0x2E)SPDRДанные SPIданные—
0x50 (I/O 0x30)ACSRУправление и состояние компаратораACD ACBG ACO ACI ACIE ACIC ACIS1 ACIS0—
0x51 (I/O 0x31)OCDRРегистр внутрисхемной отладки (OCD)данные0x00
0x52 (I/O 0x32)PLLFRQЧастота PLL и делители для USB и таймера 4PINMUX PLLUSB PLLTM1 PLLTM0 PDIV3 PDIV2 PDIV1 PDIV00x04
0x53 (I/O 0x33)SMCRРежим сна— — — — SM2 SM1 SM0 SE0x00
0x54 (I/O 0x34)MCUSRПричина сброса— — USBRF JTRF WDRF BORF EXTRF PORF—
0x55 (I/O 0x35)MCUCRУправление микроконтроллеромJTD — — PUD — — IVSEL IVCE0x00
0x57 (I/O 0x37)SPMCSRСамопрограммирование (SPM)SPMIE RWWSB SIGRD RWWSRE BLBSET PGWRT PGERS SPMEN0x00
0x5B (I/O 0x3B)RAMPZСтаршие биты адреса Z для ELPM и SPM— — — — — — RAMPZ1 RAMPZ00x00
0x5D (I/O 0x3D)SPУказатель стека16 бит0x20FF
0x5F (I/O 0x3F)SREGРегистр состоянияI T H S V N Z C0x00
0x60WDTCSRУправление сторожевым таймеромWDIF WDIE WDP3 WDCE WDE WDP2 WDP1 WDP0—
0x61CLKPRДелитель тактовой частотыCLKPCE — — — CLKPS3 CLKPS2 CLKPS1 CLKPS0—
0x64PRR0Отключение тактирования модулей, регистр 0PRTWI — PRTIM0 — PRTIM1 PRSPI — PRADC—
0x65PRR1Отключение тактирования модулей, регистр 1PRUSB — — PRTIM4 PRTIM3 — — PRUSART1—
0x66OSCCALКалибровка RC-генератораданные—
0x67RCCTRLЧастота внутреннего RC-генератора— — — — — — — RCFREQ0x00
0x68PCICRРазрешение прерываний по изменению выводов— — — — — — — PCIE00x00
0x69EICRAУсловия срабатывания INT0 и INT1ISC31 ISC30 ISC21 ISC20 ISC11 ISC10 ISC01 ISC000x00
0x6AEICRBУсловия срабатывания INT4–INT7— — ISC61 ISC60 — — — —0x00
0x6BPCMSK0Маска выводов группы 0 (PCINT)PCINT7 PCINT6 PCINT5 PCINT4 PCINT3 PCINT2 PCINT1 PCINT0—
0x6ETIMSK0Маска прерываний таймера 0— — — — — OCIE0B OCIE0A TOIE00x00
0x6FTIMSK1Маска прерываний таймера 1— — ICIE1 — OCIE1C OCIE1B OCIE1A TOIE10x00
0x71TIMSK3Маска прерываний таймера 3— — ICIE3 — OCIE3C OCIE3B OCIE3A TOIE30x00
0x72TIMSK4Маска прерываний таймера 4OCIE4D OCIE4A OCIE4B — — TOIE4 — —0x00
0x78ADCРезультат преобразования АЦП16 бит—
0x7AADCSRAУправление АЦП, регистр AADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS00x00
0x7BADCSRBУправление АЦП, регистр BADHSM ACME MUX5 — ADTS3 ADTS2 ADTS1 ADTS00x00
0x7CADMUXОпорное напряжение и вход АЦПREFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX00x00
0x7DDIDR2Отключение цифровых входов ADC8–ADC15— — ADC13D ADC12D ADC11D ADC10D ADC9D ADC8D0x00
0x7EDIDR0Отключение цифровых входов АЦПADC7D ADC6D ADC5D ADC4D — — ADC1D ADC0D0x00
0x7FDIDR1Отключение цифровых входов компаратора— — — — — — — AIN0D0x00
0x80TCCR1AУправление таймером 1, регистр ACOM1A1 COM1A0 COM1B1 COM1B0 COM1C1 COM1C0 WGM11 WGM10—
0x81TCCR1BУправление таймером 1, регистр BICNC1 ICES1 — WGM13 WGM12 CS12 CS11 CS100x00
0x82TCCR1CУправление таймером 1, регистр CFOC1A FOC1B FOC1C — — — — —0x00
0x84TCNT1Счётный регистр таймера 116 бит0x0000
0x86ICR1Регистр захвата таймера 116 бит0x0000
0x88OCR1AРегистр сравнения A таймера 116 бит0x0000
0x8AOCR1BРегистр сравнения B таймера 116 бит0x0000
0x8COCR1CРегистр сравнения C таймера 116 бит0x0000
0x90TCCR3AУправление таймером 3, регистр ACOM3A1 COM3A0 COM3B1 COM3B0 COM3C1 COM3C0 WGM31 WGM300x00
0x91TCCR3BУправление таймером 3, регистр BICNC3 ICES3 — WGM33 WGM32 CS32 CS31 CS300x00
0x92TCCR3CУправление таймером 3, регистр CFOC3A — — — — — — —0x00
0x94TCNT3Счётный регистр таймера 316 бит0x0000
0x96ICR3Регистр захвата таймера 316 бит0x0000
0x98OCR3AРегистр сравнения A таймера 316 бит0x0000
0x9AOCR3BРегистр сравнения B таймера 316 бит0x0000
0x9COCR3CРегистр сравнения C таймера 316 бит0x0000
0xB8TWBRСкорость TWIданные0x00
0xB9TWSRСостояние TWITWS7 TWS6 TWS5 TWS4 TWS3 — TWPS1 TWPS00xF8
0xBATWARСобственный адрес TWITWA6 TWA5 TWA4 TWA3 TWA2 TWA1 TWA0 TWGCE0xFE
0xBBTWDRДанные TWIданные0xFF
0xBCTWCRУправление TWITWINT TWEA TWSTA TWSTO TWWC TWEN — TWIE0x00
0xBDTWAMRМаска адреса TWITWAM6 TWAM5 TWAM4 TWAM3 TWAM2 TWAM1 TWAM0 —0x00
0xBETCNT4Счётный регистр таймера 4данные0x00
0xBFTC4HСтаршие биты таймера 4 (общий временный регистр)данные0x00
0xC0TCCR4AУправление таймером 4, регистр ACOM4A1 COM4A0 COM4B1 COM4B0 FOC4A FOC4B PWM4A PWM4B0x00
0xC1TCCR4BУправление таймером 4, регистр BPWM4X PSR4 DTPS41 DTPS40 CS43 CS42 CS41 CS400x00
0xC2TCCR4CУправление таймером 4, регистр CCOM4A1S COM4A0S COM4B1S COM4B0S COM4D1 / COM4D1S COM4D0 / COM4D0S FOC4D PWM4D0x00
0xC3TCCR4DУправление таймером 4, регистр DFPIE4 FPEN4 FPNC4 FPES4 FPAC4 FPF4 WGM41 WGM400x00
0xC4TCCR4EУправление таймером 4, регистр ETLOCK4 ENHC4 OC4OE5 OC4OE4 OC4OE3 OC4OE2 OC4OE1 OC4OE00x00
0xC5CLKSEL0Выбор источника тактирования, регистр 0RCSUT1 RCSUT0 EXSUT1 EXSUT0 RCE EXTE — CLKS—
0xC6CLKSEL1Выбор источника тактирования, регистр 1RCCKSEL3 RCCKSEL2 RCCKSEL1 RCCKSEL0 EXCKSEL3 EXCKSEL2 EXCKSEL1 EXCKSEL00x20
0xC7CLKSTAСостояние генераторов— — — — — — RCON EXTON—
0xC8UCSR1AСостояние USART1, регистр ARXC1 TXC1 UDRE1 FE1 DOR1 UPE1 / PE1 U2X1 MPCM10x20
0xC9UCSR1BУправление USART1, регистр BRXCIE1 TXCIE1 UDRIE1 RXEN1 TXEN1 UCSZ12 RXB81 TXB810x00
0xCAUCSR1CФормат кадра USART1, регистр CUMSEL11 UMSEL10 UPM11 UPM10 USBS1 UCSZ11 UCSZ10 UCPOL10x06
0xCBUCSR1DУправление потоком USART1 (RTS и CTS)— — — — — — CTSEN RTSEN—
0xCCUBRR1Скорость USART116 бит—
0xCEUDR1Данные USART1данные0x00
0xCFOCR4AРегистр сравнения A таймера 4данные0x00
0xD0OCR4BРегистр сравнения B таймера 4данные0x00
0xD1OCR4CРегистр сравнения C таймера 4данные—
0xD2OCR4DРегистр сравнения D таймера 4данные0x00
0xD4DT4Мёртвое время таймера 4DT4H3 DT4H2 DT4H1 DT4H0 DT4L3 DT4L2 DT4L1 DT4L00x00
0xD7UHWCONСтабилизатор выводов USB— — — — — — — UVREGE0x00
0xD8USBCONУправление USBUSBE — FRZCLK OTGPADE — — — VBUSTE—
0xD9USBSTAСостояние USB— — — — — — ID VBUS—
0xDAUSBINTФлаг прерывания по VBUS— — — — — — — VBUSTI—
0xE0UDCONУправление USB-устройством— — — — RSTCPU LSM RMWKUP DETACH0x01
0xE1UDINTФлаги прерываний USB-устройства— UPRSMI EORSMI WAKEUPI EORSTI SOFI — SUSPI0x00
0xE2UDIENРазрешение прерываний USB-устройства— UPRSME EORSME WAKEUPE EORSTE SOFE — SUSPE0x00
0xE3UDADDRАдрес USB-устройстваADDEN UADD6 UADD5 UADD4 UADD3 UADD2 UADD1 UADD00x00
0xE4UDFNUMНомер кадра USB16 бит0x0000
0xE6UDMFNОшибка номера кадра USB— — — FNCERR — — — ——
0xE8UEINTXФлаги прерываний выбранной конечной точкиFIFOCON NAKINI RWAL NAKOUTI RXSTPI RXOUTI STALLEDI TXINI0x00
0xE9UENUMНомер выбранной конечной точки— — — — — EPNUM2 EPNUM1 EPNUM00x00
0xEAUERSTСброс FIFO конечных точек— EPRST6 EPRST5 EPRST4 EPRST3 EPRST2 EPRST1 EPRST00x00
0xEBUECONXУправление выбранной конечной точкой— — STALLRQ STALLRQC RSTDT — — EPEN0x00
0xECUECFG0XКонфигурация конечной точки, регистр 0EPTYPE1 EPTYPE0 — — — — — EPDIR0x00
0xEDUECFG1XКонфигурация конечной точки, регистр 1— EPSIZE2 EPSIZE1 EPSIZE0 EPBK1 EPBK0 ALLOC —0x00
0xEEUESTA0XСостояние конечной точки, регистр 0CFGOK OVERFI UNDERFI — DTSEQ1 DTSEQ0 NBUSYBK1 NBUSYBK00x00
0xEFUESTA1XСостояние конечной точки, регистр 1— — — — — CTRLDIR CURRBK1 CURRBK00x00
0xF0UEIENXРазрешение прерываний выбранной конечной точкиFLERRE NAKINE — NAKOUTE RXSTPE RXOUTE STALLEDE TXINE0x00
0xF1UEDATXДанные FIFO выбранной конечной точкиDAT7 DAT6 DAT5 DAT4 DAT3 DAT2 DAT1 DAT00x00
0xF2UEBCLXЧисло байтов в банке конечной точки, младший байтBYCT7 BYCT6 BYCT5 BYCT4 BYCT3 BYCT2 BYCT1 BYCT00x00
0xF3UEBCHXЧисло байтов в банке конечной точки, старшие биты— — — — — BYCT10 BYCT9 BYCT80x00
0xF4UEINTПрерывания конечных точек по номерам— EPINT6 EPINT5 EPINT4 EPINT3 EPINT2 EPINT1 EPINT00x00

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

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

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

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

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

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

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

Источники

  1. Microchip. Atmel. ATmega16U4/32U4 datasheet (7766J) — сводка регистров, диаграммы битов и значения после сброса
  2. Microchip ATmega_DFP 3.6.299, описание ATmega32U4 (ATDF) — регистры, битовые поля и их значения, лицензия Apache-2.0

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