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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> MSP430. IAR. Симуляция, Как завести частоту на таймер А?
Daisy
сообщение Nov 23 2006, 17:11
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 96
Регистрация: 29-04-05
Из: г. Жуковский
Пользователь №: 4 606



Хочу в msp430F1121
завести внутренний DCO на таймер А ?
Как это в IAR-е осуществить?
Вот такие строчки не помогают
bis.w #TASSEL_2,&TACTL
bis.w #MC_1,&TACTL
где я туплю?
никак у меня TAR в симуляторе инкрементится не хочет.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 23 2006, 17:29
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Daisy @ Nov 23 2006, 17:11) *
никак у меня TAR в симуляторе инкрементится не хочет.

Дык в симуляторе IAR периферия вроде не симулируется.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Daisy
сообщение Nov 23 2006, 18:19
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 96
Регистрация: 29-04-05
Из: г. Жуковский
Пользователь №: 4 606



Цитата(Dog Pawlowa @ Nov 23 2006, 17:29) *
Цитата(Daisy @ Nov 23 2006, 17:11) *

никак у меня TAR в симуляторе инкрементится не хочет.

Дык в симуляторе IAR периферия вроде не симулируется.

Да? Плохо sad.gif
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 23 2006, 18:31
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Можно попробовать через макросы, но я лично не разбирался с ними и не использовал. При нужде в симуляторе ручками вношу требуемые значения в регистры и/или переменные.
Go to the top of the page
 
+Quote Post
dxp
сообщение Nov 24 2006, 08:07
Сообщение #5


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(Daisy @ Nov 23 2006, 20:11) *
Хочу в msp430F1121
завести внутренний DCO на таймер А ?
Как это в IAR-е осуществить?
Вот такие строчки не помогают
bis.w #TASSEL_2,&TACTL
bis.w #MC_1,&TACTL
где я туплю?
никак у меня TAR в симуляторе инкрементится не хочет.

Нужно, чтобы именно инкрементился таймер или нужно прерывание от него? Если первое, то есть вариант найти старый C-SPY, который еще от версий 1.хх, там ТИ специальный драйвер поставлял IAR'у, который позволял симулировать периферию. Работало это достаточно быстро и корректно. Чтобы запусить в том симуляторе программу, нужно при сборке указать линкеру выходной формат ubrof6.

Но на деле все же, как правило, нужен не инкремент таймера, а прерывание от него, чтобы смоделировать событие. Для этого в C-SPY служит система специальных макросов. Тема уже поднималась не раз, посмотрите этот топик и еще этот.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 24 2006, 10:36
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(dxp @ Nov 24 2006, 08:07) *
Но на деле все же, как правило, нужен не инкремент таймера, а прерывание от него, чтобы смоделировать событие. Для этого в C-SPY служит система специальных макросов.

А вот расскажите, с Вашим то опытом...
Симуляция с макросами против отладки на реальном устройстве под JTAG с точками останова?
Я использую второе, в общем то доволен, правда с MSP бывают некоторые неудобства (не всегда работает выполнение по шагам по тексту С, застревает в прерываниях). Мне кажется, что симуляция займет время. Или это даст некоторые преимущества?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 24 2006, 11:07
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Dog Pawlowa @ Nov 24 2006, 12:36) *
Цитата(dxp @ Nov 24 2006, 08:07) *

Но на деле все же, как правило, нужен не инкремент таймера, а прерывание от него, чтобы смоделировать событие. Для этого в C-SPY служит система специальных макросов.

А вот расскажите, с Вашим то опытом...
Симуляция с макросами против отладки на реальном устройстве под JTAG с точками останова?
Я использую второе, в общем то доволен, правда с MSP бывают некоторые неудобства (не всегда работает выполнение по шагам по тексту С, застревает в прерываниях). Мне кажется, что симуляция займет время. Или это даст некоторые преимущества?

Дык симулятор и "железячный" отладчик служат для несколько разных целей. В симуляторе отлаживается непосредственно сам алгоритм(ы) программы, а в железе real-time работа. Попробуйте-ка в real-time обнаружить самую гнусную и трудную для детектирования ошибку - наползание стека на сегмент данных. А в симуляторе это на порядок проще обнаружить.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 24 2006, 11:40
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(rezident @ Nov 24 2006, 11:07) *
Дык симулятор и "железячный" отладчик служат для несколько разных целей. В симуляторе отлаживается непосредственно сам алгоритм(ы) программы, а в железе real-time работа. Попробуйте-ка в real-time обнаружить самую гнусную и трудную для детектирования ошибку - наползание стека на сегмент данных. А в симуляторе это на порядок проще обнаружить.

