Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 04.08.2010, 10:07  
E_C_C
Почётный гражданин KAZUS.RU
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,827
Сказал спасибо: 739
Сказали Спасибо 683 раз(а) в 386 сообщении(ях)
E_C_C на пути к лучшему
По умолчанию Увеличение скорости счета импульсов с энкодера на АТ90S2313

Добрый день уважаемые, имеется счетчик импульсов с фотодатчика (энкодера) на АТ90S2313 с динамической индикацией, приходящий импульс по внешнему прерыванию инкрементирует переменную, прерыванием по таймеру она выводится на индикацию. Тактовая частота 4Мгц. При больших частотах следования импульсов контроллер виснет, или сбрасывается на начало программы. Как можно исправит эту проблему ? я додумался только до установки внешнего счетчика/делителя импульсов, но не хочется плодить лишних корпусов возможно ли программное решение ?
Реклама:
__________________
Да здравствует Разум,да сгинет Маразм!

Последний раз редактировалось E_C_C; 04.08.2010 в 12:09.
E_C_C вне форума  
Непрочитано 04.08.2010, 10:54  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию Re: Увеличение скорости счета импульсов на АТ90S2313

Похоже программная ошибка у вас или во фьюзах в железе ошибка раз сброс.

Выкладывайте прожект, схему, фото монтажа - будет виднее.

А лучше в CVAVR сделайте прогу и будете уверены что с прогой все впорядке.

PIC лучше относится к высоким входным частотам для счета.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Сказали "Спасибо" avr123-nm-ru
E_C_C (04.08.2010)
Непрочитано 04.08.2010, 11:39  
E_C_C
Почётный гражданин KAZUS.RU
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,827
Сказал спасибо: 739
Сказали Спасибо 683 раз(а) в 386 сообщении(ях)
E_C_C на пути к лучшему
По умолчанию Re: Увеличение скорости счета импульсов на АТ90S2313

в CVAVR и писал, скорее всего не успевает отрабатывать прерывания, вот проект в протеусе и в кодевижен.
Вложения:
Тип файла: rar 111.rar (50.2 Кб, 80 просмотров)
__________________
Да здравствует Разум,да сгинет Маразм!
E_C_C вне форума  
Непрочитано 04.08.2010, 11:58  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,948
Сказали Спасибо 1,327 раз(а) в 578 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: Увеличение скорости счета импульсов на АТ90S2313

Ну, во первых, в программе - судя по всему - не счетчик импульсов, а обработчик энкодера типа "трещотка".

Если вам нужен счет импульсов с максимальной скоростью, то надо завести его на T вход и таймер настроить на счет импульсов с этого входа. Тогда максимальная скорость счета будет, если не путаю, половина тактовой микроконтроллера.

В вашем случае обработка прерывания достаточно длинная - навскидку - никак не менее 50 тактов. И если частота на INT входе выше, то МК будет постоянно торчать в обработчике прерывания - по внешним признакам - зависание.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
nml вне форума  
Сказали "Спасибо" nml
E_C_C (04.08.2010)
Непрочитано 04.08.2010, 12:07  
E_C_C
Почётный гражданин KAZUS.RU
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,827
Сказал спасибо: 739
Сказали Спасибо 683 раз(а) в 386 сообщении(ях)
E_C_C на пути к лучшему
По умолчанию Re: Увеличение скорости счета импульсов на АТ90S2313

Да верно,извиняюсь за неточно сформулированный вопрос, считаются импульсы с фотодатчика сдвинутые на 90 градусов, фактически это энкодер ,но с высокой частотой вращения. Я не смог придумать как используя встроенный таймер определить направление вращения.
Датчик выдает 1000имп за оборот, макс скорость порядка 300об/мин, т.е 5об/сек значит 5000гц,
если обработку прерывания принять за 50 тактов, то необходима тактовая частота свыше 25Мгц,
с 90S2313 тут явно нечего делать. Если только другой датчик применить.
__________________
Да здравствует Разум,да сгинет Маразм!

Последний раз редактировалось E_C_C; 04.08.2010 в 12:16.
E_C_C вне форума  
Непрочитано 04.08.2010, 12:17  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,948
Сказали Спасибо 1,327 раз(а) в 578 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: Увеличение скорости счета импульсов на АТ90S2313

Сообщение от E_C_C Посмотреть сообщение
фактически это энкодер ,но с высокой частотой вращения.
Озвучьте, что такое "высокая".
Оппаньки, опоздал, уже озвучили

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

Да, и еще бы я сделал не одно прерывание и в нем тестирование второй линии, а прерывания по обоим линиям. Кстати, если взять не "классик" а тини2313, то там можно настроиить прерывание на фронт и спад, и в результате удвоить точность.

