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

Программирование МК С167 фирмы Infineon

В CAN-контроллере C167 в регистре контроля-состояния CSR

есть бит TXOK, который устанавливается если последняя передача сообщения была успешна завершена. При его изменении изменится значение INTID

в регистре PCIR – оно будет равно «01» (т.к. CSR обновил состояние).

В тоже время, в регистре передающего буфера MCR установится бит INTPND (если это разрешено установкой бита TXIE). Например, если передающий буфер имеет номер 3, то возникает прерывание и бит INTID регистра PCIR будет

иметь значение (2 + 3) = «05».

Понятно, что прерывание с INTID = «01» имеет больший приоритет и обработается первым, но что будет с прерыванием от передающего буфера ?

Будет ли оно «поставлено в очередь» или будет потеряно ?

 

Если у вас возник встречный вопрос - о чём здесь идёт речь,

то почитайте сперва файл CAN167.zip, который присоединен к третьему сообщению данной темы.

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


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

Чтобы не забыть, может пригодится...

Keil Crack работает с Keil c166v602 -> www.megaupload.com/?d=GJI2CQGG

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


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

Keil Crack работает с Keil c166v602 -> www.megaupload.com/?d=GJI2CQGG

:( что-то ссылочка не работает

Может у кто-нибудь скинет crack для Keil (желательно под c166v606), хотя кидайте любую!

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


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

Тема, конечно, древняя, но я только сейчас столкнулся с проблемой.

 

1) Зачем такая хитрая система в регистре MCRn - установка и сброс двумя битами? И как обойтись без того цикла чтение-модификация-запись, про который упоминается в руководстве? Это XRAM, поэтому побитно туда не обратишься, следовательно и команды BFLDL/BFLDH не работают.

 

2) Как я понимаю - маски работают по принципу сверять идентификатор пришедшего сообщения с полем арбитража в объекте сообщения или нет. Т.е. если маски все в 1, значит жесткое отсеивание - примутся только те сообщения, чьи идентификаторы явно прописаны в приемнике (в поле арбитражей), если маски все нулевые - любое пришедшее собщение запишется в объект первого сообщения. Так это или нет?

 

3) Если в CSR запретить прерывания, будут ли выставляться флаги этих прерываний?

 

4) Обязательно ли пользоваться регистром CSR для отслеживания завершения приема-передачи, или можно ограничиться регистром MCR каждого сообщения, там есть аналогичные биты.

 

5) Если не трудно, опишите последовательность действий при правке сообщения, при постановлении на отправку, при посылке кадра запроса. Желательно в формате "для чайника" по типу:

Записываешь в бит ХХ регистра ХХ значение ХХ - для того-то, того-то

Записываешь........ и т.д.

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


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

, опишите последовательность действий при правке сообщения, при постановлении на отправку, при посылке кадра запроса. Желательно в формате "для чайника"

Скачайте DAVE - он именно это и сделает.

http://www.infineon.com/cms/en/product/mic...1134ee4d3b30265

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


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

Кому надо - ответы на часть моих же вопросов.

 

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

 

Глобальным регистром и прерываниями пользоваться не обязательно, в регистре управления каждым сообщением достаточно информации чтобы понять что произошло:

для принимаемых сообщений - флаг NEWDAT и флаг потерянного пакета MSGLST;

Для отправляемых сообщений - тот же NEWDAT (сбрасывается при успешной передаче) и флаг RMTPND + TXRQ.

Сам я в начеле основного цикла заполняю буфера, передаю данные и посылаю запросы, в конце основного цикла по флагам проверяю что пришло и распаковываю.

 

В регистре MCRn данная организация чтобы можно было одним MOVом сделать три (а не две - как ORом или ANDом) операции над каждым флагом - установить, сбросить, не менять. Зарезарвированные комбинации при чтении ни разу не возникали, при записи игнорируются.

 

Вопрос по маскам остался. Как работают понять не могу. Если в масках все единички - то сообщение записывается в объект, арбитраж которого полностью совпадет с арбитражем сообщения. При наличии в маске 0 начинается полная абракадарбра. В DAVE про это ничего не сказано - заполнение масок и арбитражей он оставил на моё усмотрение. Если кто в курсе - подскажите пожалуйста.

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


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

подскажите, в какой момент происходит считывание данных из внешней памяти (демультиплексная шина), из даташита понял, что по фронту сигнала RD, это верно? интересует вот в каком ключе: если этот сигнал подцепить на CS внешней флехи, будет ли это корректно? не успеет ли она перейти в 3-е состояние до завершения считывания данных?

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


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

Есть несколько вопросов по C167CR.

В блоке управления ДВС (блок на диагностику не выходит) установлен данный процессор, и ЗАДАЧА состоит в проверке работоспособности его.

На сколько я правильно понял, то при помощи программы R16x Flash Programmer я могу соединится с процессором.

Народ, подскажите где возможно скачать программу или пакет ИСР RIDE???

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


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

В блоке управления ДВС (блок на диагностику не выходит) установлен данный процессор, и ЗАДАЧА состоит в проверке работоспособности его.

На сколько я правильно понял, то при помощи программы R16x Flash Programmer я могу соединится с процессором.

Народ, подскажите где возможно скачать программу или пакет ИСР RIDE???

Помню, когда давным-давно занимался C167, прямо на сайте у Infineon была программка Memtool. Сам я ей не пользовался, так как работал с Keil C166, и он делал всё, что мне было нужно.

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


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

Чем можно посмотреть и запрограммировать фьюзы в С167?

работаю с с167. А что такое фьюзы?

 

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


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

Да уж сморозил, я имею ввиду регистры. Пробовал MiniMon читать есть только соединение с проц. Подскажите чем можно посмотреть и записать состояние регистров. Соединение по UART. Пробовал FLASHit - читается и пишется нормально,а посмотреть и записать состояние регистров - не доходит.

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


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

Да уж сморозил, я имею ввиду регистры. Пробовал MiniMon читать есть только соединение с проц. Подскажите чем можно посмотреть и записать состояние регистров. Соединение по UART. Пробовал FLASHit - читается и пишется нормально,а посмотреть и записать состояние регистров - не доходит.

 

Регистры в этом контроллере - всего навсего кусок оперативки. Посмотрите, куда в программе указывет CP и 30 байт вниз от этого адреса - и есть регистры. Если, конечно, в указанных программах есть возможность читать ОЗУ. Мы на работе используем небольшие самописные модули, например перекладка PECCом в S0TBUF.

Т.к. это кусок ОЗУ - запрограммировать его невозможно. Начальные значения копировать в регистры при инициализации в самом коде.

Хотя я на практике сталкивался, что минут пять без питания в ОЗУ остается висеть мусор - так что желательно в инициализации еще и обнулять всю ОЗУ.

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

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


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

Да,есть функция считывания содержания отдельных адресов с указанием с какого и по какой адрес нужно. Спасибо,wedmeed, за подсказку.

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


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

Небольшое уточнение - вниз от CP - т.е. в сторону увеличения адресов (по привычке в голове карта памяти как в дизассемблере). Содержимое CP = адрес R0, прибавляем 2 - R1.

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


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

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

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

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

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

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

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

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

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

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