реклама на сайте
подробности

 
 
> AT90USB1287 не отрабатывает внешние прерывания, В чем дело?
alux
сообщение Aug 4 2008, 03:41
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Отлаженый проект переношу с MEGA324P на AT90USB1287. После соответствующей коррекции программы перестало отрабатывать нажатия на матричной клавиатуре 4х4. Изменилась схема подключения клавиатуры: раньше COL и RAW подключались к двум разным портам. Теперь занимают один PORTF. И, так как у AT90USB1287 только PORTB имеет PCINT (зачем было так ограничивать функциональность МК ?!!), то выводы RAW через диоды анодами подключены к выводу внешнего прерывания INT6 (PORTE6). Прерывания настраиваю как обычно:
Код
int main()
{
  // Initialise
  ACSR = (1<<ACD);  // Analog Comparator Disable
  .................
  PORTE = (1<<KEY_INT);  // INT6 -> input, pull-up - ON

  key_Init();
__enable_interrupt();    // set the Global Interrupt Enable Bit
.....................................
///////////////////////////////////////////

#define ENABLE_INT6   {EIFR |= (1<<INTF6); EIMSK |= (1<<INT6);}// Clear interrupt status flag, Enable external interrupt INT6
#define DISABLE_INT6  EIMSK &= ~(1<<INT6)    // Disable external interrupt INT6

void key_Init(void)
{
  /* Init ports */  
  KEYMATRIX_DDR = 0x0f;            // Set row lines to input, Set column lines to output  
  KEYMATRIX_PORT = 0xf0;    // Pull row lines high, Drive all column lines low  
    
  /* Enable external interrupt */
  ENABLE_INT6;            // Enable pin change interrupt INT6
}

Выяснилось, что не вызывается обработчик прерывания INT6. Проверяю по звуковому сигналу BEEP.
В симуляторе в AVRSTUDIO тоже прогнал - не вызываются прерывания: ни по низкому уровню, ни по фронтам (заднему и переднему). АЦП (PORTF) не использую. В чем дело?

PS. Схему и код выкладываю, чтобы не возникало лишних вопросов.
Прикрепленные файлы
Прикрепленный файл  shema1.pdf ( 103.82 килобайт ) Кол-во скачиваний: 304
Прикрепленный файл  shema2.pdf ( 77.4 килобайт ) Кол-во скачиваний: 225
Прикрепленный файл  keymatrix.rar ( 1.31 килобайт ) Кол-во скачиваний: 44
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
fmdost
сообщение Aug 7 2008, 00:44
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



По уровню? То-есть если на порту INTx = 0, то застрянет в прерывании? Так и надо? (Код не смотрел).
Поставте по переходу в 0.
Go to the top of the page
 
+Quote Post
alux
сообщение Aug 7 2008, 05:00
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Цитата(Т.Достоевский @ Aug 7 2008, 03:44) *
если на порту INTx = 0, то застрянет в прерывании
Я уже говорил, что пробовал разные варианты (по фронту, спаду, по уровню). Не в этом дело. Читайте внимательно посты.

Цитата(SysRq @ Aug 7 2008, 02:20) *
Хм. Поставил под VirtualBox'ом на XPFundamentals себе IAR (30 дней триал) посмотреть что за зверь и за что его все любят smile.gif , собрал такой код:
.............
При отладке в AVRStudio прерывание работает правильно! В опциях проекта ничего не менял, кроме установки --cpu=usb1287.
Сделал то же самое (этот же пример кода, IAR v.5.11B, ubrof8) - не работает!!! Кто то из нас двоих не прав!
Go to the top of the page
 
+Quote Post
SysRq
сообщение Aug 7 2008, 05:53
Сообщение #4


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Цитата(alux @ Aug 7 2008, 09:00) *
Сделал то же самое (этот же пример кода, IAR v.5.11B, ubrof8) - не работает!!! Кто то из нас двоих не прав!



Проект: http://stream.ifolder.ru/7620130

*тут смайл, который руками разводит*
Go to the top of the page
 
+Quote Post
alux
сообщение Aug 7 2008, 09:01
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Проверить проект смогу вечером. Пока могу предположить две версии:
1) различия триальной и "вылеченной" версии IAR; (маловероятно)
2) вспомнил, что я раскомментировал определения PE0...PE7 в файле iousb1287.h; (более вероятно)
Это вызывало конфликт имени с PE1 (USART1). Я исправил PE1 на UPE1. Но, возможно, это еще на что-то повлияло. Надо проверить.
Go to the top of the page
 
+Quote Post
sKWO
сообщение Aug 7 2008, 10:12
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



