Перейти к содержанию
    

Спасибо что откликнулись.

да не за что

именно про это я Вам и говорил - у меня было то же самое при пошаговом бит снимался , а при последовательном - просто не успевает сняться . и2ц штука циклическая - так что если вы перед этин

новым стартом "принимали " а потом решили завершить прием и принять заново , то в пмомент завершения вам придет событие (тот самый бит номер 6 ) что регистр не пуст , это вызвано тем что регистр приема передачи лежит над сдвиговым регистром и является как бы однобайтовым фифо буффером , дающим вам отставание (или опережение, это как посмотреть ) на один байт... выход проигнорируйте этот бит .

 

если Вам лень делать по человечески (или пока лень) напишите так

#define I2C_EVENT_MASTER_MODE_SELECT ((u32)0x00030001) /* BUSY, MSL and SB flag */

#define I2C_EVENT_MASTER_MODE_SELECT_2 ((u32)0x00030041) /* BUSY, MSL , RxNE and SB flag */

и обработайте оба события

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я сделал несколько по другому, работает нормально, только что все 32 кБ :yeah: побайитно записал и считал

я подпровил:

Flag1 = I2Cx->SR1;

Flag2 = I2Cx->SR2;

Flag2 = Flag2 << 16;

 

/* Get the last event value from I2C status register */

LastEvent = (Flag1 | Flag2) & I2C_EVENT;

 

/* Check whether the last event is equal to I2C_EVENT */

if (LastEvent == I2C_EVENT )

в принципе ето и есть битовая маска, как вы считаете?

или я неправельно сделал?

вам огромный :a14: :a14: :a14:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я сделал несколько по другому, работает нормально, только что все 32 кБ :yeah: побайитно записал и считал

я подпровил:

Flag1 = I2Cx->SR1;

Flag2 = I2Cx->SR2;

Flag2 = Flag2 << 16;

 

/* Get the last event value from I2C status register */

LastEvent = (Flag1 | Flag2) & I2C_EVENT;

 

/* Check whether the last event is equal to I2C_EVENT */

if (LastEvent == I2C_EVENT )

в принципе ето и есть битовая маска, как вы считаете?

или я неправельно сделал?

то есть вы проверяете , присутствует ли искомое событие в пришедшем статусе?

Это полукорректный метод , более корректный чем плодить псевдоодинаковые статусы , но менее корректный чем обработать все биты "выбирая" их по одному или по группам , то есть бит RxNe то же надо отработать в зависимости от того "в каком положении" мы сейчас находимся. то есть в данном случае , если пришел байт , а мы ждали конца, то в принципе все корректно , а вот если произошла или ошибка , или непреднамеренный конец в дополнении к ожидаемому нами событию , то его нельзя игнорировать, иначе встанем в неприличную позу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

