Смекни!
smekni.com

Разработка микропроцессорного устройства управления (стр. 2 из 3)

-Внутренняя энергонезависимая память типа EEPROM объемом до 4 Кбайт представляет собой самостоятельную матрицу, обращение к которой осуществляется через специальные регистры ввода-вывода;

Регистры общего назначения.

В микропроцессоре ATmega 128 все 32 регистра общего назначения непосредственно доступны АЛУ. Благодаря этому любой регистр общего назначения может использоваться во всех командах и как операнд источник и как операнд приемник. Такое решение (в сочетании с конвейерной обработкой) позволяет АЛУ выполнять одну операцию за один машинный цикл.

Последние шесть регистров общего назначения могут также объединяться в три 16-разрядных регистра X, Y, и Z, используемых в качестве указателей при косвенной адресации памяти данных.

Каждый регистр имеет свой собственный адрес в памяти данных. Поэтому к ним можно обращаться двумя способами (как к регистрам и как к памяти), несмотря на то, что физически эти регистры не являются ячейками ОЗУ. Такое решение является еще одной отличительной особенностью архитектуры AVR, повышается эффективность работы микроконтроллера и его производительность.

Регистры ввода/вывода:

Все регистры ввода/вывода можно разделить на две группы – служебные регистры и регистры, относящиеся к конкретным периферийным устройствам.

Размещение в памяти регистров ввода/вывода приведено в таблице 3.1. В скобках указываются соответствующие им адреса ячеек ОЗУ.

Название Адрес Функция
UCSR1C ($9D) Регистр управления и состояния С USART1
UDR1 ($9C) Регистр данных USART1
UCSR1A ($9B) Регистр управления и состояния A USART1
UCSR1B ($9A) Регистр управления и состояния В USART1
UBRR1L ($99) Регистр скорости передачи USART1, младший байт
UBRR1H ($98) Регистр скорости передачи USART1, старший байт
UCSR0C ($95) Регистр управления и состояния С USART0
UBRR0H ($90) Регистр скорости передачи USART0, старший байт
TCCR3C ($8C) Регистр управления С таймера/счетчика ТЗ
TCCR3A ($8B) Регистр управления А таймера/счетчика ТЗ
TCCR3B ($8A) Регистр управления В таймера/счетчика ТЗ
TCNT3H ($89) Счетный регистр таймера/счетчика ТЗ, старший байт
TCNT3H ($88) Счетный регистр таймера/счетчика ТЗ, младший байт
OCR3AH ($87) Регистр совпадения А таймера/счетчика ТЗ, старший байт
OCR3AL ($86) Регистр совпадения А таймера/счетчика ТЗ, младший байт
OCR3BH ($85) Регистр совпадения В таймера/счетчика ТЗ, старший байт
OCR3BL ($84) Регистр совпадения В таймера/счетчика ТЗ, младший байт
OCR3CH ($83) Регистр совпадения С таймера/счетчика ТЗ, старший байт
OCR3CL ($82) Регистр совпадения С таймера/счетчика ТЗ, младший байт
ICR3H ($81) Регистр захвата таймера/счетчика ТЗ, старший байт
ICR3L ($80) Регистр захвата таймера/счетчика ТЗ, младший байт
ETIMSK ($7D) Дополнительный регистр маски прерываний от таймеров/счетчиков
ETIFR ($7C) Дополнительный регистр флагов прерываний от таймеров/счетчиков
TCCR1C ($7A) Регистр управления С таймера/счетчика Т1
OCR1CH ($79) Регистр совпадения С таймера/счетчика Т1, старший байт
OCR1CL ($78) Регистр совпадения С таймера/счетчика Т1, младший байт
TWCR ($74) Регистр управления TWI
TWDR ($73) Регистр данных TWI
TWAR ($72) Регистр адреса TWI
TWSR ($71) Регистр состояния TWI
TWBR ($70) Регистр скорости передачи TWI
OSCCAL ($6F) Регистр калибровки тактового генератора
XMCRA ($6D) Регистр управления А внешней памятью
XMCRB ($6C) Регистр управления В внешней памятью
EICRA ($6A) Регистр управления А внешними прерываниями
SPMCR ($68) Регистр управления памятью программ
PORTG ($65) Регистр данных порта G
DDRG ($64) Регистр направления данных порта G
PORTF ($62) Регистр данных порта F
DDRF ($61) Регистр направления данных порта F
SREG $3F($5F) Регистр состояния
SPH $3E($5E) Указатель стека, старший байт
SPL $3D($5D) Указатель стека, младший байт
XDIV $3C($5C) Регистр управления делителем тактовой частоты
RAMPZ $3B($5B) Регистр выбора страницы
EICRB $3A($5A) Регистр управления В внешними прерываниями
EIMSK $39($59) Регистр маски внешних прерываний
EIFR $38 ($58) Регистр флагов внешних прерываний
TIMSK $37($57) Регистр маски прерываний от таймеров/счетчиков
TIFR $36($56) Регистр флагов прерываний от таймеров/счетчиков
MCUCR $35($55) Регистр управления микроконтроллером
MCUCSR $34($54) Регистр управления и состояния микроконтроллера
TCCR0 $33($53) Регистр управления таймером/счетчиком Т0
TCNT0 $32($52) Счетный регистр таймера/счетчика Т0
OCR0 $31($51) Регистр совпадения таймера/счетчика Т0
ASSR $30($50) Регистр состояния асинхронного режима
TCCR1A $2F($4F) Регистр управления А таймера/счетчика Т1
TCCR1B $2E($4E) Регистр управления В таймера/счетчика Т1
TCNT1H $2D($4D) Счетный регистр таймера/счетчика Т1, старший байт
TCNT1L $2C($4C) Счетный регистр таймера/счетчика Т1, младший байт
OCR1AH $2B($4B) Регистр совпадения А таймера/счетчика Т1, старший байт
OCR1AL $2A($4A) Регистр совпадения А таймера/счетчика Т1, младший байт
OCR1BH $29($49) Регистр совпадения В таймера/счетчика Т1, старший байт
OCR1BL $28($48) Регистр совпадения В таймера/счетчика Т1,младший байт
ICR1H $27($47) Регистр захвата таймера/счетчика Т1, старший байт
TCCR2 $25($45) Счетный регистр таймера/счетчика Т2
TCNT2 $24($44) Регистр совпадения таймера/счетчика Т2
OCR2 $23($43) Регистр совпадения таймера/счетчика Т2
OCDR $22($42) Регистр внутрисхемной отладки
WDTCR $21($41) Регистр управления сторожевым таймером
SFIOR $20($40) Регистр специальных функций
EEARH $1F($3F) Регистр адреса EEPROM, старший байт
EEARL $1E($3E) Регистр адреса EEPROM, младший байт
EEDR $1D($3D) Регистр данных EEPROM
EECR $1C($3C) Регистр управления EEPROM
PORTA $1B($3B) Регистр данных порта А
DDRA $1A($3A) Регистр направления данных порта А
PINA $19($39) Выводы порта А
PORTB $18($38) Регистр данных порта В
DDRB $17($37) Регистр направления данных порта В
PINB $16($36) Выводы порта В
PORTC $15($35) Регистр данных порта С
DDRC $14($34) Регистр направления данных порта С
PINC $13($33) Выводы порта С
PORTD $12($32) Регистр данных порта D
DDRD $11($31) Регистр направления данных порта D
PIND $10($30) Выводы порта D
SPDR $0F($2F) Регистр данных SPI
SPSR $0E($2E) Регистр состояния SPI
SPCR $0D($2D) Регистр управления SPI
UDR0 $0C($2C) Регистр данных USART0
UCSR0A $0B($2B) Регистр управления и состояния A USART0
UCSR0B $0A($2A) Регистр управления и состояния В USART0
UBRR0L $09($29) Регистр скорости передачи USART0, младший байт
ACSR $08($28) Регистр управления и состояния аналогового компаратора
ADMUX $07($27) Регистр управления мультиплексором АЦП
ADCSRA $06($26) Регистр управления и состояния АЦП
ADCH $05($25) Регистр данных АЦП, старший байт
ADCL $04($24) Регистр данных АЦП, младший байт
PORTE $03($23) Регистр данных порта Е
DDRE $02($22) Регистр направления данных порта Е
PINE $01($21) Выводы порта Е
PINF $00($20) Выводы порта F