Цитата(alux @ Aug 7 2008, 12:01) *
Проверить проект смогу вечером. Пока могу предположить две версии:
1) различия триальной и "вылеченной" версии IAR; (маловероятно)

не моловероятно, а исключено.
вылеч версия 4.21А нормально компилит и всё работает на ура.
Проджект прикрепляю.

Цитата(SysRq @ Aug 7 2008, 02:20) *
[code]
#define INT6 6 // почему-то пришлось задать вручную; видимо, с IAR с разбегу не разобрался
#define INTF6 6 // почему-то пришлось задать вручную; видимо, с IAR с разбегу не разобрался

SysRq, это всё решается настройками прожекта
Project\Options, на закладке General Options находим System, и здесь ставим галочку
напротив Enable bit definitions in I\O-include file.
Прикрепленные файлы
Прикрепленный файл  1287.rar ( 13.29 килобайт ) Кол-во скачиваний: 28
 


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post
alux
сообщение Aug 7 2008, 10:16
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Цитата(sKWO @ Aug 7 2008, 13:12) *
не моловероятно, а исключено.
вылеч версия 4.21А нормально компилит и всё работает на ура.
Остается версия номер 2.

PS. Если не трудно, проверьте эту версию у себя. Т.е. в файле iousb1287.h раскомментировать определения для PE0...PE7 и изменить PE1 на UPE1.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- alux   AT90USB1287 не отрабатывает внешние прерывания   Aug 4 2008, 03:41
- - alux   Глас вопиющего в пустыне... У меня проект останови...   Aug 5 2008, 03:17
- - SysRq   Фьюз JTAGEN проверьте. Если включен JTAG (можно и ...   Aug 5 2008, 09:48
|- - alux   Цитата(SysRq @ Aug 5 2008, 12:48) Фьюз JT...   Aug 5 2008, 10:47
- - GDI   Проверьте в симуляторе какие значения в регистры п...   Aug 5 2008, 10:59
- - alux   По-умолчанию, при разрешении соответствующего внеш...   Aug 5 2008, 12:34
- - GDI   В вшем коде не видно настройки DDRE, надеюсь на вх...   Aug 5 2008, 12:44
|- - alux   Цитата(GDI @ Aug 5 2008, 15:44) В вшем ко...   Aug 5 2008, 13:40
- - GDI   Цитатау этого камня не правильно пронумерованы век...   Aug 5 2008, 13:47
- - sKWO   alux, прочитайте ответ Александра Редчука на телес...   Aug 5 2008, 14:47
|- - alux   Цитата(sKWO @ Aug 5 2008, 17:47) прочитай...   Aug 5 2008, 15:42
|- - sKWO   Цитата(alux @ Aug 5 2008, 18:42) Этот пос...   Aug 6 2008, 15:02
- - SysRq   А можно понтересоваться (в целях повышения образов...   Aug 6 2008, 14:38
|- - alux   Цитата(SysRq @ Aug 6 2008, 17:38) у вас О...   Aug 6 2008, 15:43
|- - SysRq   Цитата(alux @ Aug 6 2008, 19:43) Получает...   Aug 6 2008, 23:20
- - SysRq   Цитата(alux @ Aug 7 2008, 14:16) ...раско...   Aug 7 2008, 14:08
|- - alux   Цитата(SysRq @ Aug 7 2008, 17:08) На этом...   Aug 7 2008, 15:25
- - SysRq   А в железе?   Aug 7 2008, 18:17
|- - alux   Цитата(SysRq @ Aug 7 2008, 21:17) А в жел...   Aug 7 2008, 19:25
- - alux   Обработчик внешнего прерывания не вызывается из-за...   Aug 8 2008, 18:58
- - alux   Снова проблема с внешним прерыванием. На этот раз ...   Sep 4 2008, 15:38
|- - ReAl   Цитата(alux @ Sep 4 2008, 18:38) Кодint m...   Sep 5 2008, 07:33
|- - alux   Цитата(ReAl @ Sep 5 2008, 10:33) не реком...   Sep 5 2008, 09:12
|- - ReAl   Цитата(alux @ Sep 5 2008, 12:12) Потребно...   Sep 6 2008, 12:53
- - SasaVitebsk   Надеюсь вы учли, что просыпаться только Only ...   Sep 4 2008, 18:55
|- - alux   Цитата(SasaVitebsk @ Sep 4 2008, 21:55) Н...   Sep 5 2008, 06:12
- - alux   Второй раз наступаю на одни и те же грабли: Кодvo...   Sep 6 2008, 08:33


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 23:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.07064 секунд с 7
ELECTRONIX ©2004-2016