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

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

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

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

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

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

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

 
Опции темы

Подсчёт импульсов

Непрочитано 27.01.2012, 12:51  
yellow87
Вид на жительство
 
Аватар для yellow87
 
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
yellow87 на пути к лучшему
По умолчанию Re: Подсчёт импульсов

Сообщение от alvadep Посмотреть сообщение
Я так понимаю, Вы предлагаете один модуль ССР использовать в режиме сравнения и без триггера специальных функций (это для счета 58 ), а второй ССР использовать в режиме сравнения плюс триггер специальных функций (это для счета 74 ), по которому сбрасывается TMR1
Вы не понимаете!
Я хочу использовать один модуль. И в приведённом мною коде (см. выше) я спрашивал о его правильности
А контроллер с двумя ССР зачем-то предлагаете вы
Сообщение от CERGEI1982 Посмотреть сообщение
Возми контроллер где есть 2 CCP для автоматической работы и быстродействия
Реклама:

Последний раз редактировалось yellow87; 27.01.2012 в 12:58.
yellow87 вне форума  
Непрочитано 27.01.2012, 13:13  
alvadep
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,042
Сказал спасибо: 589
Сказали Спасибо 3,967 раз(а) в 1,825 сообщении(ях)
alvadep на пути к лучшему
По умолчанию Re: Подсчёт импульсов

Сообщение от yellow87 Посмотреть сообщение
Вы не понимаете!
Я хочу использовать один модуль. И в приведённом мною коде (см. выше) я спрашивал о его правильности
А контроллер с двумя ССР зачем-то предлагаете вы
Судя по вопросам, не понимаете Вы.
Я всего-навсего обратился к CERGEI1982 для того чтобы уточнить ход его мыслей, но Вы посчитали это обращение в свой адрес, ну извините если это так задело.
alvadep вне форума  
Непрочитано 27.01.2012, 13:31  
Bumbarra
Вид на жительство
 
Регистрация: 16.09.2011
Сообщений: 342
Сказал спасибо: 10
Сказали Спасибо 170 раз(а) в 103 сообщении(ях)
Bumbarra на пути к лучшему
По умолчанию Re: Подсчёт импульсов

Нет, два модуля CCP не требуются вовсе. Ведь нужно определить сначала 58-й, затем 74-й импульс. 74-й импульс ведь никак не сможет прийти раньше, чем 58-й, правильно ведь? Следовательно, и нет необходимости отдельно выделять регистр под 74-й импульс.
Просто таймер TMR1 будет сначала считать до 58, сбрасываться и считать до 74-58=16, сбрасываться и повторять цикл заново. При событии равенства будут устанавливаться флаги прерываний или треггера специальных событий, в зависимости от настроек модуля CCP1.

Синхронизация осуществляется автоматически внутри контроллера. Суть в том, что регистрация пришедшего импусльса приращения TMR1осуществляется не сразу, а с задержкой, по приходу синхронизирующего импульса от внутреннего тактового генератора (деленного на 4). При работе контроллера на частоте 4 МГц задержка регистрации импульса будет менее 1мкс. Схема работает по принципу D-триггера, с котором на вход D поступает внешний сигнал приращения таймера, а на вход C - сигнал с внутреннего генератора. А уже с выхода Q этого триггера сигнал выходит на счетный вход TMR1.
Bumbarra вне форума  
Непрочитано 27.01.2012, 14:15  
ut1wpr
Почётный гражданин KAZUS.RUN
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Подсчёт импульсов

Сообщение от yellow87 Посмотреть сообщение
Вы не понимаете!
Я хочу использовать один модуль. И в приведённом мною коде (см. выше) я спрашивал о его правильности
А контроллер с двумя ССР зачем-то предлагаете вы
С каких пор правильность написанного кода проверяется на форуме? Вы с другими методами отладки и диагностики знакомы?
Развели бучу на несколько страниц постов, не удосужившись даже документацию на МК изучить. Не прочитать, нет. Изучить. А не мешало бы.
Аргумент "Не понял" звучит неубедительно и даже самоуничижительно.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 27.01.2012, 14:50  
picavr
Почётный гражданин KAZUS.RUN
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,815
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: Подсчёт импульсов

Сообщение от ut1wpr Посмотреть сообщение
С каких пор правильность написанного кода проверяется на форуме?.


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

пишешь вопрос - и тебе отвечают )) нафиг самому что-то изучать? ))) А для чего же тогда форумы существуют ? для того, что бы ты только задал вопрос - а тут же тебе разжевали и в рот положили...

Вот такое у нас поколение электронщиков и програмистов - форумистов растёть )))
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов

Последний раз редактировалось picavr; 27.01.2012 в 15:12.
picavr вне форума  
Непрочитано 27.01.2012, 14:56  
aleksandr_zh
Гражданин KAZUS.RUN
 