Ловлю на слове smile.gif
Наползание можно проверить для наихудшего случая - выполнения прерывания (а я еще и использую вложенные) в самом глубоком месте программы. Для прерываний нужны макросы, которые Вы не используете wink.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 24 2006, 13:47
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Dog Pawlowa @ Nov 24 2006, 13:40) *
Цитата(rezident @ Nov 24 2006, 11:07) *

Дык симулятор и "железячный" отладчик служат для несколько разных целей. В симуляторе отлаживается непосредственно сам алгоритм(ы) программы, а в железе real-time работа. Попробуйте-ка в real-time обнаружить самую гнусную и трудную для детектирования ошибку - наползание стека на сегмент данных. А в симуляторе это на порядок проще обнаружить.

Ловлю на слове smile.gif
Наползание можно проверить для наихудшего случая - выполнения прерывания (а я еще и использую вложенные) в самом глубоком месте программы. Для прерываний нужны макросы, которые Вы не используете wink.gif

Ловите. Зачем для этого макросы-то? Прерывания вызываются из окна Forced Interrupt Window. Что, поймали? biggrin.gif
Go to the top of the page
 
+Quote Post
dxp
сообщение Nov 24 2006, 13:55
Сообщение #10


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(Dog Pawlowa @ Nov 24 2006, 14:40) *
Цитата(rezident @ Nov 24 2006, 11:07) *

Дык симулятор и "железячный" отладчик служат для несколько разных целей. В симуляторе отлаживается непосредственно сам алгоритм(ы) программы, а в железе real-time работа. Попробуйте-ка в real-time обнаружить самую гнусную и трудную для детектирования ошибку - наползание стека на сегмент данных. А в симуляторе это на порядок проще обнаружить.

Ловлю на слове smile.gif
Наползание можно проверить для наихудшего случая - выполнения прерывания (а я еще и использую вложенные) в самом глубоком месте программы. Для прерываний нужны макросы, которые Вы не используете wink.gif

Вот как раз для моделирования подобных ситуаций и рулит там система макросов. С ней я могу просто заордерить прерывания так, что они произойдут по цепочке именно на том такте, где программа находится в самом глубоком по потреблению стека вместе - т.е. стек выбран по максимуму и тут - бац! - прерывание, в нем разрешается вложенное - и оно уже готово и т.д. Т.е. могу спокойно посмотреть, сколько реально стека съедается в этом предельном случае. Достаточно только указать такт, в котором надо сгенерить прерывание.

В реальной системе с эмулятором такую ситуацию, порой, и за всю жизнь не отловить. Т.ч. как средство моделироваия С-SPY с его макросами вполне рулит. А другого (не моделирование) полезного применения симуляторам я не знаю. Сам, конечно, чаще использую эмулятор, который для отладки программы подходит бесспорно лучше.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 24 2006, 17:22
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(dxp @ Nov 24 2006, 13:55) *
Цитата(rezident @ Nov 24 2006, 11:07) *


Спасибо, проникся. cheers.gif Осталось выучить матчасть blink.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
shasik
сообщение Nov 25 2006, 03:44
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188



Цитата(Daisy @ Nov 23 2006, 16:11) *
Хочу в msp430F1121
завести внутренний DCO на таймер А ?
Как это в IAR-е осуществить?
Вот такие строчки не помогают
bis.w #TASSEL_2,&TACTL
bis.w #MC_1,&TACTL
где я туплю?
никак у меня TAR в симуляторе инкрементится не хочет.


Если просто нужен вызов обработчика прерывания Timer_A,то в IAR'e
1. Запускаем программу в режиме симулятора
2. Тискаем меню Симулятор->Прерывания...
3. Выбираем тип прерывания (там перечислены все возможные истоники), устанавливаем периодичность вызыва прерывания (в тактах CPU), номер такта , когда произойдет вызов ISR в первый раз + длительность, вероятность срабатывания
4. Радуемся жизни - мы сделали "симуляцию" прерывания, т.е. мы можем посмотреть, что MSP будет делать когда произойдет то или иное прерывание. Но TAR, кажется, инкрементироваться не будет. Источников прерываний в симуляторе можно установить не один и не два.

