Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: I2C
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
bus16
Вопрос к тем, кто "собаку съел" с I2C.
Кристалл LPC2148. Работаю с EEPROM типа 24xx256. Обмен на 400 кБит/сек. Так вот: при интенсивном обмене с устройством изредка возникают прерывания с состоянием I2C0STAT = 0xF8 (т.е. признака прерывания нет, а прерывание от модуля пришло). Обработчик прерывания - вылизан предельно, всё в соответствии с мануалами на оба устройства. Где может быть проблема, на что обратить внимание?
zltigo
Цитата(Niko1a$ @ Jul 11 2007, 08:35) *
Где может быть проблема, на что обратить внимание?

А дальнейшие последствия какие? На какой фазе сие случается?
Работаю в аналогичных условиях, но все неизвестные состояния просто молча игнорируются
(просто и не пробовал фиксировать факт непонятных сосстояний) в обработчике.
Абсолютно никаких проблем с конечным результатом не наблюдается вообще.
bus16
Цитата
А дальнейшие последствия какие? На какой фазе сие случается?

В том-то и дело, что последствий нет smile.gif Всё пучком!
Но, вопрос: почему такое происходит. Кстати, столкнулся с такой-же проблемой при прерывании от INTа и UART- признака нет, прерывание пришло... wacko.gif
zltigo
Цитата(Niko1a$ @ Jul 11 2007, 11:53) *
В том-то и дело, что последствий нет smile.gif Всё пучком!

Могу, конечно у себя поставить фиксацию фактов странных сосстояний при случае.
Цитата
Кстати, столкнулся с такой-же проблемой при прерывании от INTа и UART- признака нет, прерывание пришло... wacko.gif

C UART у меня аналогично - 'странные' молча игнорируются.
Сейчас как раз вожусь с большми потокам от UART, впихнул интереса ради фиксацию такого факта в виде 'beep'. Полет нормальный, проблем нет.
singlskv
Цитата(Niko1a$ @ Jul 11 2007, 09:35) *
Вопрос к тем, кто "собаку съел" с I2C.
Кристалл LPC2148. Работаю с EEPROM типа 24xx256. Обмен на 400 кБит/сек. Так вот: при интенсивном обмене с устройством изредка возникают прерывания с состоянием I2C0STAT = 0xF8 (т.е. признака прерывания нет, а прерывание от модуля пришло). Обработчик прерывания - вылизан предельно, всё в соответствии с мануалами на оба устройства. Где может быть проблема, на что обратить внимание?

0xF8 это переходное состояние внутреннего автомата i2c которое может возникать
между любыми другими состояниями, правда прерывание оно вызывать не должно.
Может быть помехи ?
bus16
Цитата
Может быть помехи ?

Вряд-ли, проводников 4 см вместе с питанием.
У меня серьёзные подозрения о правильности работы системы прерываний у данной линейки контроллеров: при использованиии нескольких источников прерываний (в моём случае их 7) начинают возникать "несуществующие" состояния. Если источников 2-3 - таких вещей не наблюдается. Но опять повторюсь, что на конечный результат эти состояния не влияют.
zltigo
Цитата(Niko1a$ @ Jul 12 2007, 07:48) *
Если источников 2-3 - таких вещей не наблюдается.

Вчера весь день плотно копался с железкой со следующими прерываниями:
Все 4 внешних - 2ms тактировка системы, прерывание от нагруженного Entherhet, прерывание от 64Kbit интерфейса и от Slave висящего на SPI. Внутренние - UART(115K и прием и передача на прерываниях), RTC(ежесекундные) и ADC (пачками по 256-512 раз в несколько десятков секунд), I2C( в этом случае используется изредка - EEPROM только для конфигурации висит), FIQ от SPI. Итого - 9. Слежение за ложными на UART висит и.... не обнаружено.
Swed
Есть маленькое подозрения, что это помехи.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.