Регистрация: 17.11.2011
Адрес: Брянская область, РФ
Сообщений: 699
Сказал спасибо: 693
Сказали Спасибо 428 раз(а) в 213 сообщении(ях)
aleksandr_zh на пути к лучшему
По умолчанию Re: Подсчёт импульсов

вы еще фрумы "программистов" на Дельфи не видели, наверное
ДАЙ, ДАЙ, ДАЙ
aleksandr_zh вне форума  
Непрочитано 27.01.2012, 16:36  
ut1wpr
Почётный гражданин KAZUS.RUN
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Подсчёт импульсов

Сообщение от aleksandr_zh Посмотреть сообщение
вы еще фрумы "программистов" на Дельфи не видели, наверное
ДАЙ, ДАЙ, ДАЙ
Да видел. И Радиокота видел. Местами схожи. Впрочем, как и вопросами...
Вернулся к самому первому посту и так и не въехал. Надо найти (отсчитать от) N-ый и M-ый импульсы. Но от какого считать? Маркер начала существует? Дальше не читал, следил за разрастанием ветки. В конце концов прочитав про проверку правильности написанного кода, не выдержал.
Приношу свои извинения коллегам за резкость тона.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 27.01.2012, 16:55  
picavr
Почётный гражданин KAZUS.RUN
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,815
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: Подсчёт импульсов

Сообщение от Bumbarra Посмотреть сообщение
регистрация пришедшего импусльса приращения TMR1осуществляется не сразу, а с задержкой, по приходу синхронизирующего импульса от внутреннего тактового генератора (деленного на 4).
Уважаемый, а вы не путаетет архитектуры PIC с AVR? ))) в асинхронном режиме указан максимальный период счёта для TMR1 = 30 НАНОСЕКУНД.
Это что же по вашему, тактовый генератор должен работать на 1/0,00000003*4= 133 МГЦ?

Прежде чем советовать, вы бы в даташит глянули...

Сообщение от ut1wpr Посмотреть сообщение
Надо найти (отсчитать от) N-ый и M-ый импульсы. Но от какого считать? Маркер начала существует?
Да как люди программы пишуть возникает вопрос )) если ТЗ поставить не могут.

По моему задача выеденого гроша не стоит..

1) ждём условие начала счёта...
2) загрузил в 8 битный таймер 256-N, а в 16 битный 65536-N,
3) и жди себе прерывания от переполнения...
4) потом грузишь 256-(M-N) и опять ждёмс прерывания..
5) ждём условия начала счёта...
Миниатюры:
Нажмите на изображение для увеличения
Название: TMR1.jpg
Просмотров: 58
Размер:	34.6 Кб
ID:	30973  
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов

Последний раз редактировалось picavr; 27.01.2012 в 17:28.
picavr вне форума  
Непрочитано 27.01.2012, 17:42  
yellow87
Вид на жительство
 
Аватар для yellow87
 
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
yellow87 на пути к лучшему
По умолчанию Re: Подсчёт импульсов

Ну чтож вы все ругаетесь-то?
Я ж первый раз ССР решил использовать.
В итоге всё получилось.
Код:
#include ‹16F73.h›
#use delay(clock=4500000)
#fuses HS, NOWDT, NOPROTECT

#byte PORTC=7

#bit	IMP	=PORTC.0
#bit	OUT	=PORTC.2
#bit	LED	=PORTC.3


boolean odd=true, show=false;
const int t1=58, t2=74;

/////////////////////////////////////////////
#int_CCP1
void CCP1_isr(void)
{
if(odd)
	CCP_1 += t2;
	else CCP_1 += t1;
odd=!odd;
LED=1;
show=true;
}

/////////////////////////////////////////////
void main(void)
{
int i;
SET_TRIS_C(1);
LED=0; OUT=0;
SETUP_CCP1(CCP_COMPARE_INT);
SETUP_TIMER_1(T1_EXTERNAL | T1_DIV_BY_1 );
// T1_EXTERNAL_SYNC 	// тоже работает
ENABLE_INTERRUPTS(INT_CCP1);
SET_TIMER1(0);
CCP_1=t1;
ENABLE_INTERRUPTS(GLOBAL);
while(1)
	{
	while(!show);
	delay_ms(35);
	LED=0;	
	show=false;
	}
}
только непонятно, если вместо сигнального вывода(LED) использовать выход ССР(OUT), то моргания не наблюдается.

Последний раз редактировалось yellow87; 27.01.2012 в 17:45.
yellow87 вне форума  
Непрочитано 27.01.2012, 20:54  
Bumbarra
Вид на жительство
 
Регистрация: 16.09.2011
Сообщений: 342
Сказал спасибо: 10
Сказали Спасибо 170 раз(а) в 103 сообщении(ях)
Bumbarra на пути к лучшему
По умолчанию Re: Подсчёт импульсов

