При установленном ШИМ режиме таймер/счетчик и регистр сравнения выхода OCR2 формируют 8-разрядный, без ложных выбросов и с правильной фазой ШИМ сигнал с выходом через PD7(OC2) выводы. Таймер/счетчик2 работает как реверсивный счетчик, считающий от $00 до $FF, после чего он считает в обратную сторону до нуля и только после этого начинает новый цикл. Когда состояние счетчика совпадает с содержимым регистра сравнения выхода выводы PD7(OC2) устанавливаются или очищаются, в соответствии с установленными, в регистрах управления таймерами/счетчиками TCCR2, битами COM21/COM20. См. табл. 2.15.
Таблица 2.15. Выбор режима сравнения в ШИМ режиме
COM21 | COM20 | Эффект, оказываемый на вывод Compare/PWM |
Не подсоединен | ||
Не подсоединен | ||
Очистка при совпадении, счет по нарастанию. Установка при совпадении, счет по убыванию (неинвертирующий ШИМ). | ||
Очистка при совпадении, счет по убыванию. Установка при совпадении, счет по нарастанию (инвертирующий ШИМ). |
В ШИМ режиме при записи содержимое регистра сравнения выхода пересылается на временное хранение. Содержимое фиксируется при достижении таймером/счетчиком состояния $FF. Такой прием предохраняет от появления ШИМ импульсов увеличенной ширины (ложных выбросов) в случае несинхронной записи OCR2. Пример см. на рис. 2.2.
Рис. 2.2. Эффект несинхронной фиксации OCR
В промежуток времени между операциями записи и фиксации считывание из OCR2 приведет к считыванию из места временного хранения. Это означает, что чаще всего при чтении значения уставки считывание будет производиться из OCR2.
При состоянии регистра OCR $00 или $FF выход ШИМ будет удерживаться на низком или высоком уровне, в зависимости от установок COM21/COM20. См. табл. 2.16.
Таблица 2.16.Состояние ШИМ выходов при OСR2 = $00 или $FF
COM21 | COM20 | OCR2 | Выход PWMn |
$00 | L – низкий уровень | ||
$FF | H – высокий уровень | ||
$00 | H – высокий уровень | ||
$FF | L – низкий уровень |
В ШИМ режиме флаг переполнения таймера TOV2 устанавливается при смене направления счета при $00. Прерывания по переполнению таймера 2 работает так же, как и в нормальном режиме таймеров/счетчиков, т.е. они срабатывают когда TOV2 установлены, и разрешены прерывания по переполнению таймера и глобальному прерыванию. Это относится также к флагам сравнения выхода таймеров и прерываниям. Частота ШИМ будет соответствовать тактовой частоте таймера деленной на 510.
Как уже указывалось выше, таймер/счетчик2 может работать в асинхронном режиме. Тогда он тактируется сигналом вывода 28 (T0SC1). При этом выводы РС6 и РС7, связанные с генератором, не могут использоваться как общие выводы входа/выхода. В лабораторном комплексе асинхронный режим работы таймер/счетчика2 не предусмотрен.
ldi r17,$07;Для счетчиков
out tccr0,r17
ldi r17,$07
out tccr1b,r17
ldi r17,$00
sts des,r17
ldi r17,$00
sts ed,r17
Адрес | Обознач. | Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 | |
$3F ($5F) | SREG | I | T | H | S | V | N | Z | C | |
$3E ($5E) | SPH | — | — | — | — | — | — | SP9 | SP8 | |
$3D ($5D) | SPL | SP7 | SP6 | SP5 | SP4 | SP3 | SP2 | SP1 | SP0 | |
$3C ($5C) | Reserved | |||||||||
$3B ($5B) | GIMSK | INT1 | INT0 | — | — | — | — | — | — | |
$3A ($5A) | GIFR | INTF1 | INTF0 | |||||||
$39 ($59) | TIMSK | OCIE2 | TOIE2 | TICIE1 | OCIE1A | OCIE1B | TOIE1 | — | TOIE0 | |
$38 ($58) | TIFR | OCF2 | TOV2 | ICF1 | OCF1A | OCF1B | TOV1 | — | TOV0 | |
$37 ($57) | Reserved | |||||||||
$36 ($56) | Reserved | |||||||||
$35 ($55) | MCUCR | — | SE | SM1 | SM0 | ISC11 | ISC10 | ISC01 | ISC00 | |
$34 ($54) | MCUSR | — | — | — | — | — | — | EXTRF | PORF | |
$33 ($53) | TCCR0 | — | — | — | — | — | CS02 | CS01 | CS00 | |
$32 ($52) | TCNT0 | Таймер/счетчик0 (8-разрядный) | ||||||||
$31 ($51) | Reserved | |||||||||
$30 ($50) | Reserved | |||||||||
$2F ($4F) | TCCR1A | COM1A1 | COM1A0 | COM1B1 | COM1B0 | — | — | PWM11 | PWM10 | |
$2E ($4E) | TCCR1B | ICNC1 | ICES1 | — | — | CTC1 | CS12 | CS11 | CS10 | |
$2D ($4D) | TCNT1H | Старший байт регистра счетчика Таймера/ счетчика1 | ||||||||
$2С ($4С) | TCNT1L | Младший байт регистра счетчика Таймера/ счетчика1 | ||||||||
$2В ($4В) | OCR1AH | Старший байт регистра сравнения A выхода Таймера/счетчика1 | ||||||||
$2A ($4A) | OCR1AL | Младший байт регистра сравнения A выхода Таймера/счетчика1 | ||||||||
$29 ($49) | OCR1BH | Старший байт регистра сравнения B выхода Таймера/счетчика1 | ||||||||
$28 ($48) | OCR1BL | Младший байт регистра сравнения B выхода Таймера/счетчика1 | ||||||||
$27 ($47) | ICR1H | Старший байт регистра захвата входа Таймера/счетчика1 | ||||||||
$26 ($46) | ICR1L | Младший байт регистра захвата входа Таймера/счетчика1 | ||||||||
$25 ($45) | TCCR2 | — | PWM2 | COM21 | COM20 | CTC2 | CS22 | CS21 | CS20 | |
$24 ($44) | TCNT2 | Таймер/счетчик2 (8-разрядный) | ||||||||
$23 ($43) | OCR2 | Регистр сравнения выхода Таймера/счетчика2 | ||||||||
$22 ($42) | ASSR | — | — | — | — | AS2 | TCN2UB | OCR2UB | TCR2UB | |
$21 ($41) | WDTCR | — | — | — | WDTOE | WDE | WDP2 | WDP1 | WDP0 | |
$20 ($40) | Reserved | |||||||||
$1F ($3F) | EEARH | EEAR9 | ||||||||
$1E ($3E) | EEARL | EEAR7 | EEAR6 | EEAR5 | EEAR4 | EEAR3 | EEAR2 | EEAR1 | EEAR0 | |
$1D ($3D) | EEDR | Регистр данных EEPROM | ||||||||
$1C ($3C) | EECR | — | — | — | — | EERIE | EEMWE | EEWE | EERE | |
$1B ($3B) | PORTA | PORTA7 | PORTA6 | PORTA5 | PORTA4 | PORTA3 | PORTA2 | PORTA1 | PORTA0 | |
$1A ($3A) | DDRA | DDA7 | DDA6 | DDA5 | DDA4 | DDA3 | DDA2 | DDA1 | DDA0 | |
$19 ($39) | PINA | PINA7 | PINA6 | PINA5 | PINA4 | PINA3 | PINA2 | PINA1 | PINA0 | |
$18 ($38) | PORTB | PORTB7 | PORTB6 | PORTB5 | PORTB4 | PORTB3 | PORTB2 | PORTB1 | PORTB0 | |
$17 ($37) | DDRB | DDB7 | DDB6 | DDB5 | DDB4 | DDB3 | DDB2 | DDB1 | DDB0 | |
$16 ($36) | PINB | PINB7 | PINB6 | PINB5 | PINB4 | PINB3 | PINB2 | PINB1 | PINB0 | |
$15 ($35) | PORTC | PORTC7 | PORTC6 | PORTC5 | PORTC4 | PORTC3 | PORTC2 | PORTC1 | PORTC0 | |
$14 ($34) | DDRC | DDC7 | DDC6 | DDC5 | DDC4 | DDC3 | DDC2 | DDC1 | DDC0 | |
$13 ($33) | PINC | PINC7 | PINC6 | PINC5 | PINC4 | PINC3 | PINC2 | PINC1 | PINC0 | |
$12 ($32) | PORTD | PORTD7 | PORTD6 | PORTD5 | PORTD4 | PORTD3 | PORTD2 | PORTD1 | PORTD0 | |
$11 ($31) | DDRD | DDD7 | DDD6 | DDD5 | DDD4 | DDD3 | DDD2 | DDD1 | DDD0 | |
$10 ($30) | PIND | PIND7 | PIND6 | PIND5 | PIND4 | PIND3 | PIND2 | PIND1 | PIND0 | |
$0F ($2F) | SPDR | Регистр данных SPI | ||||||||
$0E ($2E) | SPSR | SPIF | WCOL | — | — | — | — | — | — | |
$0D ($2D) | SPCR | SPIE | SPE | DORD | MSTR | CROL | CPHA | SPR1 | SPR0 | |
$0C ($2C) | UDR | Регистр данных UART | ||||||||
$0B ($2B) | USR | RXC | TXC | UDRE | FE | OR | — | — | — | |
$0A ($2A) | UCR | RXCIE | TXCIE | UDRIE | RXEN | TXEN | CHR9 | RXB8 | TXB8 | |
$09 ($29) | UBRR | Регистр управления скоростью UART | ||||||||
$08 ($28) | ACSR | ACD | — | ACO | ACI | ACIE | ACIC | ACIS1 | ACIS0 | |
$07 ($27) | ADMUX | — | — | — | — | — | MUX2 | MUX1 | MUX0 | |
$06 ($26) | ADCSR | ADEN | ADSC | ADFR | ADIF | ADIE | ADPS2 | ADPS1 | ADPS0 | |
$05 ($25) | ADCH | — | — | — | — | — | — | ADC9 | ADC8 | |
$04 ($24) | ADCL | ADC7 | ADC6 | ADC5 | ADC4 | ADC3 | ADC2 | ADC1 | ADC0 | |
$03 ($20) | Reserved | |||||||||
$02 ($22) | Reserved | |||||||||
$01 ($21) | Reserved | |||||||||
$00 ($20) | Reserved | |||||||||
Упрощенная схема блока управления представлена на рисунке 1.3. В схеме в качестве органов управления использовано пять кнопок (SB1 – SB6) и пять тумблеров (SA1 – SÀ5).
Кнопки SB1…SB5 и тумблеры SA1…SA5 подключены однотипно. При не нажатой кнопке и отключенном тумблере (нижнее положение тумблера) на соответствующие выводы микроконтроллера DD1 подаётся уровень логического нуля, а при нажатой кнопке и включенном тумблере – уровень логической единицы. В принципе неподключенный вывод микроконтроллера, используемый для ввода сигнала, воспринимается как вход, на который подан высокий уровень сигнала, соответствующий логической единице. Однако практический опыт показал, что при этом выше влияние помех и сильнее проявляется дребезг контактов. Для борьбы с влиянием дребезга контактов дополнительно на входах запросов внешнего прерывания INT0, INT1 и на входах таймеров /счетчиков T0 и T1 установлены RC цепочки на резисторах R5…R8 и конденсаторах C3…C6.
Сброс микроконтроллера осуществляется внешним сигналом. В блоке управления рабочего места эту роль выполняет кнопка SB6. При её нажатии сигнал низкого уровня подаётся на вывод RESET. При работе с комплексом для получения надежного сброса избегайте слишком кратковременных нажатий кнопки SB6 «Сброс». Эту кнопку следует удерживать в нажатом состоянии 1…3с.
При включении питания или при нажатии кнопки «Сброс» формируется прерывание по вектору $000 с наивысшим приоритетом. По этому адресу должна располагаться команда перехода rjmp к началу программы пользователя. При любом сбое в работе программы микроконтроллера прибегайте к услугам кнопки «Сброс».
Порт А микроконтроллера кроме функций восьмиразрядного двунаправленного порта ввода/вывода может выполнять альтернативную (дополнительную) к основной функции функцию аналого-цифрового преобразователя (АЦП). В БУ вывод 40 микроконтроллера, соответствующий биту PA0 порта А, используется для ввода аналогового сигнала. Аналоговый сигнал с уровнем напряжения 0…+5В снимается с потенциометра (потенциометрического резистора) R3. Гнезда XS1 и XS2 служат для подключения измерительного прибора для контроля напряжения, подаваемого на вход АЦП. Резистор R4 и стабилитрон VD3 служат для защиты входа АЦП от превышения допустимого уровня напряжения на входе АЦП и от переполюсовки при несанкционированной подаче внешнего напряжения на гнезда XS1 – XS2.
Гнезда XS3 и XS4 служат для наблюдения по осциллографу сигналов RxD и TxD при работе последовательного порта UART. Резисторы R1,R2 и стабилитроны VD1, VD2 служат для защиты входов PD0(RxD) и PD1(TxD) от несанкционированной подачи напряжения на рассматриваемые гнезда.
Через вилку разъема XР5 осуществляется связь БС с ЭВМ. Через эту вилку связываются с портом COM2 ПЭВМ последовательные порты микроконтроллера SPI и UART, а также подается напряжение питания БУ.
Резонатор ZQ1 и конденсаторы C7,C8 служат для работы внутреннего генератора тактовой частоты. В БУ использован резонатор на 8 МГц. Конденсаторы C1,C2,C9,C10,C11,C12 – фильтрующие.
В качестве выходных элементов используются три светодиода (зелёный, желтый, красный) VD4…VD6, звукоизлучатель («пищалка») HA1 и два семисегментных индикатора HG1 и HG2.
Порты A,B,C и D обеспечивают при выдаче сигнала логической единицы (при выходном напряжении высокого уровня) вытекающий ток не более 3мА. Этого явно не хватает для зажигания указанных светодиодов и сегментов семисегментных индикаторов. Для возможности их зажигания установлены резисторные сборки DR1 и DR2. Рассмотрим работу светодиода VD4. При выдаче на вывод 18 микроконтроллера логического нуля светодиод VD4 шунтируется открывшимся транзистором канала PD4 порта D и потому погашен. Втекающий ток в этот транзистор ограничивается левым резистором сборки DR1. При выдаче на вывод 18 микроконтроллера логической единицы транзистор рассматриваемого канала порта закрывается и через светодиод VD4 протекает ток от источника питания +5В, ограничиваемый параллельно включенными внутренним резистором порта и левым резистором сборки DR1.
В БУ используются семисегментные индикаторы HG1 и HG2 с общим катодом. Для замыкания катодов индикаторов на общий провод служат транзисторы VT1 и VT2. Они управляются соответственно битами PB2 и PB3 порта B. Резисторы R10 и R11 обеспечивают ограничение базовых токов транзисторов соответственно VT1 и VT2. Транзисторы VT1 и VT2 при соответствующей программе обеспечивают динамическую индикацию информации на семисегментных индикаторах, т.е. вывод различной информации на оба индикатора. В этом случае поочередно зажигается то первый, то второй индикатор. При достаточно большой частоте переключений создается иллюзия одновременного непрерывного свечения индикаторов. Для зажигания информации на первом индикаторе необходимо установить в «1» бит PB2 и записать в порт C код выводимого первого символа. Затем, через некоторую программно реализуемую задержку времени, нужно сбросить бит РB2, установить в «1» бит РB3 и подать на порт C код второго выводимого символа. Через задержку времени нужно сбросить бит РB3,установить в «1» бит РB2 и так далее.
Ток звукоизлучателя HA1 ограничивается резистором R12.
При нажатии на кнопку «Сброс» БУ все выводы портов находятся в третьем состоянии. Светодиоды VD4…VD6 должны гореть, а сегменты все погашены, так как транзисторы VT1 и VT2 заперты.
Адресация входных и выходных сигналов блока управления очевидна из рис. 1.4. Например, светодиод VD4 (зеленый) имеет адрес РORTD,4, а сегмент «d» индикаторов HG1 и HG2 – PORTC,3. На лицевой панели пульта управления (рис. 1.4) рядом с каждым элементом указана его адресация. В скобках указаны позиционные обозначения элементов в принципиальной схеме блока управления (рис. 1.4). У тумблеров SA4, SA5 и кнопок SB4, SB5 в скобках дополнительно указано функциональное обозначение входов микроконтроллера, на которые воздействуют указанные тумблеры и кнопки.
На плате индикации размещается жидкокристаллический индикатор (ЖКИ), переключатель режима работы и светодиод.
ЖКИ представляет собой многострочный текстовый дисплей. Он имеет четыре строки по 16 символов, встроенный знакогенератор и светодиодную подсветку. Для управления ЖКИ и клавиатурой рабочего места на плате индикации установлен микроконтроллер АТ89С51 со специально разработанной программой.
Студент на рабочем месте набирает программу как при обычной работе на ПЭВМ типа IBM, но контролирует индикацию не по монитору, а по ЖКИ. На мониторе ПЭВМ в соответствующем окне высвечивается информация точно в таком же виде, как на ЖКИ.
|
На рис. 1.4. представлен вид общий БУ. На лицевую панель в верхней части БУ выведены аппараты платы управления, в нижней части – платы индикации.
Подключение кабеля рабочего места к БУ осуществляется через разъём 1. Вращением движка потенциометра 4 обеспечивается изменение значения напряжения Uвх на входе аналогового преобразователя.
Пьезоэлектрический звукоизлучатель 5, три светодиода 6 и два семисегментных индикатора 7, как уже упоминалось выше, обеспечивают отображение выходных сигналов микроконтроллера. На рис. 1.4. на одном из индикаторов указаны обозначения сегментов, соответствующие принятым их обозначениям в принципиальной электрической схеме.
Микроконтроллер 3 установлен на плате в 40 – контактной панельке. Он в принципе может при необходимости извлекаться из БУ, но обычное его место – на плате. Программирование его осуществляется непосредственно на месте его установки.
Пять кнопок 8 и пять тумблеров 9 используются в качестве источников входных сигналов. Кнопка 2 «Сброс» обеспечивает аппаратный сброс микроконтроллера.
В нижней части БУ располагается ЖКИ 11, переключатель режима работы 12 и светодиод 10 индикации работы ЖКИ. Переключатель режима работы имеет два положения. Первое положение «Набор программы» обеспечивает связь ЖКИ с ПЭВМ. Во втором режиме «Управление объектом» ЖКИ отключается от последовательного порта ПЭВМ, а к последовательному порту ПЭВМ подключается последовательный порт UART изучаемого микроконтроллера, для управления виртуальным объектом автоматизации, воспроизводимом на экране монитора ПЭВМ.