Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

Подсчёт импульсов по входам с общей подтяжкой

Непрочитано 12.06.2024, 23:18  
j-Roger
Гражданин KAZUS.RUN
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 839
Сказал спасибо: 379
Сказали Спасибо 942 раз(а) в 451 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: Подсчёт импульсов по входам с общей подтяжкой

По отдельности - не вопрос; ЕМНИП речь шла об одновременной обработке ДВУХ каналов
Реклама:
j-Roger вне форума  
Сказали "Спасибо" j-Roger
Darkmaster777 (13.06.2024)
Непрочитано 13.06.2024, 01:07  
Godzilla82
Почётный гражданин KAZUS.RUN
 
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: Подсчёт импульсов по входам с общей подтяжкой

Сообщение от Darkmaster777 Посмотреть сообщение

Блин и в переменную я считывал порт, и даже если счёт должен идти по одному каналу, всё равно считает обе переменные хранения и во вторую в2 раза больше
Код:
   
             if(!(PulseW &= ~(1‹‹4))) {fan1++;}
             if(!(PulseW &= ~(1‹‹6))) {fan2++;}
Зачем же "&="
Это равносильно
PHP код:
PulseW = PulseW & ~(1‹‹4); 
Надо
PHP код:
if(PulseW & (1‹‹4)) fan1++;
if(PulseW & (1‹‹6)) fan2++; 
Godzilla82 вне форума  
Сказали "Спасибо" Godzilla82
Darkmaster777 (13.06.2024)
Непрочитано 13.06.2024, 07:33  
Darkmaster777
Частый гость
 
Регистрация: 01.07.2016
Сообщений: 21
Сказал спасибо: 8
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Darkmaster777 на пути к лучшему
По умолчанию Re: Подсчёт импульсов по входам с общей подтяжкой

j-Roger, конечно. Для этого и надо хранить предыдущее состояние. Но это конечно не очень вариант, прерывание по этим входам, не Клава все ж. Проверю, щас работа мешает
Godzilla82, ну да, что я собственно сам и написал
С помощью Всех.
А то думаешь верно, а пишешь не верно
Сообщение от j-Roger Посмотреть сообщение
По отдельности - не вопрос; ЕМНИП речь шла об одновременной обработке ДВУХ каналов
Пашут' оба канала, незавимо тепереча


Однако не совсем понятно почему я считываю не полных 2000имп, а лишь 200, чешу репу.Кратно 5.
Т. Е. Исходя из тех характеристик.. Два импульс за оборот вала, за минуту при частоте 1000об/мин = 2000имп....
Придется повозиться

Последний раз редактировалось Darkmaster777; 13.06.2024 в 22:12. Причина: Итоги
Darkmaster777 вне форума  
Непрочитано 14.06.2024, 00:31  
j-Roger
Гражданин KAZUS.RUN
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 839
Сказал спасибо: 379
Сказали Спасибо 942 раз(а) в 451 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: Подсчёт импульсов по входам с общей подтяжкой

Сообщение от Darkmaster777 Посмотреть сообщение
Но это конечно не очень вариант, прерывание по этим входам, не Клава все ж
У этого ПИКа для реакции на изменение лог. уровня на входе больше ничего не остается ( в рамках данной задачи; ну разве что еще вход INT ) - МК не знает, Клава это или Элеонора или вообще Таходатчик; его задача - сгенерировать прерывание, а там заинтересованная сторона разберется, откуда куда и зачем . И да, в обработчике прерываний счетчики импульсов по обоим каналам ( fan1 и fan2 ) обновляются корректно (при условии, что входные сигналы поступают на линии RB4..RB7).

Наиболее вероятно, что теперь проблему следует искать в чтении и интерпретации результатов измерений.
j-Roger вне форума  
Сказали "Спасибо" j-Roger
Darkmaster777 (14.06.2024)
Непрочитано 14.06.2024, 02:11  
j-Roger
Гражданин KAZUS.RUN
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 839
Сказал спасибо: 379
Сказали Спасибо 942 раз(а) в 451 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: Подсчёт импульсов по входам с общей подтяжкой

Проверяем работу "программного детектора перепада 1-›0" для каждого из двух каналов:
- подтвердим регистрацию спада на канале RB4 коротким импульсом на выходе RA0;
- подтвердим регистрацию спада на канале RB5 коротким импульсом на выходе RA1.

В коде rpm_count() это может выглядеть так:
PHP код:
    ...
    if (FallingEdges & _PORTB_RB4_MASK) {
        fan1++;
        // -----------
        PORTAbits.RA0 = 1; // Подтверждение регистрации импульса на входе RB4 коротким импульсом на выходе RA0
        NOP();
        NOP();
        PORTAbits.RA0 = 0;
    }
    if (FallingEdges & _PORTB_RB5_MASK) {
        fan2++;
        // -----------
        PORTAbits.RA1 = 1;  // Подтверждение регистрации импульса на входе RB5 коротким импульсом на выходе RA1
        NOP();
        NOP();
        PORTAbits.RA1 = 0;
    ...

    } 

Подключаем счетчики импульсов для входного и выходного синалов:
Канал fan1, вход МК RB4, выход RA0, на входе меандр 1000 Гц;
Канал fan2, вход МК RB5, выход RA1, на входе меандр 100 Гц,

Измерение за время 1.2 секунды, все укладывается в ожидания:
Нажмите на изображение для увеличения
Название: fans.png
Просмотров: 0
Размер:	22.8 Кб
ID:	182286

В обрабочике прерываний - только вызов функции rpm_count() с целью убедиться в корректности обработки сигналов от таходатчиков.
За секунды счета разница в реальных и измеренных значениях может отличаться на единицы, но никик не в разЫ.
Пара золотых правил - отсутствие блокирущих задержек в обработчиках прерываний и атомарное чтение/запись volatile-переменных ( в случаях необходимости ).
j-Roger вне форума  
Непрочитано 14.06.2024, 05:54  
Darkmaster777
Частый гость
 
Регистрация: 01.07.2016
Сообщений: 21
Сказал спасибо: 8
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Darkmaster777 на пути к лучшему
По умолчанию Re: Подсчёт импульсов по входам с общей подтяжкой

j-Roger, спасибо
Да, это вопрос интерпретации может плюшки может Калории отопления)
В железе считает чётко, +- чуть, даже буфер не нужен.
Darkmaster777 вне форума  
 

Метки
pic, подсчёт импульсов, прерывание rb4 rb7
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчёт импульсов yellow87 Микроконтроллеры, АЦП, память и т.д 29 27.01.2012 20:54


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


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