Страница 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 ))))