И еще - для ускорения я делал так - в прерывании модифицировал однобайтный счетчик, а в головном цикле - где уже тики не так критичны - запрет прерывания, прочесть переменную, обнулить переменную, прерывание резрешить, прочитанное - прибавить к LONGу. Насколько помню, обработчик грантированно укладывался в 50 uS (c 50% запасом)
__________________
[ жизнь приятна и красива, если выпить литр пива ]

Последний раз редактировалось nml; 04.08.2010 в 12:25.
nml вне форума  
Непрочитано 04.08.2010, 12:29  
E97
Почётный гражданин KAZUS.RU
 
Регистрация: 08.01.2008
Сообщений: 1,143
Сказал спасибо: 379
Сказали Спасибо 430 раз(а) в 274 сообщении(ях)
E97 на пути к лучшему
По умолчанию Re: Увеличение скорости счета импульсов на АТ90S2313

Сообщение от E_C_C Посмотреть сообщение
приходящий импульс по внешнему прерыванию инкрементирует переменную
Чтоб устройство правильно считало, необходимо чтобы период импульса был больше времени выполнения прерывания.
Это чтобы только считать импульсы. А на индикацию тоже необходимо время.
По этому возможно что контролер только и сидит за обработкой внешнего прерывания. А вам кажется что он завис.
Если вы во время обработки прерывания от таймера разрешите выполнение прерывания то контролер точно зависнет.

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

Ну если нужно считать импульсы с большей частотой, необходимо повышать тактовую частоту контролера (или использовать PIC у них можно не синхронизировать внешний импульс тамера с тактовым импульсом МК).

Еше если вы используете динамическую индикацию на светодиодную матрицу то посмотрите оправдано ли это?, может поставить LCD дисплей.
На то чтоб устройство подсчивало импульсы, динамической индикация возможна, а вот если еще какието функции, то нужно проанализировать.
E97 вне форума  
Сказали "Спасибо" E97
E_C_C (04.08.2010)
Непрочитано 04.08.2010, 12:39  
E_C_C
Почётный гражданин KAZUS.RU
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,827
Сказал спасибо: 739
Сказали Спасибо 683 раз(а) в 386 сообщении(ях)
E_C_C на пути к лучшему
По умолчанию Re: Увеличение скорости счета импульсов на АТ90S2313

Компилятор позволяет, не позволяет мое знание ассемблера , но это поправимо.
А что даст прерывание по обеим линиям ? все равно надо читать соседнюю линию.
Если только в прерывании_1 устанавливать флаг, в прерывании_2 его читать и по состоянию прибавлять либо убавлять счетчик, после чего флаг сбросить, аналогично в
прерывании_1 .
Пойду разбираться в ассемблере...
__________________
Да здравствует Разум,да сгинет Маразм!
E_C_C вне форума  
Непрочитано 04.08.2010, 12:52  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,948
Сказали Спасибо 1,327 раз(а) в 578 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: Увеличение скорости счета импульсов на АТ90S2313

Сообщение от E_C_C Посмотреть сообщение
А что даст прерывание по обеим линиям ? все равно надо читать соседнюю линию.
Комбинации на INT входах

00, 01, 11, 10

Это то, что в "трещотках" считается дискретом. На самом деле точность в 4 раза выше.

Так вот, если прерывание одно и только на спад, то и поймаете этот 1 дискрет. Если и на фронт и на спад - то за этот "один дискрет" поймаете 2 прерывания. Ну а по двум линиям - еще в 2 раза больше. Лишняя точность, IMHO, не помешает.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
nml вне форума  
Непрочитано 04.08.2010, 12:52  
E_C_C
Почётный гражданин KAZUS.RU
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,827
Сказал спасибо: 739
Сказали Спасибо 683 раз(а) в 386 сообщении(ях)
E_C_C на пути к лучшему
По умолчанию Re: Увеличение скорости счета импульсов на АТ90S2313

Сообщение от E97 Посмотреть сообщение
Считать импульсы по внешнему прерыванию не очень удачная идея.
Необходимо задействовать какойто из двух таймеров, это существенно разгрузит
контролер и позволит считать имульсы с частотой слелования вплоть до частоты тактового генератора.
Я думал за такой способ, но нужно еще знать направление счета, а оно определяется фазой сигнала.
Может проще будет собрать внешний счетчик на рассыпухе, и читать его состояние в весовом коде, а на контроллер оставить индикацию и побочные функции управления ?
__________________
Да здравствует Разум,да сгинет Маразм!
E_C_C вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 17:58.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot