Таймеры/счётчики в AVR

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
alexan9er
Открыл глаза
Сообщения: 54
Зарегистрирован: Пт окт 03, 2014 14:41:16

Re: Таймеры/счётчики в AVR

Сообщение alexan9er »

Лучше использовать ШИМ
DarkWolf
Встал на лапы
Сообщения: 117
Зарегистрирован: Ср ноя 05, 2014 19:04:31

Re: Таймеры/счётчики в AVR

Сообщение DarkWolf »

да, это я понимаю.. Нужно использовать ШИМ. Но при разводке схемы порт B занят другими делами.. или можно обойти физическую привязку к портам при реализации шим?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Таймеры/счётчики в AVR

Сообщение Gudd-Head »

Нет, ноги закреплены железно.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Таймеры/счётчики в AVR

Сообщение a5021 »

alexan9er писал(а):Лучше использовать ШИМ

В рамках поставленной задачи ШИМ лучше не использовать. CTC наше все.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Таймеры/счётчики в AVR

Сообщение akl »

CTC замечательный режим, но не все AVR-камни поддерживают его в T0. Зачем-то включен предделитель на 1024. С ним получить полупериод 50мкс будет затруднительно. Устанавливаете вроде Т1, а начальное значение в Т0.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Таймеры/счётчики в AVR

Сообщение a5021 »

Хорошо бы тогда вопрошавший уточнил, о каком МК идет речь.
DarkWolf
Встал на лапы
Сообщения: 117
Зарегистрирован: Ср ноя 05, 2014 19:04:31

Re: Таймеры/счётчики в AVR

Сообщение DarkWolf »

Прошу прощение за неточные данные. Использую ATMega324P. Таймер T1 занят другими вычислениями.
Аватара пользователя
alexan9er
Открыл глаза
Сообщения: 54
Зарегистрирован: Пт окт 03, 2014 14:41:16

Re: Таймеры/счётчики в AVR

Сообщение alexan9er »

А можно сделать отдельный генератор частоты на кварце а ножкой МК его только включать. Такой вариант не пойдёт?
DarkWolf
Встал на лапы
Сообщения: 117
Зарегистрирован: Ср ноя 05, 2014 19:04:31

Re: Таймеры/счётчики в AVR

Сообщение DarkWolf »

alexan9er писал(а):А можно сделать отдельный генератор частоты на кварце а ножкой МК его только включать. Такой вариант не пойдёт?


Кварц отдельный есть 10 МГц. Это программно реализуется или нужны изменения в схеме?
Аватара пользователя
alexan9er
Открыл глаза
Сообщения: 54
Зарегистрирован: Пт окт 03, 2014 14:41:16

Re: Таймеры/счётчики в AVR

Сообщение alexan9er »

Нужны изменения. Нужно сделать сам генератор который будет давать нужную частоту.
DarkWolf
Встал на лапы
Сообщения: 117
Зарегистрирован: Ср ноя 05, 2014 19:04:31

Re: Таймеры/счётчики в AVR

Сообщение DarkWolf »

alexan9er писал(а):Нужны изменения. Нужно сделать сам генератор который будет давать нужную частоту.


к сожелению такое не подойдет.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Таймеры/счётчики в AVR

Сообщение a5021 »

Так вывод OC0A свободен в вашей схеме? Если да, то аппаратную генерацию можно сделать на нем. Если нет, то тогда дрыгать какой-то другой ногой придется из прерывания. Первый вариант лучше. Если с ним никак, то укажите точно ногу, я код покажу.
DarkWolf
Встал на лапы
Сообщения: 117
Зарегистрирован: Ср ноя 05, 2014 19:04:31

Re: Таймеры/счётчики в AVR

Сообщение DarkWolf »

a5021 писал(а):Так вывод OC0A свободен в вашей схеме? Если да, то аппаратную генерацию можно сделать на нем. Если нет, то тогда дрыгать какой-то другой ногой придется из прерывания. Первый вариант лучше. Если с ним никак, то укажите точно ногу, я код покажу.


Нет этот вывод занят. По схеме сделали так, что дрыгать нужно 5 ногой, Порта А.(PINA.5). Буду благодарен за помощь!
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Таймеры/счётчики в AVR

Сообщение akl »

Не знаю, как в Цэ это будет выглядеть

DDRA=1<<PA5
Fo=10000000
OCR0A< 50*Fo/8/1000000
TIMSK0<-OCIE0A
TIFR0<-OCF0A
TCCR0A<WGM01
TCCR0B<CS01
В обработчике
SBI PINA,5
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Таймеры/счётчики в AVR

Сообщение a5021 »

Подразумевается, что МК тактируется от кварца 16Мгц. Если это не так, то потребуется пересчитывать установки таймера.

Это код сгенеренный с помощью визарда кодевижена:

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

// 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);

Прерывание случается каждые 50мкс. Обработчик прерывания каждый раз меняет состояние пина PORTA5 на противоположное, что в общем итоге приводит к генерации на нем сигнала с частотой 10кгц.
arm-17
Открыл глаза
Сообщения: 75
Зарегистрирован: Пн янв 10, 2011 00:12:19

Re: Таймеры/счётчики в AVR

Сообщение arm-17 »

Здравствуйте господа! может я не в тему.

Подскажите пожалуйста. Какой режим таймера T1 и T2 оптимальнее использовать для получения прямоугольных импульсов?
Чтоб легко было менять период и частоту этих импульсов.

Частота, которую можно получить на ножке определяется по формуле из даташита:



Focn — частота, с которой должна дрыгаться ножка;

Fclk — частота таймера;

N — частота предделителя таймера;

OCRn — значение регистра сравнения;
Вложения
lesson17.png
(2.22 КБ) 326 скачиваний
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Таймеры/счётчики в AVR

Сообщение akl »

Период импульсов и частота импульсов обратнозависимые величины. Если по периодом подразумевалось длительность, то у таймеров есть режимы PWM. Они достаточно подробно описаны в DS.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Таймеры/счётчики в AVR

Сообщение ARV »

ну так вроде бы в даташите даже в отдельную главу выделен соответствующий режим Phase and Frequency Correct PWM Mode, откуда формула и взята. с чего вопросы?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
arm-17
Открыл глаза
Сообщения: 75
Зарегистрирован: Пн янв 10, 2011 00:12:19

Re: Таймеры/счётчики в AVR

Сообщение arm-17 »

А для управления 8-и разрядным сдвиговым регистром типа 74HC4094D

Там три управляющие ноги. Стробирующий, тактовый и последующий входы

Какой режим таймера T1 и T2 лудше использовать для управления этими ногами?
Чтоб можно было потом легко перестраивать такт и т.д.
Не судите строго только щупаю сдвиговые регистры.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Таймеры/счётчики в AVR

Сообщение Gudd-Head »

А зачем там вообще таймеры? Там SPI нужен, или просто ногами дёргать.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Ответить

Вернуться в «AVR»