ШИМ с коррекцией фазы

Материал из Automata.

(Различия между версиями)
Перейти к: навигация, поиск
м (Полностью удалено содержимое страницы)
м (Правки Kern (обсуждение) откачены к версии Mrsnaut)
 
Строка 1: Строка 1:
 +
#include <stdint.h>
 +
#include <avr/io.h>
 +
#include <avr/interrupt.h>
 +
//главная функция;
 +
int main (void)
 +
{
 +
DDRB = 0xff;//порт В настраиваем на выход;
 +
PORTB = 0x00;//отправляем на выводы логический "0";
 +
DDRD = 0xff;//порт D настраиваем на выход;
 +
PORTD = 0x00;//отправляем на выводы логический "0";
 +
//10-bit Phase Correct PWM, устанавливается логический "0" на выводе OC1A при совпадениии TCNT1 с OCR1A и
 +
//логическая "1" на OC1A при достижении TCNT1 своего масимума, задаем предделитель = 256;
 +
TCCR1A = _BV(COM1A1) | _BV(WGM11) | _BV(WGM10);
 +
TCCR1B = _BV(CS12);
 +
//1023 ~ 5.0v;
 +
//767 ~ 3.75v;
 +
OCR1A = 768;
 +
}

Текущая версия

#include <stdint.h>
#include <avr/io.h>
#include <avr/interrupt.h>
//главная функция;
int main (void) 
{
    DDRB   = 0xff;//порт В настраиваем на выход;
    PORTB  = 0x00;//отправляем на выводы логический "0";
    DDRD   = 0xff;//порт D настраиваем на выход;
    PORTD  = 0x00;//отправляем на выводы логический "0";
    //10-bit Phase Correct PWM, устанавливается логический "0" на выводе OC1A при совпадениии TCNT1 с OCR1A и 
    //логическая "1" на OC1A при достижении TCNT1 своего масимума, задаем предделитель = 256;
    TCCR1A = _BV(COM1A1) | _BV(WGM11) | _BV(WGM10);
    TCCR1B = _BV(CS12);
    //1023 ~ 5.0v;
    //767 ~ 3.75v;
    OCR1A = 768;	
}
Личные инструменты
Микроконтроллеры