Не знаю, но по-моему так более понятно, чем общий ответ "дык, нужно использовать макросы".
P.S. Если таймер используешь просто чтобы посчитать длительность выполнения того или иного куска кода, то там есть просто счетчик тактов CPU
Go to the top of the page
 
+Quote Post
Daisy
сообщение Nov 28 2006, 12:18
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 96
Регистрация: 29-04-05
Из: г. Жуковский
Пользователь №: 4 606



Цитата(shasik @ Nov 25 2006, 03:44) *
Цитата(Daisy @ Nov 23 2006, 16:11) *

Хочу в msp430F1121
завести внутренний DCO на таймер А ?
Как это в IAR-е осуществить?
Вот такие строчки не помогают
bis.w #TASSEL_2,&TACTL
bis.w #MC_1,&TACTL
где я туплю?
никак у меня TAR в симуляторе инкрементится не хочет.


Если просто нужен вызов обработчика прерывания Timer_A,то в IAR'e
1. Запускаем программу в режиме симулятора
2. Тискаем меню Симулятор->Прерывания...
3. Выбираем тип прерывания (там перечислены все возможные истоники), устанавливаем периодичность вызыва прерывания (в тактах CPU), номер такта , когда произойдет вызов ISR в первый раз + длительность, вероятность срабатывания
4. Радуемся жизни - мы сделали "симуляцию" прерывания, т.е. мы можем посмотреть, что MSP будет делать когда произойдет то или иное прерывание. Но TAR, кажется, инкрементироваться не будет. Источников прерываний в симуляторе можно установить не один и не два.

Не знаю, но по-моему так более понятно, чем общий ответ "дык, нужно использовать макросы".
P.S. Если таймер используешь просто чтобы посчитать длительность выполнения того или иного куска кода, то там есть просто счетчик тактов CPU


Спасибо! Проникаюсь сейчас IAR-ом, вроде не такая уж и бесполезная штука этот симулятор smile3046.gif
Go to the top of the page
 
+Quote Post
dxp
сообщение Nov 28 2006, 14:35
Сообщение #14


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(shasik @ Nov 25 2006, 06:44) *
Если просто нужен вызов обработчика прерывания Timer_A,то в IAR'e
1. Запускаем программу в режиме симулятора
2. Тискаем меню Симулятор->Прерывания...
3. Выбираем тип прерывания (там перечислены все возможные истоники), устанавливаем периодичность вызыва прерывания (в тактах CPU), номер такта , когда произойдет вызов ISR в первый раз + длительность, вероятность срабатывания
4. Радуемся жизни - мы сделали "симуляцию" прерывания, т.е. мы можем посмотреть, что MSP будет делать когда произойдет то или иное прерывание. Но TAR, кажется, инкрементироваться не будет. Источников прерываний в симуляторе можно установить не один и не два.

Не знаю, но по-моему так более понятно, чем общий ответ "дык, нужно использовать макросы".

Ответ простой: прерывание нужно всегда, при каждом запуске проекта на симуляцию. Все эти действия придется каждый раз руками делать. С макросом они же выполняются каждый раз автоматически. Вот и все. Я и сам начинал так же - задавал через меню. После нескольких итераций меня это задолбало, я открыл доку и стал изучать. С тех пор просто пишу макрос и все - по телодвижениям это то же самое (даже быстрее), а делается всего один раз.

Кроме того, есть случаи, которые через меню просто не сделать. Например, это симуляция поступления данных через последовательный порт или от АЦП. Тут требуется брейк типа immediate, при котором реальной остановки не происходит, но зато вызвается функция (писанная там же нами же), которая подсовывает в нужный регистр нужное значение (хоть из файла берет).

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


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
shasik
сообщение Nov 28 2006, 21:20
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188



Цитата(dxp @ Nov 28 2006, 13:35) *
В общем, для попробовать вариант через меню вполне себе ничего, а для нормальной работы все равно надо юзать макродвижок.


А кто спорит? Я кроме макросов для симуляции, еще тыкаю и кучу условной компиляции. Правда пока пригодилось всего 1 раз. Но кто его знает, что там впереди "за крутым поворотом". Но согласитесь если в самом начале свое жизни на вопрос "а как сделать" получить ответ "а сделай с помощью макросов", то желание жить дальше может и пропасть?
Go to the top of the page
 
+Quote Post

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

 


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


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