Перейти к содержанию
    

Счетчик импульсов с выводом на 7-ми сегментный индикатор

Поскольку у Вас таймер "тикает" с частотой 50 Гц (верю Вам на слово), то за 49 сек таймер "натикает" 50 * 49 = 2450 раз. Поэтому:

unsigned int t= 0;

//прерывания таймера Т0 - вывод на индикатор
interrupt [TIM0_OVF] void Timer0Ovf(void)
{
  TCNT0 = 0xb2;
  if(++t >= 2450)
  {
    t=0;
    IND_Conv(imp);
    imp= 0;
  }
  IND_Update();
}

 

Возникает проблема с неатомарностью изменения переменной imp в функции main. Там, где эта переменная изменяется в main - необходимо обрамить командами запрета и разрешения прерывания.

 

PS. Другое решение: не трогать переменную imp в обработчике прерывания от таймера, а по истечению 49 сек взвести некий флаг, а уж в main этот флаг анализировать, и, по нему вызывать IND_Conv и сбрасывать imp :

unsigned int t= 0;
volatile char flag= 0;

в main
........
  if(flag)
  {
    flag=0;
    IND_Conv(imp);
    imp= 0;
  } 
........
//прерывания таймера Т0 - вывод на индикатор
interrupt [TIM0_OVF] void Timer0Ovf(void)
{
  TCNT0 = 0xb2;
  if(++t >= 2450)  {    t=0; flag= 1;  }
  IND_Update();
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С МК, конечно, пральнее :) , но можно было не париться, сделать: жд. мульт. -интегр. фильтр- измеритель

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Снова здравствуйте, уважаемые программисты! У меня такой вопрос образовался: если я не хочу применять кварц для тактирования МК, а хочу, чтоб он от внутреннего генератора на 1МГц работал, мне в программе что-либо указывать нужно, или он по умолчанию от него запустится?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если я не хочу применять кварц для тактирования МК, а хочу, чтоб он от внутреннего генератора на 1МГц работал, мне в программе что-либо указывать нужно
Вам нужно правильным образом прошить фьюзы при програмировании вашей прошивки

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемые форумчане, помогите разобраться с очередным бзиком моего Гейгера. Преобразователь на питание МК из 2.4В в 5В работает идеально: напряжение 5.02В, пульсации не вижу на осциллографе даже при максимальном усилении. На вход МК (РВ4) подаю сформированные подготовленные импульсы с ждущего мультивибратора на к155аг1 (пробовал разные длительности: от 0.1с до 0.1мс), а после заданного промежутка времени и счета на индикатор выводятся какие-то космические значения (как я заметил, кратные 10)!!! которых в принципе быть не может - вместо 11-17 -- 510-820. Как понимать что он считает и как это исправить??? на питании МК стоит 10мк+0.1мк потом дроссель на 10мкГн потом 0.1мк; после преобразователя - 0.1мк+220мк+1500мк. я так понимаю, что по входу идет наводка. как бы ее зашунтировать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну так найдите ошибку.... Уменьшите свои 46 секунд до удобного в отладке значения (можно текущее число импульсов сразу выводить на индикацию а не ждать какое-то время) и сымитируйте 1 импульс на счетный вход. Ищите ошибку в программе до тех пор пока поведение не будет адекватным.... Очевидно либо импульс с дребезгом либо программа на один импульс увеличивает счетчик множество раз. А может само число счетчика неправильно формируется для вывода на индикатор (на что косвенно намекает кратность 10)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо большое за внимание! разобрался! это не наводка была по входу.. а кривые руки.. при изготовлении платы индикатора отзеркалил 1 и 3 разряд, вот у меня 3-х значные числа и лезли ))).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А подскажите, пожалуйста, как должен выглядеть текст программы, если я хочу сделать короткий звуковой сигнал с одной из ножек МК, который будет звучать при появлении счетного импульса на входной ножке? Интересует момент формирования звука.

Изменено пользователем shadow86

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А подскажите, пожалуйста, как должен выглядеть текст программы, если я хочу сделать короткий звуковой сигнал с одной из ножек МК, который будет звучать при появлении счетного импульса на входной ножке? Интересует момент формирования звука.

 

Вам нужно два счётчика . Счетчик- длительности звучания и счётчик -частота звучания. Второе выбирается из DS на пищалку. Длительность на слух.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...