Главная страница
Навигация по странице:

  • Phase Correct PWM , 8 бит

  • Лабораторные работы по микропроцессорным системам. лб7.2Voroninaиспр1зам2es. Отчет по лабораторной работе 2 Atmel ч. 2 Воронин Д. А. Группа 16эпв Проверил Слядзевская К. П


    Скачать 34.74 Kb.
    НазваниеОтчет по лабораторной работе 2 Atmel ч. 2 Воронин Д. А. Группа 16эпв Проверил Слядзевская К. П
    АнкорЛабораторные работы по микропроцессорным системам
    Дата23.09.2020
    Размер34.74 Kb.
    Формат файлаdocx
    Имя файлалб7.2Voroninaиспр1зам2es.docx
    ТипОтчет
    #139348

    НИЖЕГОРОДСКИЙ ГОСУДОРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМ. Р.Е. АЛЕКСЕЕВА

    Кафедра «Электропривод и автоматизация промышленных установок»

    Дисциплина «Микропроцессорные системы»

    Отчет по лабораторной работе №2

    Atmel ч.2

    Выполнил:

    Воронин Д.А.
    Группа 16-ЭПв

    Проверил:

    Слядзевская К.П.

    г. Нижний Новгород

    2020

    Цель работы:

    Определить время нажатого состояния кнопки SA3 с использованием таймера 1 (режим 1).

    Код программы:

    Где расчет выдержки времени до переполнения таймера 1 в режиме 1?

    16-разрядный таймер Т1 работает в режиме Phase Correct PWM, 8 бит. по каналу А. Прерывание от таймера возникает через время, определяемое по формуле:



    где СLK – коэффициент делителя частоты,

    х – число, записанное в регистр сравнения канала А ОСR1A,

    тактовая частота кварцевого генератора,Гц

    .

    Примем СLK = 1024, ,для периода 1 сек получим значение:

    x= 0.5*1000000/2048 = 244 = F4h.

    Прерывание по переполнению длжно наступать каждые 0,5 сек поэтому загружать в ТС1 надо значение 256-244 = 12 = 0Сh. В обработчике прерывания будем перезагружать ТС1.?

    x фиксированное значение 255, значит



    Где расписаны форматы регистров TIMSK, TCCR1A, TCCR1B и их числовые значения?

    Для разрешения и запрета прерываний от таймеров/счетчиков в микроконтроллере ATtiny2313 используется специальный регистр ввода/вывода TIMSK, расположенный по адресу $39($59). Его формат показан на рисунке 5.16.

    Бит

    7

    6

    5

    4

    3

    2

    1

    0




    TOIE1

    OCIE1A

    OCIE1B

    -

    TICIE1

    OCIE0B

    TOIE0

    OCIE0A

    Чтение/запись

    R/W

    R/W

    R/W

    R/W

    R/W

    R/W

    R/W

    R/W

    Начальное значение

    0

    0

    0

    0

    0

    0

    0

    0



    Рисунок 5.16 - Формат регистра TIMSK
    Бит 7 TOIE1. Разрешение прерывания по переполнению таймера Т1.

    Бит 6 OCIE1A. Разрешение прерывания по событию «Совпадение А» таймера Т1.

    Бит 5 OCIE1В. Разрешение прерывания по событию «Совпадение В» таймера Т1.

    Бит 3 TICIE1. Разрешение прерывания по событию «Захват» таймера Т1.

    Бит 2 OCIE0B. Разрешение прерывания по событию «Совпадение В» таймера Т0.

    Бит 1 TOIE0. Разрешение прерывания по переполнению таймера Т0.

    Бит 0 OCIE0A. Разрешение прерывания по событию «Совпадение А» таймера Т0.

    Где численные значения битов TIMSK?
    Форматы регистров управления таймером Т1 TCCR1A, TCCR1B и TCCR1C показаны на рисунках 5.20, 5.21 и 5.22 соответственно.


    Бит

    7

    6

    5

    4

    3

    2

    1

    0







    COM1A1

    COM1A0

    COM1B1

    COM1B0

    -

    -

    WGM11

    WGM10

    Чтение/запись

    R/W

    R/W

    R/W

    R/W

    R

    R

    R/W

    R/W




    Начальное значение

    0

    0

    0

    0

    0

    0

    0

    0





    Рисунок 5.20 – Формат регистра TCCR1А



    Бит

    7

    6

    5

    4

    3

    2

    1

    0




    ICNC1

    ICES1

    -

    WGM13

    WGM12

    CS12

    CS11

    CS10

    Чтение/запись

    R/W

    R/W

    R

    R/W

    R/W

    R/W

    R/W

    R/W

    Начальное значение

    0

    0

    0

    0

    0

    0

    0

    0


    Рисунок 5.21 – Формат регистра TCCR1B



    Бит

    7

    6

    5

    4

    3

    2

    1

    0




    FOC1A

    FOC1B

    -

    -

    -

    -

    -

    -

    Чтение/запись

    R/W

    R/W

    R

    R

    R

    R

    R

    R

    Начальное значение

    0

    0

    0

    0

    0

    0

    0

    0


    Рисунок 5.22 – Формат регистра TCCR1С
    Биты COM1A1:COM1A0 и COM1В1:COM1В0 определяют состояние выводов OC1A и OC1B при наступлении события «Совпадение». Влияние этих битов на поведение выводов зависит от выбранного режима работы таймера.

    Биты WGM13:WGM10 определяют режим работы таймера Т1 согласно таблице 5.15.
    Таблица 5.15 – Выбор режимов работы таймера Т1

    WGM13

    WGM12

    WGM11

    WGM10

    Режим работы таймера

    Модуль
    счета

    0

    0

    0

    0

    Normal

    $FFFF

    0

    0

    0

    1

    Phase Correct PWM, 8 бит

    $00FF

    0

    0

    1

    0

    Phase Correct PWM, 9 бит

    $01FF

    0

    0

    1

    1

    Phase Correct PWM, 10 бит

    $03FF

    0

    1

    0

    0

    СТС

    OCR1A

    0

    1

    0

    1

    Fast PWM, 8 бит

    $00FF

    0

    1

    1

    0

    Fast PWM, 9 бит

    $01FF

    0

    1

    1

    0

    Fast PWM, 10 бит

    $03FF

    1

    0

    0

    0

    Phase and Frequency Correct PWM

    ICR1

    1

    0

    0

    1

    Phase and Frequency Correct PWM

    OCR1A

    1

    0

    1

    0

    Phase Correct PWM

    ICR1

    1

    0

    1

    1

    Phase Correct PWM

    OCR1A

    1

    1

    0

    0

    CTC

    ICR1

    1

    1

    0

    1

    Зарезервировано

    -

    1

    1

    1

    0

    Fast PWM

    ICR1

    1

    1

    1

    1

    Fast PWM

    OCR1A


    Таблица 5.10 – Выбор источника тактового сигнала Т1

    CS12

    CS11

    CS10

    Источник тактового сигнала

    0

    0

    0

    Таймер остановлен

    0

    0

    1

    CLKI/O

    0

    1

    0

    CLKI/O /8

    0

    1

    1

    CLKI/O /64

    1

    0

    0

    CLKI/O /256

    1

    0

    1

    CLKI/O /1024

    1

    1

    0

    Вход Т1, счет по спадающему фронту

    1

    1

    1

    Вход Т1, счет по нарастающему фронту


    Для выбора режима работы Т1 в регистр TCCR1A записываем значение

    Бит

    7

    6

    5

    4

    3

    2

    1

    0







    COM1A1

    COM1A0

    COM1B1

    COM1B0

    -

    -

    WGM11

    WGM10




    0

    0

    0

    0

    0

    0

    0

    1




    режим 1 - Phase Correct PWM, 8 бит

    а в TCCR1B

    Бит

    7

    6

    5

    4

    3

    2

    1

    0




    ICNC1

    ICES1

    -

    WGM13

    WGM12

    CS12

    CS11

    CS10




    0

    0

    0

    0

    0

    1

    0

    1
















    CLK=1024

    В качестве допуска к лабораторной работе в отчете привести временную диаграмму работы заданного таймера в соответствующем режиме и ее описание. При описании ответить на следующие вопросы:

    Где нарисована временная диаграмма таймера 1 в режиме 1?

    Когда содержимое счетного регистра таймера увеличивается на единицу?

    КОГДА ПРИХОДИТ ИМПУЛЬС С ПРЕДДЕЛИТЕЛЯ ТАКТОВОЙ ЧАСТОТЫ.

    До какого значения идет счет и когда какой флаг прерывания от таймера устанавливается?

    Счет в режиме 1 идет до FFh, а потом до … . Флаг переполнения … устанавливается в 1 когда?

    Частота работы равна 1МГц.

    .include "tn2313def.inc"

    .org $0

    rjmp RESET ; Reset Handler

    nop; rjmp INT0 ; External Interrupt0 Handler

    nop; rjmp INT1 ; External Interrupt1 Handler

    nop; rjmp TIM1_CAPT ; Timer1 Capture Handler

    nop; rjmp TIM1_COMPA ; Timer1 CompareA Handler

    rjmp TIM1_OVF ; Timer1 Overflow Handler

    nop; rjmp TIM0_OVF ; Timer0 Overflow Handler

    nop; rjmp USART0_RXC ; USART0 RX Complete Handler

    nop; rjmp USART0_DRE ; USART0,UDR Empty Handler

    nop; rjmp USART0_TXC ; USART0 TX Complete Handler

    nop; rjmp ANA_COMP ; Analog Comparator Handler

    nop; rjmp PCINT ; Pin Change Interrupt

    nop; rjmp TIMER1_COMPB ; Timer1 Compare B Handler

    nop; rjmp TIMER0_COMPA ; Timer0 Compare A Handler

    nop; rjmp TIMER0_COMPB ; Timer0 Compare B Handler

    nop; rjmp USI_START ; USI Start Handler

    nop; rjmp USI_OVERFLOW ; USI Overflow Handler

    nop; rjmp EE_READY ; EEPROM Ready Handler

    nop; rjmp WDT_OVERFLOW ; Watchdog Overflow Handler

    ;----------------------------------------------------------------

    .org $13

    RESET: ldi r16, low(RAMEND); Main program start

    out SPL,r16 ;Set Stack Pointer to top of RAM

    ser r16; настройка портов B на вывод и D наввод

    out DDRB,r16

    out PORTD,r16

    Нет настройки порта D на ввод – ПО УМОЛЧАНИЮ ВСЕ ПОРТЫ НАСТРРОЕНЫ НА ВВОД : DDRD=0

    ;out PORTD,r16 – ВКЛЮЧАЕТ ПОДТЯГИВАЮЩИЕ РЕЗИСТОРЫ НА ВСЕМ ПОРТУ = ЭТО И ЕСТЬ ВВОД

    clr r19

    clr r16;

    out DDRD,r16

    ldi r16,(1<
    out TCCR1A,r16

    ldi r16,(1<
    out TIMSK,r16
    sei;разрешить все прерывания

    ;--------------------------------------------------------------------------------

    M1: sbic PIND,2;если кнопка нажата?

    rjmp M1;

    rcall wait;Вставить программную выдержку для избавления от дребезга

    clr r19

    ldi r16,(1<
    out TCCR1B,r16
    M11: sbis PIND,2;если кнопка отжата

    rjmp M11;

    rcall wait;Вставить программную выдержку для избавления от дребезга

    clr r16

    out TCCR1B,r16;останов ТС1

    out PORTB,r19;выводим результат

    rjmp M1

    ;-----------------------------------------------------------

    TIM1_OVF:;обработчик прерываний

    inc r19;инкремент счетчика секунд
    out_loop:;выход из прерывания

    reti
    wait: ldi r18,$40

    w01: dec r18

    brne w01

    ret


    написать администратору сайта