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

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

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

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

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

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

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

 
Опции темы
Непрочитано 11.11.2007, 21:44  
EXIS
Прописка
 
Регистрация: 20.02.2006
Сообщений: 284
Сказал спасибо: 9
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
EXIS на пути к лучшему
По умолчанию Частотомер на AVR

если я не ошибаюсь импульсы нужно снимать с помощью внешних прерываний (external interrputs) я посмотрел в инструкции atemga8535 поддерживает 4 режима обработки сигнала:
Какой из режимов больше подойдет для обработки такого сигнала?

-- Прилагается рисунок: --

Реклама:
EXIS вне форума  
Непрочитано 11.11.2007, 22:08  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,956
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: Частотомер на AVR

Сообщение от EXIS
если я не ошибаюсь импульсы нужно снимать с помощью внешних прерываний (external interrputs) я посмотрел в инструкции atemga8535 поддерживает 4 режима обработки сигнала:
Какой из режимов больше подойдет для обработки такого сигнала?
10 или 11
Только учтите, что такой частотомер не сможет регистрировать импульсы с частотой более половины тактовой - это связано с архитектурой AVR

-- Прилагается рисунок: --

nml вне форума  
Непрочитано 11.11.2007, 23:24  
Inola
Частый гость
 
Регистрация: 19.01.2007
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Inola на пути к лучшему
По умолчанию

А можно ведь для этого input capture использовать? Эта штука вроде предназначена для измерения частоты.
Inola вне форума  
Непрочитано 12.11.2007, 23:20  
EXIS
Прописка
 
Регистрация: 20.02.2006
Сообщений: 284
Сказал спасибо: 9
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
EXIS на пути к лучшему
По умолчанию

Сообщение от Inola
А можно ведь для этого input capture использовать? Эта штука вроде предназначена для измерения частоты.
А про это в документации к atmega8535 есть?

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

Еще есть вопрос как стабильно соединить два avr МК канналом данных для обменна информацией без использования USART?
EXIS вне форума  
Непрочитано 13.11.2007, 00:17  
Inola
Частый гость
 
Регистрация: 19.01.2007
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Inola на пути к лучшему
По умолчанию

По input capture смотрите в разделе при таймер №1.
Inola вне форума  
Непрочитано 13.11.2007, 08:02  
Panda_Y2k
Временная регистрация
 
Аватар для Panda_Y2k
 
Регистрация: 30.08.2005
Адрес: Ротовска йобласть
Сообщений: 84
Сказал спасибо: 2
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
Panda_Y2k на пути к лучшему
По умолчанию

соединиться можно по 2 wire или 1 wire
Panda_Y2k вне форума  
Непрочитано 13.11.2007, 12:06  
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

Сообщение от Inola
А можно ведь для этого input capture использовать? Эта штука вроде предназначена для измерения частоты.
Эта штука для измерения длительности, можно периода.
Внешние прерывания еще и обрабатывать успевать надо. Поэтому максимальная измеряемая частота будет в несколько раз (не в 2) ниже тактовой.
ИМХО Измерение частоты есть подсчет количества периодов сигнала за еденицу времени. Так и считайте кол-во периодов.
1. Подайте входной сигнал на вход таймера/счетчика. В качестве источника тактового сигнала используется вывод Tn.
2. В качестве таймера используйте другой таймер, зарядите его на 1 сек, или как Вам нужно, и по его переполнению/прерыванию считывайте показания счетчика. Можете обнулять при этом счетчик, можете не обнулять (чуть точнее счет).
3. Важно использовать прерывание (или только флаг) по переполнению счетчика.
4.
Цитата:
Только учтите, что такой частотомер не сможет регистрировать импульсы с частотой более половины тактовой - это связано с архитектурой AVR
Остается в силе.
Соединить можно еще по SPI.
Удачи.
nokazus вне форума  
Непрочитано 14.11.2007, 09:05  
EXIS
Прописка
 
Регистрация: 20.02.2006
Сообщений: 284
Сказал спасибо: 9
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
EXIS на пути к лучшему
По умолчанию

При кварце 18,435 и делителе 1024 частота таймера у меня 18,435/1024=18,000 КГц

Как определить количество прерываний в секунду?

Сложно найти инструкция к таймеру очень большая.
Догадываюсь что:
18КГц/256=70,3125 Гц (тиков в секунду).
Верно?

И еще вопрос как разрезать long в CodeVisionAVR побайтно, там для этих целей какие-то операторы типа % используются. Нужно разрезать на байты чтобы послать в USART.
EXIS вне форума  
Непрочитано 14.11.2007, 10:34  
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

В своих программах я обычно не использую перезагрузку таймера константой, а не TopValue. Если таймер позволяет это сделать аппаратно (есть регистр, хранящий константу перезагрузки), то использую это. Если нет такой возможности, то использую ручную перезагрузку счетчика таймера в подпрограмме обработки прерывания по таймеру. Например в Вашем случае (исп. 8-бит таймер и частота его тактирования 18кГц) я бы в прерывании перезагружал счетчик константой -76 (256-180). Тогда прерывание происходило с частотой 100 Гц. А еще бы сделал программный счетчик внутри подпрограммы, обслуживающей прерывание, который бы считал до 100 и устанавливал флаг пользователя. Т.о. этот флаг устанавливается каждую сек. А еще бы в подпрограмме прерывания по таймеру считывал значение счетчика, подсчитывающего кол-во перепадов, т.е. частоту измеряемого сигнала, и перезапускал бы этот счетчик. А дальше в головной программе ждем срабатывания флага 1 Гц, считываем значение частоты, сбрасываем флаг 1 Гц. Дальше используем эту частоту как нам нужно, а счетчик с таймером продолжают измерять сами по себе.
Как это сделать на CodeVisionAVR не знаю, т.к. им не пользуюсь. Может кто подскажет.
Удачи.
nokazus вне форума  
Непрочитано 14.11.2007, 11:40  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

https://kazus.ru/forum/topics/8676.html
Что касается длинных чисел - возьмите адрес переменной и по адресу - эти 3 или 4 байта.
urry вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Схема на частотомер smg123 Измерительное оборудование 5 08.09.2007 02:48
Частотомер Ч3-34А Modul-x Поиск схем. Делимся схемами 0 24.08.2007 23:00
Частотомер ЦД2120.1 Slava_shp Поиск схем. Делимся схемами 0 10.08.2007 21:18
Частотомер KLMZ Измерительное оборудование 4 12.01.2007 12:06


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


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