Временные Диаграммы Таймера/Счетчика 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Временные Диаграммы Таймера/Счетчика



 

Т/Сn является Синхронным Модулем, а Тактовые Импульсы clkTO, как показано на следующем рисунке, являются Синхронизирующими. На Рисунке, также, видно, что происходит после установки Флага Прерывания. Рисунок 33 иллюстрирует, как Данные Счетчика изменяются во времени. На Рисунке видно, что Счетчик считает до Значения MAX, это относится ко всем ШИМ-режимам, кроме PCPWM-режима..

 

 

Рисунок - Временные Диаграммы Таймера/Счетчика (Предделитель не используется)

Рисунок показывает те же процессы, что на Рисунке 33, но с использованием Предделителя (fclkI/O/8)

 

Рисунок Временные Диаграммы Таймера/Счетчика при использовании Предделителя (fclkI/O/8)

 

Рисунок иллюстрирует установку Флагов Сравнения OCF0B и OCF0A (в Режиме Сравнения Регистров Сравнения) во всех ШИМ-режимах, за исключением СТС-режима и ШИМ-режима, где Регистр Сравнения OCR0A является TOP-значением.

 

 

Рисунок - Временные Диаграммы Таймера/Счетчика с Установкой Флагов OCF0x с использованием Предделителя (fclkI/O/8) Рисунок показывает установку Флага OCF0A и очищение TCNT0 в СТС-режиме и FPWM-режиме, где OCR0A является TOP-значением.

 

Рисунок - Временные Диаграммы Таймера/Счетчика с Очисткой Таймера в Режиме Сравнения с использованием Предделителя (fclkI/O/8)

 

 

Описание Регистров 8- битного Таймера / Счетчика 0 Регистр Управления А Таймера/Счетчика 0 – «TCCR0A»

 

 

Биты 7:6 - COM0A1:0: Включен Режим Сравнения А

Эти биты управляют Выводом OC0A. Если из битов COM0A1:0 установлен хотя бы один (или два бита), то Вывод OC0A будет игнорировать Нормальные Функции Порта в/в. Однако, обратите внимание, что бит, соответствующий в Регистре DDR этому Выводу, должен быть установлен так, чтобы был включен Драйвер Вывода.

 

Если Альтернативная Функция OC0A «подключается» к своему одноименному Выводу, то Функция,

включаемая битами COM0A1:0, становится зависимой от настроек битов WGM02:0. В Таблице показано, какую функцию несут биты COM0A1:0 при установленных WGM02:0 битах в Нормальном Режиме (Normal-режим) или СТС-режиме (в non-PWM режимах - не являющимися ШИМ-режимами Таймера/Счетчика). Таблица – Режим Сравнения в non-PWM (non-ШИМ) Режимах Таймера

 

Таблица – Режим Сравнения Регистров в FPWM-режиме Таймера

 

 

Таблица демонстрирует работу битов COM0A 1:0, когда через биты WGM0 2:0 включен режим Фазовой Коррекции ШИМ – PCPWM.

 

 

Таблица – Режим Сравнения Регистров при включенном режиме Фазовой Коррекции ШИМ – PCPWM.(1).

 

 

На примере схемы из лабораторной работы №2 настраиваем Timer/Counter 2 в режим ШИМ.

Для этого запускам мастер настройки CVAVR.

 

  1) Частоту таймера2 используя делитель устанавливаем равной 15625 кгц 2) Выбираем режим ШИМ. НапримерFastPWM 3) Выбираем режим ШИМ без инверции 4) Включаем прерывание при совпадении компаратора (при необходимости)
Если вы забыли настроить выход PB3то мастер настройки спросит хотите ли вы установить этот пин как выход.   Ответьте утвердительно.
После настройки PB3, все пины порта B настроены на выход.   Стартовое значение битов равно нулю.
   

 

Пример базовой МК при помощи мастера.

 

#asm

.equ __lcd_port=0x18

#endasm

 

#include <lcd.h>

#include <stdio.h>

#include <delay.h>

#include <mega8.h>

 

char lcd_buffer[33];  

 

unsigned char pwm=0;

 

 

// Timer1 output compare A interrupt service routine

interrupt [TIM1_COMPA] void timer1_compa_isr(void)

{

// Place your code here

 

}

 

 

void anim(void)

 

{

 

     lcd_gotoxy(0,0);        

    pwm= OCR2;

    sprintf(lcd_buffer,"%i",pwm);

    lcd_puts(lcd_buffer);

}

 

void main(void)

{

 

lcd_init(16);

 

 

// Input/Output Ports initialization

// Port B initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0

PORTB=0x00;

DDRB=0xFF;

 

// Port C initialization

// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTC=0x00;

DDRC=0x00;

 

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTD=0x00;

DDRD=0x00;

 

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

TCCR0=0x00;

TCNT0=0x00;

 

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: 15,625 kHz

// Mode: CTC top=OCR1A

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: On

// Compare B Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x0C;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x0C;

OCR1AL=0x35;

OCR1BH=0x00;

OCR1BL=0x00;

 

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: 15,625 kHz

// Mode: Fast PWM top=0xFF

// OC2 output: Non-Inverted PWM

ASSR=0x00;

TCCR2=0x6E;

TCNT2=0x00;

OCR2=0x00;

 

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

MCUCR=0x00;

 

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x10;

 

// USART initialization

// USART disabled

UCSRB=0x00;

 

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

SFIOR=0x00;

 

// ADC initialization

// ADC disabled

ADCSRA=0x00;

 

// SPI initialization

// SPI disabled

SPCR=0x00;

 

// TWI initialization

// TWI disabled

TWCR=0x00;

 

 

// Global enable interrupts

#asm("sei")

 

while (1)

{

 

}

}

Для удобства используем осцилограф, подключив его к PB3

 

 

Настройка ШИМ

 

Для управления скважностью ШИМ, настроим кнопки управления.

Для этого дополним код, внутри цикла while.

 

while (1)

{              

 

    if(PIND.0==0) {OCR2++;delay_ms(300);anim();}

    if(PIND.1==0) {OCR2--;delay_ms(300);anim();} 

}

 

 

Теперь нажимая кнопки можно увидеть изменение скважности шим.

 

 

Порядок выполнения работы

1. Получить задание у преподавателя

2. Разработать алгоритм

3. Разработать программу в CodeVisionAVR

4. Скомпилировать файл прошивки

5. Спроектировать макетную плату в PROTEUS

6. Загрузить файл (*.hex) в PROTEUS и запустить симуляцию в проекте.

Оформление отчета

Отчет должен содержать:

а) формулировку цели работы,

б)схему устройства

в) код программы в CodeVisionAVR

г)схема проекта в PROTEUS

д) Выводы по работе

 

 

 

Список использованной литературы

1) М.Б. Лебедев. CodeVision AVR. Пособие для начинающих. Додэка XXI, 2008. 592 с.

 

Содержание:

1.Методические указания по подготовке к работе

1.1. Основные сведения из теории:

Состав микроконтроллеров

Таймеры и счетчики ATmega 8

Устройство микроконтроллера на примере ATmega 8

Понятие - Широтно Импульсная Модуляция 

Аппаратная на примере AVRATmega8

Режим - Fast PWM

Порядок выполнения работы

Оформление отчета

 

 



Поделиться:


Последнее изменение этой страницы: 2021-01-08; просмотров: 365; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.22.119.251 (0.031 с.)