Общение

russian-robots@conference.jabber.ru - Чат, в котором можно поболтать об электронике, создании роботов и программировании.
Как мне зайти в чат?

 Обсуждение

Не стесняйтесь оставлять комментарии, мне интересно и важно ваше мнение!
  • Wadimka: Подскажу где взять недорого строчники, идете/едите в любую контору которая ...
  • Vladimir: Об этом датчике я тоже знаю, хотелось с чегото начать изучать МК, а не слеп ...
  • Vladimir: Спсиба
  • Евгений: Стоит поставить инфракрасный датчик движения и не городить ничего :) Литера ...
  • Vladimir: Добрый день Евгений. Это мне для дома в кладовку. При входе на двери стоит ...
  • Евгений: Фотобарьер? По подробнее расскажите.
  • Vladimir: Добрый день. Прошу вас помочь в реализации пректа фотобарер на Tiny45, со с ...
  • Евгений: С таким кодом даже http://caxapa.ru/codebook/?search=BLSH ничего не находит ...
  • Как работать с восьмибитным ШИМ

    17th Июнь 2010 | Метки:

    Код инициализации таймера 0 сгенерируем при помощи Code Wizard (в Code Vision AVR). Скриншоты с настройками:

    atmega16, 8MHZ; Timer0  Mode: fast PWM top=FFh, Output: Non-Inverted PWM, Clock Value: 31,250  KHZ, Clocl Source: System Clock

    Настройки выставили? Можно генерить код, нажимаем на Program Preview, отвечаем положительно в появившемся диалоговом окошке и копируем из открывшегося окна код для настройки таймера 0. Должно получиться так:

    TCCR0=0x6C; // назначение этих
    TCNT0=0×00; // регистров см. даташит.
    OCR0=0×00; // число, записанное в этот регистр определяет величину

    //ШИМ, т.к. регистр восьмибитный, то максимальное значение будет

    //равно 255

    Для того, чтобы наглядно убедиться как работает ШИМ, напишем такую программу:

    #include<mega16.h>
    #include<delay.h>
    #define SLEEP delay_ms(5);
    void main (void)
    {
    int i;
    DDRB.3=0xFF; //конфигурируем ножку PB3 на выход,тк.это выход ШИМ
    TCCR0=0x6C; //инициализируем таймер 0
    TCNT0=0x00;
    OCR0=0x00; //величина ШИМ равна 0
    while(1)
    {
    for(i=0;i!=255;i++) //увеличиваем ШИМ до максимума
    {
    OCR0++;
    SLEEP //ждем 5 мс
    }
    for(i=255;i!=0;i--) //уменьшаем ШИМ до 0
    {
    OCR0--;
    SLEEP
    }
    } }

    МК тактируется от встроенного RC генератора на 8 МГЦ.

    Чтобы не совершить ошибку при настройке фьюзов, советую воспользоваться руссицифированным калькулятором фьюзов

    Выход восьмибитного одноканального ШИМа выведен на ножку PB3, давайте подключем к ней анод светодиода, а катод через резистор на 1к. к минусу.

    Заливаем прошивку, включаем питание  и …. Оно работает!

    P.S. Статья ориентирована на новичков, делающих первые шаги в области программирования микроконтроллеров.

    Понравилась статья? Нажмите на любую из кнопок:

    0
    Пока комментариев нет.

    :D :-) :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: