Помогите написать кусочек кода (C++)
Помогите написать кусочек кода (C++)
Товарищи знатоки помогите пожалуйста написать кусочек кода (C++) для распознования сигнала адресного кода, описание сигнала я привёл в прилагаемом файлике но на всякий случай опишу:Адресный код состоит из импульса сброса и пакета счетных импульсов, Длительность импульса сброса составляет 350 мс, счетного импульса 0,25 мс, период следования счетных импульсов 0,5 мс, пауза между импульсом сброса и пакетом счетных импульсов 50 мс. Необходимо посчитать количество счётных импульсов и выполнить проверку следующего характера: проверить является ли импульс сброса импульсом сброса или просто помехой и узнать не завершающий ли это импульс сброса в конце всей посылки.. =( что делать ума не прилажу как подловить импульс сброса и начать считать счётные импульсы, когда я начинаю проверку на принадлежность импульса сброса к своему прямому назначению то считать уже нечего.. как это сделать??? помогите пожалуйста!!!!!!!!!!! На линии откуда должны прийти импульсы постоянно гдето в районе 5 вольт поэтому я запилил через транзистор для защиты порта контроллера.... Спасибо большое откликнувшимся.

- Вложения
-
- Схема.jpg
- Схема
- (191.72 КБ) 460 скачиваний
- Реклама
- blackx
- Говорящий с текстолитом
- Сообщения: 1518
- Зарегистрирован: Пт дек 28, 2012 21:56:46
- Откуда: St. Petersburg
Re: Уважаемые Гуру AVR Помогите пожалуйста школоте
если хотите чтобы вам помогли, вот пара советов:
1) первым делом кратко опишите общую проблему. То есть то, к чему относится конкретный вопрос. Можно начинать со слов "Я разрабатываю ...", "У меня есть устройство для ...". Что вы делаете и для чего?
2) если уже что-то готово, кратко опишите ключевые решения, которые вы приняли при разработке, и (желательно) их причину. Каким устройством вырабатывается сигнал и почему? По какому протоколу передаются данные и какие? Зачем его нужно обрабатывать? Почему выбран именно С++, в конце концов?
3) опишите подробно конкретную проблему с которой столкнулись. Не можете написать код, потому что не умеете программировать? Проблемы с алгоритмом? С++ и ООП ваша слабость?
Подробное (но краткое!) описание задачи мотивирует людей помогать. Так как становится понятно, эта помощь не уйдет в пустоту, только потому что вы по незнанию пытаетесь, например, сделать то, что уже давно сделано, или то, что и работать никогда не будет. Вот откуда мне знать, что вы не пытаетесь программно реализовать UART, который и так уже присутствует в ATmega8?
1) первым делом кратко опишите общую проблему. То есть то, к чему относится конкретный вопрос. Можно начинать со слов "Я разрабатываю ...", "У меня есть устройство для ...". Что вы делаете и для чего?
2) если уже что-то готово, кратко опишите ключевые решения, которые вы приняли при разработке, и (желательно) их причину. Каким устройством вырабатывается сигнал и почему? По какому протоколу передаются данные и какие? Зачем его нужно обрабатывать? Почему выбран именно С++, в конце концов?
3) опишите подробно конкретную проблему с которой столкнулись. Не можете написать код, потому что не умеете программировать? Проблемы с алгоритмом? С++ и ООП ваша слабость?
Подробное (но краткое!) описание задачи мотивирует людей помогать. Так как становится понятно, эта помощь не уйдет в пустоту, только потому что вы по незнанию пытаетесь, например, сделать то, что уже давно сделано, или то, что и работать никогда не будет. Вот откуда мне знать, что вы не пытаетесь программно реализовать UART, который и так уже присутствует в ATmega8?
only pure true norwegian blackx 
Re: Помогите написать кусочек кода (C++)
Извиняюсь за изначально кривое оформление поста =) Не ругайте сильно =)) В общем по существу.. обрабатываемый сигнал вырабатывает вызывная панель домофона =) Язык С++ выбран в виду того что половина проекта отвечающая за дальнейшую обработку расшифрованного значения написана на C++
микроконтроллер ATMEGA8 вызывная панель Eltis. Суть задачи распознать введённый на панели номер и записать его в ячейку энергонезависимой памяти. память была выбрана AT24C08. это пока всё что я могу добавить.. Очень извиняюсь если озадачил знатоков какой то ерундой.. Но мне очень нужна помощь.. 
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: Помогите написать кусочек кода (C++)
Вы уверены, что это С++ , а не чистый Си?DoctorVx писал(а):половина проекта отвечающая за дальнейшую обработку расшифрованного значения написана на C++
так и не понятно в чем проблема посчитать эти импульсы... в алгоритме?
пойду от малого:
Задача: нужно определить импульс сброса это или помеха?
Уточнение: чем фактически отличается импульс сброса от помехи? конечно же длительностью. если длительность импульса в пределах нормы 350мс +/- погрешность (кстати сколько она?), а пауза после него 50мс +/- погрешность, то можно считать, что это импульс сброса.
Возможное решение: ловим фронт импульса сброса (внешним прерыванием), определяем уровень на входе - если лог."1" настраиваем прерывание на спадающий фронт (если лог."0" - на нарастающий фронт) и до момента прерывания каждую милисекунду (например) проверяем состояние входа, одновременно считая кол-во проверок. Если уровень на входе не меняется в течение 350 +/- проверок, то можно считать, что этот импульс подходит по свойствам к импульсу сброса. далее ожидаем прерывание по спадающему фронту и после него аналогично считаем 50 миллисекунд. Если все прошло удачно - считай, что это был импульс сброса. Если в течение проверок изменилось состояние входа в момент, когда этого не ожидалось, то считаем, что это помеха и сбрасываем счетчики.
Это Вам требуется?
Ставим плюсы: )
Re: Помогите написать кусочек кода (C++)
О! Да!! это то что надо я походу дела совсем напутал всё.. Язык СИ просто!!.. про спадающие и нарастающие фронты..... У меня ведь изначально контроллер слушает линию где +5 вольт.. может и 12 то есть там постоянно лог. '1' патом как я понял '0' ненадолго .. потом идёт последовательность.. потом с ново импульс сброса это как гласит описание работы панели вызова говорит об окончании счётных импульсов. дальше идут вызывные посылки но мне это уже не нужно.. мне нужно всего лишь по линии LV вызывной панели , расшифровать что введено на самой панели.. Спасибо что откликнулись =)
- Реклама
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: Помогите написать кусочек кода (C++)
так проблема в том, что вы не можете составить алгоритм + не можете написать код под него? т.е. практически ничего не можете....
если это так, то зачем вы вообще взялись за эту работу?
если это так, то зачем вы вообще взялись за эту работу?
Ставим плюсы: )
Re: Помогите написать кусочек кода (C++)
Хорошо, давайте тогда перевернём ситуацию немного в другую сторону... Сколько будет стоить кусочек кода 10000% работающий и распознающий номер набранной квартиры с вызывной панели Eltis, Cyfral? на микроконтроллере ATMEGA8 с комментариями в строчках кода и с защитой порта микроконтроллера от криворукого подключения к вызывной панели защитой от умышленной порчи путём электрического разряда шокером и прочего что может вывести микроконтроллер из строя.. задача кусочка кода распознать набранный номер и поместить его в переменную, задача схемы интегрироваться в существующую систему не нарушая её работу (то есть интеграция в действующий полноценный домофон) По поводу вашего предположения "Вы ничего не можете" если бы все тут всё могли то форум себя бы исчерпал не успев образоваться.. Тут как мне казалось обсуждают вопросы по существу а не причины пробелов в знании о программировании и алгоритмизации. Если вас заинтересовало готов выслушать ваши ценовые предложения.. Спасибо.
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Помогите написать кусочек кода (C++)
У самолета два магнеты, и то нет 100% гарантии.
Docendo discimus
Re: Помогите написать кусочек кода (C++)
ну так то да =)))) Но всё же хотя бы минимизировать влияние искривления рук на устройство можно попытаться =))))))))))


