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

 
 
 
Reply to this topicStart new topic
> I2C в LPC2378
Caesium
сообщение May 26 2011, 04:38
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 27-04-11
Пользователь №: 64 647



Имеем LPC2378 на отладочной плате. Взяли примеры реализации I2C из книги Мартина Тревора. По команде "старт" (I20CONSET = 0x20;) не попадаем в обработчик прерывания. В чем может быть проблема?

Прикрепленный файл  I2C_2378.rar ( 1.84 килобайт ) Кол-во скачиваний: 84
Go to the top of the page
 
+Quote Post
yashok
сообщение May 26 2011, 05:24
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 31-08-10
Из: Минск-Витебск
Пользователь №: 59 203



Вы компилируете со смещением адресов и прошивку в ram заливаете??
Если не, то это лишнее
Код
MEMMAP = 0x02;
Go to the top of the page
 
+Quote Post
Caesium
сообщение May 26 2011, 05:32
Сообщение #3





Группа: Новичок
Сообщений: 9
Регистрация: 27-04-11
Пользователь №: 64 647



Убрал, ситуация та же самая. После установки старта, прерывания не возникает.
Стартап стандартный предложенный keil'ом для данного мк.
Go to the top of the page
 
+Quote Post
yashok
сообщение May 26 2011, 06:13
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 31-08-10
Из: Минск-Витебск
Пользователь №: 59 203



Код
I20CONCLR = 0x000000FF;

Может лучше придерживаться советов из мануала и очистить только нужные биты
Код
I2CONCLR= 0x6С;


Сообщение отредактировал yashok - May 26 2011, 06:14
Go to the top of the page
 
+Quote Post
Nixon
сообщение May 26 2011, 06:23
Сообщение #5


Гуру
******

Группа: Админы
Сообщений: 2 736
Регистрация: 17-06-04
Из: Киев
Пользователь №: 48



Посмотрите в визарде стартапа разрешена ли I2C. Или сразу лучше ручками ее разрешите (смотреть PCON и PCLKSELx заодно).


--------------------
Вам помочь или не мешать?
Go to the top of the page
 
+Quote Post
Caesium
сообщение May 26 2011, 06:52
Сообщение #6





Группа: Новичок
Сообщений: 9
Регистрация: 27-04-11
Пользователь №: 64 647



Цитата(yashok @ May 26 2011, 10:13) *
Код
I20CONCLR = 0x000000FF;

Может лучше придерживаться советов из мануала и очистить только нужные биты
Код
I2CONCLR= 0x6С;


Спасибо за совет.

Цитата(Nixon @ May 26 2011, 10:23) *
Посмотрите в визарде стартапа разрешена ли I2C. Или сразу лучше ручками ее разрешите (смотреть PCON и PCLKSELx заодно).

Configuration wizard:
стоит галочка напротив
PCI2C0: I2C interface 0 power/clock enable
Go to the top of the page
 
+Quote Post
Caesium
сообщение May 30 2011, 10:45
Сообщение #7





Группа: Новичок
Сообщений: 9
Регистрация: 27-04-11
Пользователь №: 64 647



Если установить вручную I20CONSET = 0x8; сразу после команды старт, то прерывание возникает. В статусном регистре при этом находится 0xC8. Может я неправильно задаю IRQ прерывание? Аналогичный код превосходно работает на LPC2138
Go to the top of the page
 
+Quote Post
yashok
сообщение May 30 2011, 11:58
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 31-08-10
Из: Минск-Витебск
Пользователь №: 59 203



Цитата
Может я неправильно задаю IRQ прерывание? Аналогичный код превосходно работает на LPC2138


VIC у lpc21xx и lpc23xx отличается.

Для 23-х необходимо

Код
VICIntSelect &= ~(1 << 9);  
VICVectAddr9  = (uint32_t)&I2CISR;
VICVectPriority9  = 13;
VICIntEnable  |= (1 << 9);
Go to the top of the page
 
+Quote Post
Caesium
сообщение May 30 2011, 12:46
Сообщение #9





Группа: Новичок
Сообщений: 9
Регистрация: 27-04-11
Пользователь №: 64 647



Цитата(yashok @ May 30 2011, 15:58) *
VIC у lpc21xx и lpc23xx отличается.

Для 23-х необходимо

Код
VICIntSelect &= ~(1 << 9);  
VICVectAddr9  = (uint32_t)&I2CISR;
VICVectPriority9  = 13;
VICIntEnable  |= (1 << 9);

Внес изменения. Адрес обработчика прерывания заносится, приоритет выставляется (=13), IntEnable = 1. Но результат тот же. Выполнение программы зависает в while(lock == 1){}. в I2CISR никогда не попадаем.
Go to the top of the page
 
+Quote Post
yashok
сообщение May 30 2011, 13:57
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 31-08-10
Из: Минск-Витебск
Пользователь №: 59 203



А линии к питанию подтянуть не забыли??
Go to the top of the page
 
+Quote Post
Caesium
сообщение May 31 2011, 04:49
Сообщение #11





Группа: Новичок
Сообщений: 9
Регистрация: 27-04-11
Пользователь №: 64 647



Цитата(yashok @ May 30 2011, 17:57) *
А линии к питанию подтянуть не забыли??

Да, забыли. Спасибо большое за помощь, проблема решилась.
Go to the top of the page
 
+Quote Post
Nixon
сообщение May 31 2011, 06:15
Сообщение #12


Гуру
******

Группа: Админы
Сообщений: 2 736
Регистрация: 17-06-04
Из: Киев
Пользователь №: 48



sm.gif sm.gif sm.gif Думал поначалу спросить, но боялся обидеть вопросом


--------------------
Вам помочь или не мешать?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 09:52
Рейтинг@Mail.ru


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