Цитата:
Уважаемый, а вы не путаетет архитектуры PIC с AVR? ))) в асинхронном режиме указан максимальный период счёта для TMR1 = 30 НАНОСЕКУНД.
Я? Нет, не путаю. Мы сейчас говорим о контроллере PIC16F877A, правильно, да? Ну дак ентож все верно... Мож я че не так сказал - писал быстро, с КПК, пока в метро опускался.

Максимальный период счета 30 нс? Где такой указан? Почему 133 МГц? Не врубаюсь, извините. Мы говорим вообще то о синхронном счете. Сейчас глянул - синхронизируется непосредственно от тактового генератора, а не от счетчика команд. Ну эт не так принципиально в этой задаче то.

yellow87, а теперь посчитай, на каких по счету импульсах срабатывает у тебя. Можешь использовать инструмент Counter Timer протеуса и возможность остановки в Breakpoints отладчика.
Цитата:
только непонятно, если вместо сигнального вывода(LED) использовать выход ССР(OUT), то моргания не наблюдается.
Проверь состояние регистра TRIS.
Цитата:
// T1_EXTERNAL_SYNC // тоже работает
Разумеется, поскольку после сброса предделитель таймера =1:1

Господа, вы, блин, че усложняете и без того простую задачу то?
Если основываться на модуле CCP, то решается все одним модулем без проблем. Нет, ну если хочется, можно и двумя модулями - не возражаю. А если потребуется определить не 58-й и 74-й импульс, а штук 20 разных? 20 модулей, чтоль?
Просто предполагаем, что 58-й по счету придет раньше, чем 74-й Разнице между ними - 16 импульсов.

Вначале, в тексте блока инициализации контроллера определяем режим работы модуля CCP1 и режим работы модуля TMR1, сбрасываем таймер, определяем маску разрешений прерываний.
Далее, в том месте программы, где нужно вести подсчет импульсов, устанавливаем регистр CCPR1L (используем только младший байт) на 58 и разрешаем работу таймера TMR1 - это и будет "точкой отсчета".
При поступлении 58-го импульса от "точки отсчета", по событию сравнения сбрасывается таймер TMR1. В обработчике прерываний определяем, что сравнение произошло именно с величиной 58 в регистре CCPR1L и записываем новое значение в регистр CCPR1L. Значение равно 74-58=16. То есть, 16 импульсов от 58-го до 74-го. Ну это то понятно? Выполняем какое-то действие по приходу 58-го импульса.
Выходим из обработчика прерываний, счет продолжается, приходит 74-й импульс, снова происходит событие сравнения.
Определяем, что сравнение было со следующей величиной (то есть, с 16, а не с 58 ), выполняем действие по приходу 74-го импульса и запрещаем работу таймера.
Всё, задача решена.

Вот код, во вложении, и там же проект в протеусе. Извини, код писал на ассемблере.
При поступлении 58-го импульса зажигается зеленый светодиод, при поступлении 74-го - красный.

Сообщение от ut1wpr Посмотреть сообщение
Но от какого считать? Маркер начала существует?
Да маркер начала, как отдельный элемент, не нужен. Это не принциписально для решения задачи. Маркером начала будет вызов подпрограммы подсчета импульсов, в начале которой будет разрешение работы таймера TMR1 (либо модуля CCP1). А каким способом и по какому событию вызывается эта подпрограмма - эт уж дело топикстартера.

Цитата:
Прежде чем советовать, вы бы в даташит глянули...
Я то глянул, а вот вы то недосмотрели. (могу точно так же "ответить") ЛОЛ.
Во-первых, фраза "Greater of:" переводится как "большее из:" То есть, 30 нс получится только при 20 МГц кварце контроллера и с предделителем 1:8 у таймера. TCY - это период иснтрукции.
А во-вторых, параметры 45-47 относятся к минимальной длительности сигнала, который вообще еще будет фиксироваться на входном предделителе. А приращение таймера произойдет по параметру 48 - только спустя минимум 2 периода тактового генератора.
То есть, это вовсе не означает, что TMR1 будет инкрементироваться с частотой 33 МГц.
Вложения:
Тип файла: zip Imp_Count.zip (36.6 Кб, 117 просмотров)

Последний раз редактировалось Bumbarra; 28.01.2012 в 00:17.
Bumbarra вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Счетчик импульсов (0,5-50) В lanex1985 Электроника - это просто 21 21.01.2011 11:13
Генераторы импульсов Николай.... Поиск схем. Делимся схемами 4 14.07.2010 21:51
Счётчик импульсов Rust2303 Поиск схем. Делимся схемами 5 12.06.2010 18:38
Счетчик импульсов vo1 Производственное оборудование 3 16.06.2009 15:55
Подсчёт ширины сигнала execute Микроконтроллеры, АЦП, память и т.д 4 30.03.2008 22:26


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.