|
Порты ввода/вывода в MSP430 |
|
|
|
Feb 7 2007, 22:50
|
иногда заглядывающий
   
Группа: Свой
Сообщений: 900
Регистрация: 18-05-05
Из: Зеленоград
Пользователь №: 5 170

|
Цитата(Сергей Борщ @ Feb 7 2007, 12:34)  Цитата(Shread @ Feb 6 2007, 23:30)  Ну вот это как раз не проблема, выкинуть MCLK на ножку проца и делать посылки с достаточно большим интервалом, даже на аналоговом осцилле будет все прекрасно видно.
Хорошо, тогда вопрос вам: как вы определите с какого именно из импульсов MCLK на этой ноге началось выполнение команды?  Честно сказать, я думал вы несколько о другом говорили, подразумевая синхронизацию скопа. Но коли так: можно попробовать синхриться по внешнему прерыванию. При этом нужно загасить WDT и оставить пустым основной цикл. И все посылки делать из прерывания.+Шаманство.
|
|
|
|
|
Feb 8 2007, 01:48
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Shread @ Feb 7 2007, 21:50)  Честно сказать, я думал вы несколько о другом говорили, подразумевая синхронизацию скопа. Но коли так: можно попробовать синхриться по внешнему прерыванию. При этом нужно загасить WDT и оставить пустым основной цикл. И все посылки делать из прерывания.+Шаманство. Вот именно! Нужно внешнее событие (ведь от чего-то автор вопроса хотел синхронизировать два процессора) и некое время от реакции на это событие до выполнения следующей команды. Время это будет в общем случае недетерменированным, ибо процессор должен закончить выполнение текущей команды, а это от 0 до 5 тактов задержки. И даже если будет 100% известно "какой командой процессора черт ест колобка в pacman-е" (на каком такте дергается выходная нога) - это ровным счетом ничего не даст. Если надо дергать ногой с точностью до 1 тика тактовой частоты - надо использовать таймер тактированный этой частотй и его режимы захвата и сравнения. Только так можно будет поручиться за временные диаграммы и это будет сделано простым, наглядным и естественным способом. Критикуйте. Сам себя покритикую - возможно добиться одинакового времени реакции на внешенее событие, но для этого процессор должен ждать этого события в режиме спячки с работающим тактовым генератором - время просыпания в этом случае регламентировано. Если следующей командой дергать ногой, то осциллограф поможет определить сколько тиков между этими событиями. Это число будет константой и может быть учтено в программе. Но кривовато это как-то.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Feb 8 2007, 06:52
|
Группа: Новичок
Сообщений: 7
Регистрация: 4-02-07
Пользователь №: 25 044

|
Цитата(rezident @ Feb 7 2007, 18:52)  Цитата(HARMHARM @ Feb 7 2007, 14:46)  У меня настойчиво просится наружу мысль: вроде где-то читал что реальное изменение состояния на выходе при записи в PxOUT происходит на последнем переднем фронте MCLK команды. Искал - не нашел где вычитал  Ну вообще это вроде как логически вытекает. Последовательность такая: выборка кода команды (1МЦ), выборка операндов (1-2МЦ), действие над операндами (1МЦ), запись результата действия (1МЦ). Поскольку запись последняя в этой цепочке, то и на выходе пина сигнал появится на последнем МЦ выполнения всей команды. А выборка кода команды происходит разве не в процессе выполнения предыдущей команды (или я путаю с AVR, поправте пож если не прав)? Как раз эта последовательность меня и интересует, она, мне кажется, должна быть где-то описана,...но где???
|
|
|
|
|
Feb 9 2007, 01:03
|
иногда заглядывающий
   
Группа: Свой
Сообщений: 900
Регистрация: 18-05-05
Из: Зеленоград
Пользователь №: 5 170

|
Цитата(Сергей Борщ @ Feb 8 2007, 01:48)  Сам себя покритикую - возможно добиться одинакового времени реакции на внешенее событие, но для этого процессор должен ждать этого события в режиме спячки с работающим тактовым генератором - время просыпания в этом случае регламентировано. Если следующей командой дергать ногой, то осциллограф поможет определить сколько тиков между этими событиями. Это число будет константой и может быть учтено в программе. Но кривовато это как-то. Ну вообщем согласен. Есть правда еще один способ, но он требует валидацию после каждой компиляции: подбор на живом железе. Т.е знаешь какую последовательность надо получить и получаешь. Применять можно только в том случае, если последовательности всегда одинаковые. Это сродни использованию в ПЛИС в качестве задержек луты-иногда работает, но на 100 процентов поручиться за результат низя. Автору поста могу порекомендовать обратиться с этим вопросом в техническую поддержку. Если самому не хватает знаний английского для общения с EPIC, можно потормошить Компел, они обычно охотно тормошатся  Вообщем вопрос вполне резонный, и думаю решаемый.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|