Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Временные Диаграммы Таймера/Счетчика↑ ⇐ ПредыдущаяСтр 5 из 5 Содержание книги Поиск на нашем сайте
Т/С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.
Пример базовой МК при помощи мастера.
#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; просмотров: 399; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.32.53 (0.006 с.) |