|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 5:12 am
|
Страница 1 от 1
|
[ 5 мнения ] |
|
Проблем с комбинация от 2 прекъсвания при pic16f
| Автор |
Съобщение |
|
dan
Ранг: Форумен бог
Регистриран на: Вто Май 29, 2007 2:23 pm Мнения: 3714 Местоположение: Високо в планината
|
 Проблем с комбинация от 2 прекъсвания при pic16f
Здравейте!
Имам следния странен проблем:
Имплементирал съм софуерно предаване и приемане по RS-232 при pic16f684. Когато е разрешено прекъсването при промяна на PORTA, предаването работи без грешка. Когато обаче разреша и прекъсването при падащ фронт на RA2, предаването не сработва.
Предполагам, че проблема идва от неправилно съвместяване на две прекъсвания на един порт. Не мога да си обяся обаче защо става така, при условие, че прекъсването при промяна на състоянието на RA2 не е разрешено.
Ето откъс от конфигурацията на прекъсванията:
И откъс от програмата за обработка на прекъсвания:
Ще бъда много благодарен на съвет или предположение. 
|
| Пет Апр 25, 2008 7:01 pm |
|
 |
|
dan
Ранг: Форумен бог
Регистриран на: Вто Май 29, 2007 2:23 pm Мнения: 3714 Местоположение: Високо в планината
|
 Проблема е решен
Това го пиша за ползата на тези, които някога биха се сблъскали с подобен проблем.
Поиграх си малко и забелязах, че когато сложа реда в коментар, другото разрешено прекъсване се обработва. А когато махна коментара, въобще не се стига до функцията за обработка на прекъсванията. Това, което ми оправи проблема беше, че вместо всяко прекъсване да го разрешавам със сетване на съответния бит по отделно, целия INTCON го записвам на веднъж. Ето така: вместо Изполвам:
Програмката вече си работи идеално. Явно това е някакъв бъг за този процесор.
|
| Чет Май 01, 2008 7:19 pm |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
 Re: Проблема е решен
 |  |  |  | dan написа: Това го пиша за ползата на тези, които някога биха се сблъскали с подобен проблем. Поиграх си малко и забелязах, че когато сложа реда в коментар, другото разрешено прекъсване се обработва. А когато махна коментара, въобще не се стига до функцията за обработка на прекъсванията. Това, което ми оправи проблема беше, че вместо всяко прекъсване да го разрешавам със сетване на съответния бит по отделно, целия INTCON го записвам на веднъж. Ето така: вместо Изполвам: Програмката вече си работи идеално. Явно това е някакъв бъг за този процесор. |  |  |  |  |
Защо реши че е бъг?
Не си ли се замислял че може да прекъсне докато го обработваш прекъсването ?
_________________ Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !
|
| Пет Май 02, 2008 12:44 am |
|
 |
|
dan
Ранг: Форумен бог
Регистриран на: Вто Май 29, 2007 2:23 pm Мнения: 3714 Местоположение: Високо в планината
|
Ами просто започнах последователно да сетвам един пин на различни места в програмата. И така след няколко опита просто видях, че процесора не продължава нататък след тези команди:
|
| Пет Май 02, 2008 2:57 pm |
|
 |
|
Gogo
Ранг: Форумен бог
Регистриран на: Чет Фев 24, 2005 11:41 pm Мнения: 1049 Местоположение: Pz
|
Ами просто помисли по написаното от plameniv. С какъвто и да е контролер, по твоя начин все може да го има тоя "бъг".
Освен това, ако този откъс от подпрограмата за обработка на прекъсванията не е откъс, то май "Програмката вече си работи идеално" на магия...
|
| Пет Май 02, 2008 5:43 pm |
|
|
|
Страница 1 от 1
|
[ 5 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 1 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|