Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
27.05.2007, 17:09
|
|
Прохожий
Регистрация: 27.05.2007
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Таймеры
1. Видимо я плохо разобрался с таймерами. Вообщем мучаю 90s2313
создаю таймер с велечиной 0, тоесть каждый проход будет вызыватся прерывание на переполнение. Таймер инициализировал на 4000 КГц, контролер на 4МГц (вообщем одно и тоже). Программу пишу в КодеВижене.
выполняю прерывание
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
v_x = v_x+1;
TCNT0=0x00;
}
и за одну секунду выполнения програмы v_x = 10 000, маловато как то, поидее должно быть где то 1000 000. тесты выполняю в Протеусе.
З.Ы. просто мне нужно померять длительность импульса, а в такой ситуации получится большая погрешность для коротких импульсов. Порядка 1-2 МГц
2. И вот ещё один вопрос. Когда делаю деление или умножение, то Коде вижен показывает что памяти сьедается на 5% за одну операцию. Тоесть 20 умножений, и память заканчивается. В чём может быть проблема?
|
|
|
|
27.05.2007, 18:29
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
1. почитайте задачу 1 - avr123.nm.ru/z1.htm
2. так первый раз при включении мат библиотек, слеующие операции меньше потребляют.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
27.05.2007, 18:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
советую писать и говорить - ТаймерЫ
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
27.05.2007, 21:46
|
|
Прохожий
Регистрация: 27.05.2007
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Ага, ситуация с таймерами вроде прояснилась. Тогда получается, что при тактовой частоте 4МГц на один ТИК таймера приходится 1/4МГц = 0.25мкс. Теперь первый вопрос отпал. Сенкс.
И всё же, при
TCCR0=0x01;
TCNT0=0x00;
в секунду должно быть 4М переполнений, а получается намного меньше. Или это протеус глючит?
2. Этот вопрос в силе. Я ещё сразу подключил
#include ‹math.h›
Там получается, что всю память сьедают Флоаты, когда пользоватся типом Инт, то ещё терпимо.
|
|
|
|
27.05.2007, 22:21
|
|
Частый гость
Регистрация: 14.09.2005
Сообщений: 34
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Взгляните на это:
https://kazus.ru/forum/topics/f_18888.html#18888
там надо было получить 360 кГц при кварце 9МГц.
А так как Вы хотите вообще ничего не получится.
Цитата:
|
З.Ы. просто мне нужно померять длительность импульса, а в такой ситуации получится большая погрешность для коротких импульсов. Порядка 1-2 МГц
|
Уточните пожалуйста, что надо мерять.
|
|
|
|
27.05.2007, 22:43
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Сообщение от rrenderr
|
2. Этот вопрос в силе. Я ещё сразу подключил
#include ‹math.h›
Там получается, что всю память сьедают Флоаты, когда пользоватся типом Инт, то ещё терпимо.
|
А сколько Вы создаете переменных? Желательно проект выложить чтобы можно было разобраться...
|
|
|
|
27.05.2007, 22:45
|
|
Прохожий
Регистрация: 27.05.2007
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Laksus, ага теперь ясно. Вообщем при делителе на 2 и таймере на 256 работает уже нормально. так что похоже это оптимальный вариант.
Хочу построить частотомер с высоким пределом измерения, вплоть до 1-2 МГц. Хотя вот пришла другая идея, на больших частотах измерять количесвто импульсов за пол секунды, ну или за секунду (в крайнем случае). Надеюсь МК сможет успевать выполнять прерывания на такой частоте.
ну ещё осталась проблема с математикой...
dimonbest, две глобальных, ну и несколько локальных.
Наверно стоит выложить, только приведу более менее в порядок
|
|
|
|
27.05.2007, 23:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
|
Сообщение от rrenderr
|
Хочу построить частотомер с высоким пределом измерения, вплоть до 1-2 МГц. Хотя вот пришла другая идея, на больших частотах измерять количесвто импульсов за пол секунды, ну или за секунду (в крайнем случае). Надеюсь МК сможет успевать выполнять прерывания на такой частоте.
|
Частотомер так не делается.
Вот пример частотомера до 80МГц на базе AVR 90S2313 или ATtiny2313.
Архив 106 Килобайт.
Это статья из журнала РАДИОАМАТОР №3,2007
Прикрепленный файл: 7442780.rar
|
|
|
|
28.05.2007, 10:45
|
|
Прописка
Регистрация: 21.10.2005
Сообщений: 251
Сказал спасибо: 11
Сказали Спасибо 22 раз(а) в 17 сообщении(ях)
|
Конфигурируешь таймеры следующим образом Т0 - задатчик временного интервала и прерывания по переполнению вход - внутренний генератор с прескалером.Т1 - счетчик импульсов с внешнего входа.Таким образом можно использовать возможности контроллера по максимуму .Алгоритм следующий-пока Т0 отсчитывает временной интервал ,Т1 считает импульсы на входе .Как только произойдет прерывание от Т0 ,устанавливаешь запрет на счет всем таймерам ,и считываешь данные из регистра TCNT1 .Пересчитываешь в соответствии с временным интервалом заданным Т0 и получаешь частоту.Прилагаю свой проект для ознакомления ,правда он создан для других целей но используется функция частотомера для обмера 2х генераторов.
Прикрепленный файл: 726324.rar
|
|
|
|
28.05.2007, 11:33
|
|
Вид на жительство
Регистрация: 13.05.2005
Сообщений: 386
Сказал спасибо: 9
Сказали Спасибо 44 раз(а) в 37 сообщении(ях)
|
Поскольку входы AVR стробируются тактовой частотой, то теоретически можно сделать частотомер до пол-тактовой. Хотите больше - вешайте внешний высокоскоростной счетчик.
Несколько другая ситуация у PIC, там стробируется именно внутренний вход счетчика-таймера, а предделитель работает асинхронно и позволяет нормально работать на 50МГц и более, в зависимости от экземпляра. Хотите выше - опять таки ставите внешний счетсик, например 193-серии.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Такие разные 555-е таймеры
|
boor |
Коллекция глюков |
12 |
24.06.2009 15:44 |
Таймеры AVR
|
UserAVR |
Микроконтроллеры, АЦП, память и т.д |
4 |
01.06.2005 10:01 |
Часовой пояс GMT +4, время: 18:03.
|
|