Страница 1 из 1

Шим на атмег16

Добавлено: Пт май 01, 2015 17:54:29
dartmolot
как нужно настроить таймер Т1 для шима и как можно управлять длительностью? (если можно то где можно об этом почитать?)

Re: Шим на атмег16

Добавлено: Пт май 01, 2015 18:00:39
hybroid
В даташите исчерпывающе написано.

Re: Шим на атмег16

Добавлено: Пт май 01, 2015 18:03:02
dartmolot
я не очень с английским( а русский даташит не нашел

Re: Шим на атмег16

Добавлено: Пт май 01, 2015 18:25:33
НАПАЛМ

Re: Шим на атмег16

Добавлено: Сб май 02, 2015 08:29:56
eess9
dartmolot писал(а):как нужно настроить таймер Т1 для шима

вопрос из разряда как сделать так, чтобы что-то работало. Частота тактирования кристалла, частота ШИМ, один или два канала нужно, в каких пределах планируете менять скважность и с каким шагом? Увы, какой вопрос, такой и ответ от сообщества...
dartmolot писал(а):как можно управлять длительностью?

при помощи регистра сравнения канала

Re: Шим на атмег16

Добавлено: Сб май 02, 2015 12:51:01
dartmolot
ну если подробно то нужен режим Fast PWM настроить, и посмотреть как работает в протеусе, в интернете нашел примерно как это делается ,но вот что то неполучается

Re: Шим на атмег16

Добавлено: Сб май 02, 2015 13:24:14
eess9
dartmolot писал(а):но вот что то неполучается

не хотите вы понимать простую истину: на четкий вопрос вы получаете четкий ответ.

Если у вас что-то не получается, сделайте что-то по другому.

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

Re: Шим на атмег16

Добавлено: Сб май 02, 2015 21:25:39
Mishany
а еще текст из даташита отлично копируется для вставки в любой переводчик, и не знание английского сдесь не причем.

Re: Шим на атмег16

Добавлено: Вс май 03, 2015 05:56:31
hybroid
Посмотрел темы автора. Очередной студятел, прогулявший пары :(

Re: Шим на атмег16

Добавлено: Вс май 03, 2015 11:30:50
dartmolot
hybroid писал(а):Посмотрел темы автора. Очередной студятел, прогулявший пары :(

ну если ты такой умный подсказал бы чтоль, я же не прошу сделать за меня , мне только нужен совет или пример,

Re: Шим на атмег16

Добавлено: Вс май 03, 2015 18:24:11
hybroid
А я такой умный, потому что привык сначала своими мозгами пользоваться. Так что давай, тренеруй, и тоже дураком не помрёшь.

Re: Шим на атмег16

Добавлено: Вс май 10, 2015 09:02:04
Sel4
Вот такая же фигня и со мной была... Многие говорят и говорят, типа, читай... А находяться единицы, которые просто скинут пример, а его разберешь и научишься и так гораздо быстрей учительство осуществляется.
А многие "учителя" видать, не понимают, что тема новичкам интересна, но с чего начать новички не понимают совсем.
Новичкам, молоко надо, а "учителя" сразу мясо дают, которое не усваивается.

Re: Шим на атмег16

Добавлено: Пн май 11, 2015 09:19:33
oleg110592
Sel4 писал(а):А многие "учителя" видать, не понимают, что тема новичкам интересна, но с чего начать новички не понимают совсем.

многие учителя начинали начинать :) когда учителей не было и помочь некому было и ничего справлялись.
По коду:
TCCR2 = 0b11100100;//тут поиграйся с битами -увидишь, как меняется частота и пр.
TCCR1A = 0b10100010;//например, TCCR2 = 0b1110000100 - частота будет ниже

имхо лучше не "играться с битами", а прочесть документацию за что каждый бит отвечает.

TCCR2 = 0b1110000100! у AVR появился десятибитный регистр?
запись 0b11100100 в IAR AVR работать не будет

Предложу тестовый код:

Код: Выделить всё

#include <avr/io.h>
#include <util/delay.h>

uint16_t setPWM = 0;

int main(void)
{
   // PORTD bit5 set OUT
   DDRD = (0 << DDD7) | (0 << DDD6) | (1 << DDD5) | (0 << DDD4) | (0 << DDD3) | (0 << DDD2) | (0 << DDD1) | (0 << DDD0);

   // Timer/Counter 1 initialization
   // Clock source: System Clock
   // Clock value: 8000,000 kHz
   // Mode: Fast PWM top=0x03FF
   // OC1A output: Non-Inverted PWM
   // OC1B output: Disconnected
   TCCR1A = (1 << COM1A1) | (0 << COM1A0) | (0 << COM1B1) | (0 << COM1B0) | (1 << WGM11) | (1 << WGM10);
   TCCR1B = (0 << ICNC1) | (0 << ICES1) | (0 << WGM13) | (1 << WGM12) | (0 << CS12) | (0 << CS11) | (1 << CS10);
   while (1)
   {

      setPWM++;
      //To do a 16-bit write, the High byte must be written before the Low byte.
      OCR1AH = (uint8_t)(setPWM >> 8);
      OCR1AL = (uint8_t)(setPWM);
      _delay_ms(10);

   }
}



Изображение

Re: Шим на атмег16

Добавлено: Пн май 11, 2015 09:32:01
Sel4
Ну проще ж кинуть работающий пример, чем настукать больше символов на клаве во нравоучения..


Очевидно, в коде хотел записать

Код: Выделить всё

TCCR2 = 0b11100[b]001[/b];//тут поиграйся с битами -увидишь, как меняется частота и пр.
TCCR1A = 0b10100010;//например, TCCR2 = 0b11100100 - частота будет ниже [i]а тут перебрал с нулями))[/i]

Это понятно, что надо читать.. В данном случае очень наглядненько видно , что будет при изменении каждого бита, топому и написал )) А как менять ширину импульса ? ))) написав значение переменной?

Re: Шим на атмег16

Добавлено: Пн май 11, 2015 09:50:55
oleg110592
..очень наглядненько видно...
TCCR1A = 0b10100010;//например, TCCR2 = 0b11100100 - частота будет ниже а тут перебрал с нулями))

TCCR2 регистр какого таймера? Не "наглядненько". Подтверждение того, что надо пользоваться только документацией.
Пример мой рабочий - проверено, правда в протеусе. Ширина импульса задается переменной "setPWM" или надо записать значение "ширины" непосредственно в регистры OCR1AH и OCR1AL в определенной последовательности (последовательность действий расписана в документации).
В документации даже есть примеры на ассемблере и Си.

Re: Шим на атмег16

Добавлено: Пн май 11, 2015 20:13:57
Sel4
Та лан тебе )) покрутит, покурит даташит совместно с примером, да разберется что к чему и как настраивается таймер T1 ))))