Здравствуйте.
Образовалась небольшая проблема, нужно передать импульсы с входа порта на выход другого.
Пишу вот так:
PORTD.0=PINB.0
Вроде передает(в Протэусе), но когда подаю сигналы с какого нибудь устройства, конкретное число импульсов, на выходе присутствуют добавочные импульсы.
Например: Вход=50, выход=54 или 57 и подобное.
В чем может быть проблема, или надо как-то по другому это реализовать?
ЗАРАНЕЕ СПАСИБО!!!
attiny2313 Передача импульсов
- Gudd-Head
- Друг Кота
- Сообщения: 20091
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: attiny2313 Передача импульсов
Сразу напрашивается вопрос: а нафига оно надо?
Может, лучше использовать внешнее прерывание для генерации импульса на выходе?
Может, лучше использовать внешнее прерывание для генерации импульса на выходе?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Pooher
- Мучитель микросхем
- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
Re: attiny2313 Передача импульсов
Похоже на "дребезг". Добавьте в код, на пример, доп. проверку через задержку.
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Re: attiny2313 Передача импульсов
To Gudd-Head:
Вообще там в зависимости от некоторых условий нужно будет или повторить сигнал на входе или добавить к нему n-импульсов, в зависимости от условия. Спасибо за подсказку.
Попробую через прерывания.
To Pooher:
Тоже думал что дребезг, пробывал разные значения для delay, но не получилось. Дат чик может выдавать импульсы с разным промежутком от 1 до 140 Гц. Может есть какие нибудь варианты программы антидребезга без делая? Поделитесь. Буду благодарен за помощь и подсказки!
Вообще там в зависимости от некоторых условий нужно будет или повторить сигнал на входе или добавить к нему n-импульсов, в зависимости от условия. Спасибо за подсказку.
To Pooher:
Тоже думал что дребезг, пробывал разные значения для delay, но не получилось. Дат чик может выдавать импульсы с разным промежутком от 1 до 140 Гц. Может есть какие нибудь варианты программы антидребезга без делая? Поделитесь. Буду благодарен за помощь и подсказки!
Re: attiny2313 Передача импульсов
делай просто инкремент типа i++ и потом сбрасывай
сделай захват испульса таймером по прерыванию инт0
сделай захват испульса таймером по прерыванию инт0
тематические ответы только в форуме, в приват не пишите
Re: attiny2313 Передача импульсов
To _noise:
если поделить 1 на частоту получаю время между импульсами, но так как я не знаю какая частота может быть в данный момент то подобрать значения для делая не могу, сам датчик представляет механическое устройство с вращением по кругу которое выдает импульсы по ходу вращения.
To kalobyte:
ну я пробовал принемать импульсы и счетать таймером по фронту.
А можно по-подробнее, а то что-то не "въезжаю" и если можно с примером кода
если поделить 1 на частоту получаю время между импульсами, но так как я не знаю какая частота может быть в данный момент то подобрать значения для делая не могу, сам датчик представляет механическое устройство с вращением по кругу которое выдает импульсы по ходу вращения.
To kalobyte:
ну я пробовал принемать импульсы и счетать таймером по фронту.
А можно по-подробнее, а то что-то не "въезжаю" и если можно с примером кода

- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: attiny2313 Передача импульсов
Что-то мне опять это напоминает тему про бензораздаточную колонку
Напоминаю - УК ни кто не отменял.
Напоминаю - УК ни кто не отменял.
Re: attiny2313 Передача импульсов
To GP1:
?
To _noise:
пробыал вот так:
while(PIND.1==0){}
delay_us(200);
if(PINB.0==1)
{PORT.0=0;}
else
{PORTB.0=1}
while (PIND.0==0){}
delay_us(200);
?
To _noise:
пробыал вот так:
while(PIND.1==0){}
delay_us(200);
if(PINB.0==1)
{PORT.0=0;}
else
{PORTB.0=1}
while (PIND.0==0){}
delay_us(200);
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: attiny2313 Передача импульсов
оф-топ
тут просто уже было пару тем, типа:
"помогите вставить импульс"...
выяснилось что сей прибамбас нужен для бензоколонки
тут просто уже было пару тем, типа:
"помогите вставить импульс"...
выяснилось что сей прибамбас нужен для бензоколонки