Прерывания.

Прерывание прекращает нормальный ход программы для выполнения приоритетной задачи, определяемой внутренним или внешним событием микроконтроллера. При возникновении прерывания микроконтроллер сохраняет в стеке содержимое счетчика команд PC и загружает в него адрес соответствующего вектора прерывания. По этому адресу, как правило, находится команда безусловного перехода к подпрограмме обработки прерывания. Последней командой подпрограммы обработки прерывания должна быть команда RETI, которая обеспечивает возврат в основную программу и восстановление предварительно сохраненного счетчика команд.

Таблица векторов прерываний.

Младшие адреса памяти программ начиная с адреса $0002 отведены под таблицу прерываний. Каждому прерыванию соответствует адрес в этой таблице, который загружается в счетчик команд при возникновении прерывания. Положение вектора в таблице также определяет приоритет соответствующего прерывания: чем меньше адрес, тем выше приоритет соответствующего прерывания.

Положение таблицы векторов прерываний может быть изменено. Таблица может располагаться не только в начале памяти программ, а также и в начале области загрузчика. Причем перемещение таблицы может быть осуществлено в ходе выполнения программы.

Распределение адресов таблицы векторов прерываний приведено в таблице 3.2.

Обработка прерываний:

Для глобального разрешения/запрещения прерываний предназначен флаг I регистра SREG. Для разрешения прерываний он должен быть установлен в «1», а для запрещения сброшен в «0». Индивидуальное разрешение или запрещение прерываний производится установкой/сбросом соответствующих разрядов регистров масок прерываний.