Простой ШИМ на AtTiny13

Доброе время суток!
Потому как иногда программирую и не просто программирую какие-то программы-калькуляторы, а прогаю (если так можно сказать) микроконтроллеры (МК). Преимущество МК в том, что от них не требуется много деталей для создания чего либо, например простого импульсного преобразователя (затея с преобразователем и МК не лучшая, потому как помехи на МК) займет меньше деталей чем, при применении той же микросхемы как TL494.
Не буду говорить, для каких устройств, а просто расскажу про ШИМ =)
Что такое ШИМ? Можно в инете найти достаточно информации. А я расскажу о простом создании ШИМ. Думаю, кто не знаком с ШИМ и ознакомился как он работает, то составил примерную схему реализации. Оформлял в AVR Studio на Си.
Первое, что нам нужно сделать так это счетчик длительности импульса — оформил через функцию delay1:


void delay1(uint8_t us)
{
while(us)
{
_delay_us(1);
us--;
}
}

В данной функции используется основная функция _delay_us(1). Которая задает задержку импульса равной в 1 микросекунду. Далее идет счетчик на уменьшение значения us. Ну так вот, когда значение us становится, например, 10, то есть delay(10), то цикл while пройдет 10 раз с функцией задержки импульса в 1 микросекунду итого общий импульс получится в 10 мкс. Круто!
А потому как мы сделали _delay_us() управляемым (так-то эта функци не управляемая), то можно сделать через цикл изменение значения в функции delay1
Собственно сам цикл изменения импульса:


for (uint8_t i=0;i<25;i++)
{
PORTB = 0x11;//включаются все порты
delay(i);
PORTB = 0x00;//выключаются все порты
_delay_us(2);
}

В этом цикле импульсы будут увеличиваться с 1 мкс до 25 мкс. Между импульсами задержка равна 2 — эту задержку в принципе можно так же оформить и в нашей управляемой функции.

Behandling av erektionsproblem eller andra fall ar Erektil dysfunktion ED oformagan att ha blivit medveten om att tillrackligt kraftigt besok har erektionskammare inuti!

Добавить комментарий

Ваш адрес email не будет опубликован.