Здравствуйте! Написана программа, подключены библиотеки, но все это сделано без учета прерываний.На данном этапе появилась необходимость использования их. Без них все вроде работает красиво и как надо. Настроил и включил прерывание и тут начался беспредел...Я понимаю что это связано с тем,что прерывания влезают не в свое дело и портят картину. Как и где именно расставить запреты?
я так понимаю, это был сарказм. а теперь перечитайте, что вы написали, и скажите, какая полезная информация содержится в вашем тексте? вы написали что-то типа мычания пьяного сторожа зоопарка, у которого слон сбежал "я того этого, а он как это, ну того самое, ну ваще, это ж надо так!"
так что вполне бы вам минусов надо подсыпать в топку...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Снова КОТЕНКА закусюкали... Ежли человек только за те МК взялся - естественно и ошибки/неточности будут. Тем более, когда старт не с азов железа, а по современным учебникам и... Это мы с карандашика и пустографки начинали - а сейчас ХИТРЫ ДЯДИ народ готовым СЫРОМ пичкают (адуринки, Сишные проекты и прочая начинка МЫШЕЛОВОК).
а теперь перечитайте, что вы написали, и скажите, какая полезная информация содержится в вашем тексте?
у меня в данной проблеме к сожалению полная растерянность и полное парение в пространстве.Если б я знал какую полезную информацию Вам закинуть, возможно и не появилась бы эта тема.
Написана программа, подключены библиотеки, но все это сделано без учета прерываний.На данном этапе появилась необходимость использования их.
Для чего прерывания вам?
ROMan2947 писал(а):
Без них все вроде работает красиво и как надо.
Дело в том,что поэтапно я навешиваю на МК периферию. Сначала LCD,ds18b20,клавиатуру,ds1307,генераторы импульсов и т.д. часть периферии навешал, где не использовалось прерывание все работает.Сейчас подключаю генераторы импульсов тут-то и нужны стали INTы...
Карма: 20
Рейтинг сообщений: 188
Зарегистрирован: Вс мар 28, 2010 12:52:22 Сообщений: 1368 Откуда: Беларусь
Рейтинг сообщения:1
Прерывания нужно запрещать там, где требуется приоритет над ними - например тайминг логического состояния в программной реализации протокола. Только нужно учитывать моменты, вроде "не менее" или "не более" и все будет хорошо. Например, в I2C - время лог. 0 в линии CLK - не ограничено для микросхемы 24Сxx. Т.е., выставив уровни на выводах можно разрешать прерывания и включать задержку. А получится она 5мкС (100 кГц) или 50 из-за прерывания будет не важно.
_________________ «Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Карма: 20
Рейтинг сообщений: 188
Зарегистрирован: Вс мар 28, 2010 12:52:22 Сообщений: 1368 Откуда: Беларусь
Рейтинг сообщения:0
Подключить в нее *.obj или аналогичный (не *.hex) файл и запустить в пошаговом выполнении. На вектора прерываний поставить точки останова - по выходу будете знать, откуда был "прыжок" и чем он чреват для данного участка кода.
_________________ «Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Прерывания нужно запрещать там, где требуется приоритет над ними - например тайминг логического состояния в программной реализации протокола. Только нужно учитывать моменты, вроде "не менее" или "не более" и все будет хорошо. Например, в I2C - время лог. 0 в линии CLK - не ограничено для микросхемы 24Сxx. Т.е., выставив уровни на выводах можно разрешать прерывания и включать задержку. А получится она 5мкС (100 кГц) или 50 из-за прерывания будет не важно.
Момент "не менее" я думаю невозможно испортить прерыванием.... а вот "не более"" легко. значит главный враг это время?
Подключить в нее *.obj или аналогичный (не *.hex) файл и запустить в пошаговом выполнении. На вектора прерываний поставить точки останова - по выходу будете знать, откуда был "прыжок" и чем он чреват для данного участка кода.
ммм...начинаю понимать про что Вы...для этого я думаю лучше avrdragonom пройтись,нет?
Карма: 20
Рейтинг сообщений: 188
Зарегистрирован: Вс мар 28, 2010 12:52:22 Сообщений: 1368 Откуда: Беларусь
Рейтинг сообщения:0
Proteus допускает пошаговую отладку при симуляции. При этом также доступен код, который был подключен к контроллеру. А про "не ...." - нужно выделить данные участки кода, критичные ко времени выполнения, и выделить их в cli - sei.
_________________ «Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2708 Откуда: г. Чайковский
Рейтинг сообщения:1 Медали: 1
ROMan2947 писал(а):
Если б я знал какую полезную информацию Вам закинуть,
Описание схемы или ее предоставление в форум. Как и что делало устройство "до". Что добавлено в код и как стало неправильно работать. С приложением исходного кода, но только не в виде портянки на 8 листов.
ROMan2947, представте , что на мед.форуме Вы создали топик: "Мне было хорошо, я что-то съел и мне стало плохо, дайте таблетку". Как Вы думаете, Вам помогут с таким вопросом? И не удивлюсь, что если все-таки вытянут из Вас нужную инфу, то окажатся съели Вы банан, подскользнулись на его шкуре, сломали ногу и нужна совсем не таблетка.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
если делать поуму - скорее весь код придется переписать, раскладывая по полочкам, если костылить - найдите в коде delay_ms(); (думаю если всё сделано без прерываний - они у вас есть) и разрешайте прерывания до них, а сразу после запрещайте обратно, может и поможет.
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Совершенно неудачный подход к решению задачи: "...сначала создам простое, а затем добавляю обвеску..." Дело в том, что постепенное наращивание периферии без начального планирования и распределения ресурсов под возможное наращивание в процессе начального проектировании схемы неизбежно приведет в конфликтам минимум в программной части проекта. Так чот в Вашем, ROMan2947 случае КАЖДУЮ схемку лучше начинать проектировать заново, исходя из наработанного ранее опыта (вариации библиотек) и текущей поставленной задачи. Возможно прийдется и схемотехнику подключения внешних устройств и распределение взаимосвязей между программными модулями (подпрограммами) изменять. Со временем и опыт изначального планирования "идея -схема -программа" прийдет. На начальном этапе надо стараться действовать "по правилам" (или как можно ближе к ним). МК штука прикладная... Так что ежли "затык" и не совсем понятно как объяснить для "уже знающих" возникшую проблему начинаем с выкладывания схема исходник чего хотелось получить что получилось в реале (предпочтительно макет - но для большинства сейчас и симулятора протезного хватит).
while (!(ds18b20_PIN&(1 << DQ))); может выполняться очень долго, вот, во время его и попробуй разрешить прерывания
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
ROMan2947 Текстовку ставить под спойлер надо (выделяем текст - жмем Code, снова выделяем все что получилось/с окантовочными символами/ и жмем spoiler) - так основные тексты сообщений не будут загромождаться. А кому интереснт - откроют полный текст. Для контроля результата перед окончательной отправкой есть кнопа "предпросмотр".
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения