Таймеры/счётчики в AVR
- Сообщения: 54
- Зарегистрирован: Пт окт 03, 2014 14:41:16
- Реклама
- Сообщения: 117
- Зарегистрирован: Ср ноя 05, 2014 19:04:31
да, это я понимаю.. Нужно использовать ШИМ. Но при разводке схемы порт B занят другими делами.. или можно обойти физическую привязку к портам при реализации шим?
Нет, ноги закреплены железно.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Сообщения: 6452
- Зарегистрирован: Пт сен 13, 2013 13:11:31
В рамках поставленной задачи ШИМ лучше не использовать. CTC наше все.alexan9er писал(а):Лучше использовать ШИМ
CTC замечательный режим, но не все AVR-камни поддерживают его в T0. Зачем-то включен предделитель на 1024. С ним получить полупериод 50мкс будет затруднительно. Устанавливаете вроде Т1, а начальное значение в Т0.
- Реклама
- Сообщения: 6452
- Зарегистрирован: Пт сен 13, 2013 13:11:31
- Сообщения: 117
- Зарегистрирован: Ср ноя 05, 2014 19:04:31
Прошу прощение за неточные данные. Использую ATMega324P. Таймер T1 занят другими вычислениями.
- Сообщения: 54
- Зарегистрирован: Пт окт 03, 2014 14:41:16
А можно сделать отдельный генератор частоты на кварце а ножкой МК его только включать. Такой вариант не пойдёт?
- Сообщения: 117
- Зарегистрирован: Ср ноя 05, 2014 19:04:31
Кварц отдельный есть 10 МГц. Это программно реализуется или нужны изменения в схеме?alexan9er писал(а):А можно сделать отдельный генератор частоты на кварце а ножкой МК его только включать. Такой вариант не пойдёт?
- Сообщения: 54
- Зарегистрирован: Пт окт 03, 2014 14:41:16
Нужны изменения. Нужно сделать сам генератор который будет давать нужную частоту.
- Сообщения: 117
- Зарегистрирован: Ср ноя 05, 2014 19:04:31
к сожелению такое не подойдет.alexan9er писал(а):Нужны изменения. Нужно сделать сам генератор который будет давать нужную частоту.
- Сообщения: 6452
- Зарегистрирован: Пт сен 13, 2013 13:11:31
Так вывод OC0A свободен в вашей схеме? Если да, то аппаратную генерацию можно сделать на нем. Если нет, то тогда дрыгать какой-то другой ногой придется из прерывания. Первый вариант лучше. Если с ним никак, то укажите точно ногу, я код покажу.
- Сообщения: 117
- Зарегистрирован: Ср ноя 05, 2014 19:04:31
Нет этот вывод занят. По схеме сделали так, что дрыгать нужно 5 ногой, Порта А.(PINA.5). Буду благодарен за помощь!a5021 писал(а):Так вывод OC0A свободен в вашей схеме? Если да, то аппаратную генерацию можно сделать на нем. Если нет, то тогда дрыгать какой-то другой ногой придется из прерывания. Первый вариант лучше. Если с ним никак, то укажите точно ногу, я код покажу.
Не знаю, как в Цэ это будет выглядеть
DDRA=1<<PA5
Fo=10000000
OCR0A< 50*Fo/8/1000000
TIMSK0<-OCIE0A
TIFR0<-OCF0A
TCCR0A<WGM01
TCCR0B<CS01
В обработчике
SBI PINA,5
DDRA=1<<PA5
Fo=10000000
OCR0A< 50*Fo/8/1000000
TIMSK0<-OCIE0A
TIFR0<-OCF0A
TCCR0A<WGM01
TCCR0B<CS01
В обработчике
SBI PINA,5
- Сообщения: 6452
- Зарегистрирован: Пт сен 13, 2013 13:11:31
Подразумевается, что МК тактируется от кварца 16Мгц. Если это не так, то потребуется пересчитывать установки таймера.
Это код сгенеренный с помощью визарда кодевижена:
Прерывание случается каждые 50мкс. Обработчик прерывания каждый раз меняет состояние пина PORTA5 на противоположное, что в общем итоге приводит к генерации на нем сигнала с частотой 10кгц.
Это код сгенеренный с помощью визарда кодевижена:
Код: Выделить всё
// Timer 0 output compare A interrupt service routine
interrupt [TIM0_COMPA] void timer0_compa_isr(void) {
PORTA ^= (1<<PORTA5);
}
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 2000,000 kHz
// Mode: CTC top=OCR0A
// OC0A output: Disconnected
// OC0B output: Disconnected
// Timer Period: 0,05 ms
TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (1<<WGM01) | (0<<WGM00);
TCCR0B=(0<<WGM02) | (0<<CS02) | (1<<CS01) | (0<<CS00);
TCNT0=0x00;
OCR0A=0x63;
OCR0B=0x00;
// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=(0<<OCIE0B) | (1<<OCIE0A) | (0<<TOIE0);
- Сообщения: 75
- Зарегистрирован: Пн янв 10, 2011 00:12:19
Здравствуйте господа! может я не в тему.
Подскажите пожалуйста. Какой режим таймера T1 и T2 оптимальнее использовать для получения прямоугольных импульсов?
Чтоб легко было менять период и частоту этих импульсов.
Частота, которую можно получить на ножке определяется по формуле из даташита:
Focn — частота, с которой должна дрыгаться ножка;
Fclk — частота таймера;
N — частота предделителя таймера;
OCRn — значение регистра сравнения;
Подскажите пожалуйста. Какой режим таймера T1 и T2 оптимальнее использовать для получения прямоугольных импульсов?
Чтоб легко было менять период и частоту этих импульсов.
Частота, которую можно получить на ножке определяется по формуле из даташита:
Focn — частота, с которой должна дрыгаться ножка;
Fclk — частота таймера;
N — частота предделителя таймера;
OCRn — значение регистра сравнения;
- Вложения
-
- lesson17.png
- (2.22 КБ) 327 скачиваний
Период импульсов и частота импульсов обратнозависимые величины. Если по периодом подразумевалось длительность, то у таймеров есть режимы PWM. Они достаточно подробно описаны в DS.
ну так вроде бы в даташите даже в отдельную главу выделен соответствующий режим Phase and Frequency Correct PWM Mode, откуда формула и взята. с чего вопросы?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 75
- Зарегистрирован: Пн янв 10, 2011 00:12:19
А для управления 8-и разрядным сдвиговым регистром типа 74HC4094D
Там три управляющие ноги. Стробирующий, тактовый и последующий входы
Какой режим таймера T1 и T2 лудше использовать для управления этими ногами?
Чтоб можно было потом легко перестраивать такт и т.д.
Не судите строго только щупаю сдвиговые регистры.
Там три управляющие ноги. Стробирующий, тактовый и последующий входы
Какой режим таймера T1 и T2 лудше использовать для управления этими ногами?
Чтоб можно было потом легко перестраивать такт и т.д.
Не судите строго только щупаю сдвиговые регистры.
А зачем там вообще таймеры? Там SPI нужен, или просто ногами дёргать.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]


