Реализация ШИМ на 8-ми разрядном таймере

Модератор: boogyman

Реализация ШИМ на 8-ми разрядном таймере

Сообщение:#1  Сообщение boogyman » 19 янв 2012, 21:52

Пример кода реализации ШИМ сигнала на atmega8, используется 8-ми битный таймер Т2. ШИМ сигнал снимается с вывода 17(OC2), частота также 15625Гц. Остальное описание тут http://radioparty.ru/index.php/prog-avr/program-c/240-lesson8
Код: Выделить всё
#include <avr/io.h>
#include <util/delay.h> // подпрограмма задержки

int main(void)
{
unsigned int i=0; //определяем переменную i

// Настройка портов ввода-вывода

PORTB = 0x00;
DDRB = (1<<PB3);
PORTD = (1<<PD0)|(1<<PD1); // подключаем внутренние нагрузочные резисторы
DDRD = 0x00;

// Настройка таймера T2

TCCR2 = (1<<WGM21)|(1<<WGM20)| // быстрый ШИМ
             (1<<COM21)|(0<<COM20)| // ШИМ подется на вывод OC2
             (0<<CS22)|(0<<CS21)|(1<<CS20); // включен без делителя

TCNT2 = 0x00; // начальная установка счетчика
OCR2 = 0x00; // начальный коэффициент заполнения ШИМ

//Основной цикл программы

while(1){
             if((PIND&(1<< PD0)) == 0) //если кнопка "больше" нажата
          {
              if (i < 254)
                  { // коэффициент заполнения ШИМ изменяется от 0 до 255
                  i=i+1; // увеличиваем i на единицу
                  OCR2 = i; // записываем переменную в регистр сравнения
                  _delay_ms(30); // задержка 30ms
                  }
          }
             if((PIND&(1<< PD1)) == 0) //если кнопка "меньше" нажата
          {
            if (i > 0) // коэффициент заполнения ШИМ изменяется от 255 до 0
                 {
            i--; // уменьшаем i на единицу(так тоже можно писать)
                 OCR2 = i; // записываем переменную в регистр сравнения
                 _delay_ms(30); // задержка 30ms 
                 }
         }
      }
  }
Аватара пользователя
boogyman
Модератор
 
Сообщения: 183
Зарегистрирован: 25 дек 2011, 21:48
Откуда: Москва

Re: Реализация ШИМ на 8-ми разрядном таймере

Сообщение:#2  Сообщение uni-t » 20 янв 2012, 19:40

boogyman огромное спасибо за разъяснения все получилось :D
Аватара пользователя
uni-t
Новичок
 
Сообщения: 1
Зарегистрирован: 19 янв 2012, 09:32


Вернуться в Микроконтроллеры AVR

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron
Rambler's Top100