OpenOCD вообще не умеет работать через SWD :(, покрайней мере пока. Я тоже использую режим JTAG.

 

А прошивку прилагаю, может понадобится что бы IAR определил устройство как LM FTDI

 

Подскажите где взять схему под эту прошивку ? Спасибо !

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите где взять схему под эту прошивку ? Спасибо !

Да стандартное подключение FT2232C в качестве JTAG TCK/TDI/TDO/TMS на своих местах и еще систем ресет nSRST на ADBUS5

 

что бы схему посмотреть надо документацию на eval board скачать (например Stellaris LM3S6965 Evaluation Board) только там еще PLD стоит, но он нужен только для SWD и переключения/отключения дебагера на внешний разъем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А прошивку то во что заливать ? на в CPLD разве ?

прошивка заливается стндартной FTDIной программой к еепром подключенной к FTDI (штатным способом) нужна исключительно для настройки параметров FT2232 ( имя VID PID ....)

 

CPLD вообще не нужна ( если использовать JTAG, а SWD IAR не поддерживает, да и для SWD нужен только буфер с OE)

 

К тому же если вы собираетесь использовать OpenOcd еепром вообще не нужен. (кстати IAR поддерживает только cortex-M3 через такое устройство, а OpenOCd и все )

Изменено пользователем KRS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Лучше скажите как умудрится сделать чтобы отладчик все время спотыкался на прерываниях.

Такого никогда не было и в последнем компилере нет.

Для этого в DHCSR есть бит MASKINTS, если его установить в еденицу то прерывания будут замаскированы (причем и при single step и при run в режиме отладки) что не всегда очень хорошо.

IAR когда шагает по исходнику С ( не в дизассемблере) если возможно ставить точки останова ставит их и делает run (так что прерывания должны обходится).

OpenOcd всегда чистит бит MASKINTS ( и это можно исправить при singlestep, а при resume оставить очистку).

Вообще идеально было бы выбирать режим с прерываниями или без...

 

 

а точек останова да, больше: 8 вместо 2 в ARM7

На самом деле не 8, а 6 - компараторов 8, но только 6 могут быть использованы для точек останова.

 

Я уже почти доделал совю реализацию GDB server на FT232/245R (уже совсем без использования openocd, его идеология не очень хорошо ложится на SWD), вообще даже при небольщой частоте SWD (в пределе 500 khz из-за особенностей FTDI) отладчик просто леатет ( скорость достигается за счет очереди и послыки сразу большого количества тарнзакций....) по сравнеию с обычным JTAG через FT2232C, да и пожалуй с Wiggler и некоторыми другими ( single step просто мгновенно отрабатывает)

Но еще много работы, брекпоинты еще не реализованы....

 

Одно неприятно, ни в RDI ни в GDBServer не понятно как передавать системные регистры (которых нет в предыдущих версиях архитектур ARM)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день. Ответьте пожалуйста, данный чип работает с Wigler'ом. Или нужен обязательно J-LINK?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день. Ответьте пожалуйста, данный чип работает с Wigler'ом. Или нужен обязательно J-LINK?

у него есть JTAG порт, следовательно с Wiggler ом работает, тут главное поддержка софта. H-JTAG не умеет работать с Coretx-M3 :( . Есть поддержка у OpenOcd ( он умеет работать и с Wiggler и с Cortex-M3) и его можно прикрутить к IAR 5.11 ( с некоторыми ньюансами в частности ( указатель стека R13 и LR не отображаются... но их можно смотреть через telnet).

Тут выше я описывал как подключить OpenOcd к IAR ( для FT2232 правда, но такой же путь и для Wiggler).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага, понятно. Но ведь есть CrossWorks, который умеет работать с виглером. Или я не прав?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага, понятно. Но ведь есть CrossWorks, который умеет работать с виглером. Или я не прав?

Да у кроссвокса свой драйвер виглера и он прекрасно и быстро работал ( я просто когда я его пробовал о кортексах никто и не слышал ничего), так что сейчас если кроссвокс умеет работать с кортексами это может быть хороший вариант!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А есть ли возможность во время работы контроллера сохранять во флеш память без торможения основной программы (наподобие памяти EEPROM у AVR)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А есть ли возможность во время работы контроллера сохранять во флеш память без торможения основной программы (наподобие памяти EEPROM у AVR)?

Можно, только гемора много... Надо все что может испольняться пока флеш пишется ( в частности перывания) располагать в ОЗУ. У STR два флеша и даже appnote есть как иммитировать eeprom, а вот у STM только один.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А подскажите, мэтры Кортекса, применимость его в таком случае: имею микросхему с параллельным 5В интерфейсом (уровень "1" 3.5В), 8бит адрес/данные, 3 адрес, ALE-RD-WR-INT. Крутил и так и этак (корпус 48), не получается красиво. На двух портах только старшие байты 5В-толерантные, дальше побитно дергать надо. Без софтовых обработок адреса не получится. А жаль: хотелось попробовать новую платформу, но некрасиво не хочется делать.

 

ЗЫ: И как у них с доступностью на Украине?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...