|
|
  |
Необьяснимая проблема с прерываниями, INT0:) |
|
|
|
Jun 28 2007, 15:19
|
Участник

Группа: Новичок
Сообщений: 25
Регистрация: 24-06-07
Пользователь №: 28 661

|
Здравствуйте ребята тут такой прикол у меня вышел. В проге поставел прерывание по ниспадаещому фронту на INT0 и falling edge на INT2 так вот на INT2 при падении напряжения прерывание генерируется, а на INT0 нет. Не пойму почему?  . Мерял вольтметром то на этой ножке напряжения падает с 4.22В на 0.01В, а функция по обработке прерывани не вызивается почему-то?
|
|
|
|
|
Jun 28 2007, 15:55
|
Участник

Группа: Свой
Сообщений: 71
Регистрация: 7-07-06
Из: Новосибирск
Пользователь №: 18 652

|
хотя бы кусок кода привел...
|
|
|
|
|
Jun 29 2007, 13:46
|
Участник

Группа: Новичок
Сообщений: 25
Регистрация: 24-06-07
Пользователь №: 28 661

|
Ребята, написал маленькую тест программу, вот код Код #include <mega16.h> #include <delay.h> //--------------------------------------------------------------------------------- void main(void) { DDRD=0x00; DDRC=0xFF; PORTC.6=1; PORTC.7=1; while(1) { if(PIND.2==0) { delay_ms(25); if(PIND.2==0) { PORTC.6=0; } } if(PIND.3==0) { delay_ms(25); if(PIND.3==0) { PORTC.7=0; } } } } Так вот эта прога делает лишь одно провиряет состояния PIND.2 и PIND.3 и эсли условия истиное то загорпются светодиоды на PORTC.7 и PORTC.6, но тут такой прикол. Прошил мк, ни на какую кнопку не нажимал, а диод загорается и всё время на PORTC.7. Это чё значит ножка МК не работает или что, напряжения 4 В. Прокоментируйте пожалуйста
|
|
|
|
|
Jun 29 2007, 14:03
|
Участник

Группа: Свой
Сообщений: 71
Регистрация: 7-07-06
Из: Новосибирск
Пользователь №: 18 652

|
а что за компилятор? Листинг смотрел - там все нормально? Питание, клок, фузы проверил?
|
|
|
|
|
Jun 29 2007, 14:55
|
Участник

Группа: Новичок
Сообщений: 25
Регистрация: 24-06-07
Пользователь №: 28 661

|
Не пищит. Всё в протеусе!
Прикрепленные файлы
Ss.rar ( 29.66 килобайт )
Кол-во скачиваний: 71
|
|
|
|
|
Jun 29 2007, 15:47
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(Midas @ Jun 29 2007, 12:46)  Так вот эта прога делает лишь одно проверяет состояния PIND.2 и PIND.3 и если условие истиное то загораются светодиоды на PORTC.7 и PORTC.6, но тут такой прикол. Прошил мк, ни на какую кнопку не нажимал, а диод загорается и всё время на PORTC.7. Это чё значит ножка МК не работает или что, напряжения 4 В. Прокоментируйте пожалуйста Получается разовое включение. Попробуйте так, чтобы видеть изменение состояния кнопок: Код { DDRD=0x00; DDRC=0xFF; PORTC.6=1; PORTC.7=1; while(1) { if(PIND.2==0) PORTC.6=0; else PORTC.6=1;
if(PIND.3==0) PORTC.7=0; else PORTC.7=1; } }
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Jun 29 2007, 17:59
|
Участник

Группа: Новичок
Сообщений: 38
Регистрация: 30-09-05
Пользователь №: 9 098

|
Попробуй скомпилировать в urboff формат и отладить в AVRStudio. Вообще в симуляторе Протеус может работать, а в реальном железе - нет по многим причинам - ошибки в монтаже например. Еще в микроконтроллере есть WATCHDOG, он может ресетить процессор, на время отладки его нужно отключать.
|
|
|
|
|
Jun 29 2007, 18:09
|
Участник

Группа: Новичок
Сообщений: 25
Регистрация: 24-06-07
Пользователь №: 28 661

|
Нет я конечно понимаю, всё может быть но одно мне недоходит почему на INT2 прерывание идет, смысли срабатывает, а на INT1 и INT0 НЕТ  Может ли повлиять тот факт что длинна от замыкателя(кнопки) больше 5 метров, хотя я возле ноги вольтметром мерал, то напряжения там нормально почти как от батареек и падает нормально. Чёрт его знает, вот самая большая досада, что INT2 работает, а остальные нет. А каие могут быть ошибки монтажа? Может ли так глючить из-зи малого питания-3.75В, хотя с другой стороны INT2 срабатывает всё таки. Я ещё в даташите чего-то не догнал, мол что INT2- это какоето асинхронное прерывание, это как?
Сообщение отредактировал Midas - Jun 29 2007, 18:10
|
|
|
|
|
Jun 29 2007, 18:36
|

Гуру
     
Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591

|
Цитата(Midas @ Jun 29 2007, 22:09)  Может ли повлиять тот факт что длинна от замыкателя(кнопки) больше 5 метров, хотя я возле ноги вольтметром мерал, то напряжения там нормально почти как от батареек Все может повлиять, Вы бы потрудились и нарисовали полную схему, Протеусом большинство не пользуется.Есть ли керамический конд . по питанию? А Вам эти 5м жизнено необходимы ? Добейтесь, сначала, устойчивой работы на 5см . Асинхронное это значит процессор узнает о нем не в момент прихода такт импульса, а значит , наверно,оно может случиться от импульса меньше длительности клока. И еще, может Вам лучше настроить INT0 на прерывание по "0"?
|
|
|
|
|
Jun 29 2007, 19:59
|
Знающий
   
Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984

|
Аяяй! Ну народ Вы даете  Давно избитую проблему не знаете. 1 В протеусе PC7 не пашет под мегу16 2 В реале тоже не пашет ,нужно отключить фуз JTAGEN.
|
|
|
|
|
Jun 29 2007, 21:27
|
Участник

Группа: Новичок
Сообщений: 25
Регистрация: 24-06-07
Пользователь №: 28 661

|
Почему не пашет  ? У меня протеус 7.1 и всё пашет! Тут проблема в другом... Ребята, большое вам спасибо, за то что терпели и отвечали на мои ламерские вопросы Ошибку Я нашёл в монтаже платы  , по просьбе muravei я начал рисовать схему и тут я понял что INT0 INT1 находятся на много далее от INT2, чем у меня на плате и тут я понял, что перепутал верх и низ контроллера  ! Вот такой я дурак, быстро всё перепаял и вуалля... ВСЁ работает  Ребята ещё раз извините за такое дурацкое недоглядение, я уже себе пообещал, что больше такого не повторится!
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|