Палыч 10 27 декабря, 2011 Опубликовано 27 декабря, 2011 · Жалоба Поскольку у Вас таймер "тикает" с частотой 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(); } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shadow8619 0 4 января, 2012 Опубликовано 4 января, 2012 · Жалоба Всех с новым годом!!! Спасибо огромное, Палыч! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
muravei 3 12 января, 2012 Опубликовано 12 января, 2012 · Жалоба С МК, конечно, пральнее :) , но можно было не париться, сделать: жд. мульт. -интегр. фильтр- измеритель Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shadow8619 0 2 февраля, 2012 Опубликовано 2 февраля, 2012 · Жалоба Снова здравствуйте, уважаемые программисты! У меня такой вопрос образовался: если я не хочу применять кварц для тактирования МК, а хочу, чтоб он от внутреннего генератора на 1МГц работал, мне в программе что-либо указывать нужно, или он по умолчанию от него запустится? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 2 февраля, 2012 Опубликовано 2 февраля, 2012 · Жалоба если я не хочу применять кварц для тактирования МК, а хочу, чтоб он от внутреннего генератора на 1МГц работал, мне в программе что-либо указывать нужноВам нужно правильным образом прошить фьюзы при програмировании вашей прошивки Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shadow8619 0 5 февраля, 2012 Опубликовано 5 февраля, 2012 · Жалоба спасибо! буду теперь с этим разбираться.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shadow8619 0 19 марта, 2012 Опубликовано 19 марта, 2012 · Жалоба Уважаемые форумчане, помогите разобраться с очередным бзиком моего Гейгера. Преобразователь на питание МК из 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мк. я так понимаю, что по входу идет наводка. как бы ее зашунтировать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OlegH 0 19 марта, 2012 Опубликовано 19 марта, 2012 · Жалоба Ну так найдите ошибку.... Уменьшите свои 46 секунд до удобного в отладке значения (можно текущее число импульсов сразу выводить на индикацию а не ждать какое-то время) и сымитируйте 1 импульс на счетный вход. Ищите ошибку в программе до тех пор пока поведение не будет адекватным.... Очевидно либо импульс с дребезгом либо программа на один импульс увеличивает счетчик множество раз. А может само число счетчика неправильно формируется для вывода на индикатор (на что косвенно намекает кратность 10) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shadow8619 0 19 марта, 2012 Опубликовано 19 марта, 2012 · Жалоба Спасибо за совет, Олег! Попробую так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shadow8619 0 19 марта, 2012 Опубликовано 19 марта, 2012 · Жалоба Спасибо большое за внимание! разобрался! это не наводка была по входу.. а кривые руки.. при изготовлении платы индикатора отзеркалил 1 и 3 разряд, вот у меня 3-х значные числа и лезли ))). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shadow8619 0 25 марта, 2012 Опубликовано 25 марта, 2012 (изменено) · Жалоба А подскажите, пожалуйста, как должен выглядеть текст программы, если я хочу сделать короткий звуковой сигнал с одной из ножек МК, который будет звучать при появлении счетного импульса на входной ножке? Интересует момент формирования звука. Изменено 25 марта, 2012 пользователем shadow86 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 25 марта, 2012 Опубликовано 25 марта, 2012 · Жалоба А подскажите, пожалуйста, как должен выглядеть текст программы, если я хочу сделать короткий звуковой сигнал с одной из ножек МК, который будет звучать при появлении счетного импульса на входной ножке? Интересует момент формирования звука. Вам нужно два счётчика . Счетчик- длительности звучания и счётчик -частота звучания. Второе выбирается из DS на пищалку. Длительность на слух. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shadow8619 0 26 марта, 2012 Опубликовано 26 марта, 2012 · Жалоба спасибо за ответ! Бум стараться ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться