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

 
 
> Сколько тактов выполнится код
tvilsa
сообщение Mar 20 2009, 08:48
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 27-01-09
Пользователь №: 43 990



Всем привет.
Использую задержку ввиде

CODE

delay_ms(unsigned int a)
{
volatile unsigned int b;
b=a;
do b--;
while (b != 0);
}



Несмог понять в руководстве пользователя сколько тактов займет выполнение цикла.
Помогите люди добрые.
Заранее спасибо.
Go to the top of the page
 
+Quote Post
2 страниц V  < 1 2  
Start new topic
Ответов (15 - 24)
rezident
сообщение May 21 2009, 15:49
Сообщение #16


Гуру
******

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



Цитата(Allregia @ May 21 2009, 13:51) *
Дежурный - тут надо только чтобы часы шли и проверялось нажатие кнопки "Вкл".
Т.е. минимальное потребление, работа от часового кварца.
Кнопку повесьте на любой пин порта P1 или P2, у которых имеется возможность получить прерывание по изменению уровня на входе. Хотя раз у вас часы будут имитироваться, то в этом же "часовом" прерывании опросить состояние пина много времени не займет. В таком случае кнопка на любом пине может быть.
Цитата(Allregia @ May 21 2009, 13:51) *
Я полагаю, кварц 32кгц на XT1 , 8мгц - на XT2 и переключаться между ними:
дежурный режим - MCLK=XT1, SMCLK=OFF, ACLK=XT1 (от него Timer B на прерывание часов).
рабочий режим - MCLK=XT2, SMCLK=XT2 (от него UART и Timer A, по которому АЦП), ACLK=XT1 (от него Timer B на прерывание часов).
Неразумное решение. sad.gif Зачем переключаться между кварцевыми генераторами? Разработчики MSP430 не зря ведь три внутренних CLK придумали. LFXT у вас будет работать всегда, потому как часы. От LFXT будет генерироваться ACLK. Кстати, часы лучше на WDT повесить, а TimerB использовать для более полезных дел. XT2 нужно включать только тогда, когда он требуется для генерации SMCLK и работы UART. MCLK у вас всегда должен тактироваться от DCO, настроенного на высокую частоту. В таком случае гарантирован быстрый старт (единицы мкс) при переключении в рабочий режим и более надежная работа кристалла вообще (генератор-то внутренний!). К тому же уже неоднократно проверено, что "проснуться", быстро выполнить требуемые операции и снова "уснуть", менее энергозатратно, чем работать на низкой частоте тактирования, но выполнять операции более длительное время. Исключение могут составлять редкие случаи, в которых необходимо работу ядра синхронизировать с какими-то внешними событиями по опросу (без использования прерываний).
Go to the top of the page
 
+Quote Post
Allregia
сообщение May 21 2009, 18:56
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(rezident @ May 21 2009, 18:49) *
Кнопку повесьте на любой пин порта P1 или P2, у которых имеется возможность получить прерывание по изменению уровня на входе. Хотя раз у вас часы будут имитироваться, то в этом же "часовом" прерывании опросить состояние пина много времени не займет. В таком случае кнопка на любом пине может быть.


Я об этом думал, но поскольку как Вы сказали - прерывание от часов все равно работает.

Цитата
Неразумное решение. sad.gif Зачем переключаться между кварцевыми генераторами? Разработчики MSP430 не зря ведь три внутренних CLK придумали. LFXT у вас будет работать всегда, потому как часы. От LFXT будет генерироваться ACLK. Кстати, часы лучше на WDT повесить, а TimerB использовать для более полезных дел.



Но тогда в системе не будет вообще вотчдога!

Заодно вопрос по нему, тут я немного не понял логику тексасовцев.
Вотчдог это "охранное устройство", его назначение - выводить процессор (сбросом, прерыванием) их тупика в программе или аппаратного соя (например от помех - в AVR и Моторолах наблюдал не раз).
Задача программы - его вовремя сбрасывать, и при этом этот сброс надо размещать так чтобы сна него попадало только закономерным образом, например не стоит рахмещать в перрывании, поскольку основная программа може зациклиться где-то, при работающем прерывании.
При этом, в идеале у программы больше не должно быть доступа к управлению им. Например у Микрочипа WDT включается при прожигании, во фьюзах, и из программы его выключить нельзя. И считаю что это правильно.
Тексасовцы же сделали "доступ с паролем", но что это за "пароль", если он просто константа, и одной командой пуляется в регистр и пароль и код выключения/включения.

Цитата
XT2 нужно включать только тогда, когда он требуется для генерации SMCLK и работы UART. MCLK у вас всегда должен тактироваться от DCO, настроенного на высокую частоту.


Поправьте меня, если не прав - с DCO макс. частота MCLK около 4мгц, а с ХТ2 я могу запустить на 8мгц?

Дело в том, что мне это критично - АЦП надо читать и передавать довольно часто, а попутно обслуживать часы, кнопки и ЖКИ, поэтому чем быстрее - тем лучше, потому я и озадачивался вчера временем выполнения операций.

Цитата
В таком случае гарантирован быстрый старт (единицы мкс) при переключении в рабочий режим и более надежная работа кристалла вообще (генератор-то внутренний!). К тому же уже неоднократно проверено, что "проснуться", быстро выполнить требуемые операции и снова "уснуть", менее энергозатратно, чем работать на низкой частоте тактирования, но выполнять операции более длительное время.


Это я все понимаю, но все устройство в рабочем режиме жрет от аккумуятора пол ампера, и экономить ток MSP в это время излишне.
А когда устройство выключено, работают только проц, от часового кварца.
Быстрый старт при переключении в рабочий режим не нужен, это происходит по нажатию кнопки, так что, реакция человека-оператора не единицы мкс.
Для других случаев, Вы безусловно правы.
Go to the top of the page
 
+Quote Post
rezident
сообщение May 21 2009, 22:24
Сообщение #18


Гуру
******

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



Цитата(Allregia @ May 22 2009, 00:56) *
Но тогда в системе не будет вообще вотчдога!
Ну и что в этом криминального? laughing.gif
Цитата(Allregia @ May 22 2009, 00:56) *
не стоит рахмещать в перрывании, поскольку основная программа може зациклиться где-то, при работающем прерывании.
По моим наблюдениям должно что-то совсем "страшное" для устройства произойти, чтобы MSP430 зациклился. Он может зависнуть от статики и/или защелкивания пинов, или Flash стереться (если супервизора питания нет), это да, изредка встречается. Но вот чтобы зациклилась корректно написанная программа ... я такого не припомню. Скорее MSP430 просто перезапустится по POR условию и программа начнет работу с вектора сброса. Тут особенности архитектуры играют роль. У MSP430 фон-Немановская архитектура с общим адресным пространством, а программа обычно исполняется из Flash. И при каком-либо сбое на 99,9% программа попадет на что-либо, формирующее POR-условие. А POR просто сбрасывает MSP430. POR может формироваться, например, при несанкционированной попытке записи во Flash. Допустим испортилось значение указателя, а новое его значение будет на Flash указывать и программа перезапустится при попытке записи по этому указателю "не туда". Или, например, если испортился PC в результате сбоя и программа начала "шарахаться" по адресному пространству, опять же очень велика вероятность, что попадется команда записи во флашь или в один из регистров требующих пароля. Тот же WDT, например. И опять не зацикливание будет, а перезапуск. Правда следует отметить, что я никогда не писал программы, выполняющие куски кода из ОЗУ MSP430. Может поэтому с зацикливаниями программы и не встречался.
Цитата(Allregia @ May 22 2009, 00:56) *
При этом, в идеале у программы больше не должно быть доступа к управлению им. Например у Микрочипа WDT включается при прожигании, во фьюзах, и из программы его выключить нельзя. И считаю что это правильно.
Тексасовцы же сделали "доступ с паролем", но что это за "пароль", если он просто константа, и одной командой пуляется в регистр и пароль и код выключения/включения.
Исходя из моего опыта,
а) правильная трассировка платы,
б) защита входных сигналов, выходящих за ее пределы и
в) наличие хорошего супервизора питания
гораздо эффективнее в плане устойчивости, чем использование WDT в MSP430. Поэтому я обычно без зазрения совести использую WDT как таймер системных "тиков" biggrin.gif Тем более, что прерывание от WDT, используемого в режиме интервального таймера, имеет весьма высокий приоритет среди всей периферии (выше него только NMI, TimerB и ComparatorA).
Цитата(Allregia @ May 22 2009, 00:56) *
Поправьте меня, если не прав - с DCO макс. частота MCLK около 4мгц, а с ХТ2 я могу запустить на 8мгц?
Не прав. Поправляю. DCO можно легко до сотни МГц раскочегарить. Я как-то раз случайно у MSP430F1132 на 50МГц его запустил rolleyes.gif
DCO это генератор RC-типа. Причем R у него может быть внешним (подключается ко входу Rosc). Но даже не используя внешний резистор, а только лишь перебирая значения внутренних R (биты RSELx в регистре BCSCTL1) в зависимости от типа MSP430 можно получить частоту DCO до 6МГц в случае MSP430x1xxx, до 25Мгц в случае MSP430x2xx, до 50МГц у MSP430x4xx и до 95МГц у MSP430x5xx (значения примерные, точнее см. в datasheet конкретного кристалла). При всем при этом значение частоты DCO можно откалибровать по часовому кварцу, подключенному к LFXT1. Да и стабильность DCO у современных серий MSP430 довольно высокая (единицы процента во всем рабочем температурном диапазоне).
Go to the top of the page
 
+Quote Post
Allregia
сообщение May 24 2009, 16:03
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(rezident @ May 22 2009, 01:24) *
Ну и что в этом криминального? laughing.gif
По моим наблюдениям должно что-то совсем "страшное" для устройства произойти, чтобы MSP430 зациклился. Он может зависнуть от статики и/или защелкивания пинов, или Flash стереться (если супервизора питания нет), это да, изредка встречается. Но вот чтобы зациклилась корректно написанная программа ... я такого не припомню.


А в природе бывают полностью корректные программы? smile.gif
В любой программе, есть кк минимукм один баг smile.gifsmile.gifsmile.gif

Цитата
Скорее MSP430 просто перезапустится по POR условию и программа начнет работу с вектора сброса. Тут особенности архитектуры играют роль. У MSP430 фон-Немановская архитектура с общим адресным пространством, а программа обычно исполняется из Flash. И при каком-либо сбое на 99,9% программа попадет на что-либо, формирующее POR-условие.


Попадет. Вопрос - "когда" ? Если проц. управляет чем-то реалтаймово, и в результате какого-то сбоя "улетел" и потом "вернулся", по пока он летал - в управляемом обьекте может успеть что-то сломаться или сгореть (например - если проц управляет источником питания).

Цитата
DCO это генератор RC-типа. Причем R у него может быть внешним (подключается ко входу Rosc). Но даже не используя внешний резистор, а только лишь перебирая значения внутренних R (биты RSELx в регистре BCSCTL1) в зависимости от типа MSP430 можно получить частоту DCO до 6МГц в случае MSP430x1xxx,


Об этом я и говорил - с DCO только 6 а с кварцем - 8.
Хотя с резистором, можно дойти и до 8.
Цитата
до 25Мгц в случае MSP430x2xx, до 50МГц у MSP430x4xx и до 95МГц у MSP430x5xx (значения примерные, точнее см. в datasheet конкретного кристалла). При всем при этом значение частоты DCO можно откалибровать по часовому кварцу, подключенному к LFXT1. Да и стабильность DCO у современных серий MSP430 довольно высокая (единицы процента во всем рабочем температурном диапазоне).


Тогда во многих применеиях кварц не нужен - для UARTа < 5% хватает.
Go to the top of the page
 
+Quote Post
rezident
сообщение May 24 2009, 22:23
Сообщение #20


Гуру
******

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



Цитата(Allregia @ May 24 2009, 22:03) *
Попадет. Вопрос - "когда" ? Если проц. управляет чем-то реалтаймово, и в результате какого-то сбоя "улетел" и потом "вернулся", по пока он летал - в управляемом обьекте может успеть что-то сломаться или сгореть (например - если проц управляет источником питания).
Вы сейчас о применении МК "вообще" рассуждаете или о конкретном применении какого-либо MSP430? rolleyes.gif
Цитата(Allregia @ May 24 2009, 22:03) *
Об этом я и говорил - с DCO только 6 а с кварцем - 8.
Хотя с резистором, можно дойти и до 8.
Вы в этой теме нигде конкретно не указали, с каким именно кристаллом вы работаете? Поэтому, чтобы не заниматься телепатией, я и дал описание возможностей всех серий MSP430.
Цитата(Allregia @ May 24 2009, 22:03) *
Тогда во многих применеиях кварц не нужен - для UARTа < 5% хватает.
Чтобы UART работал всегда, везде и со любыми другими UART нужно стремиться baudrate не хуже ±0,5% устанавливать. ±5% годится только для настольно-наколенного применения. laughing.gif
Go to the top of the page
 
+Quote Post
Allregia
сообщение May 25 2009, 04:43
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(rezident @ May 25 2009, 01:23) *
Вы сейчас о применении МК "вообще" рассуждаете или о конкретном применении какого-либо MSP430? rolleyes.gif


Вообще smile.gif
Цитата
Вы в этой теме нигде конкретно не указали, с каким именно кристаллом вы работаете? Поэтому, чтобы не заниматься телепатией, я и дал описание возможностей всех серий MSP430.


Помоему указывал - 1611. Но пока его плата не готова, развлекаюсь с другой платой, на коорой стоит 148.

Цитата
Чтобы UART работал всегда, везде и со любыми другими UART нужно стремиться baudrate не хуже ±0,5% устанавливать. ±5% годится только для настольно-наколенного применения. laughing.gif


Нет, это не так. УАРТу нужно чтобы с стоповому биту разбег был не более половины (лучше трети) длительности бита, отсюда и появляется граница в 5-6 % разницы в скорости приемника и передатчика. Поскольку они в хушем случае могут быть противоположны по знаку, то для каждого берется половина - 2.5-3%. (и конечно, это выполняется во всем диапазоне температур и других условий).
0.5% - для УАРТа совешенно избыточно.

P.S. Доли %% стабильности при работе с внутреннего RC-генератора выполняются далеко не во всех контроллерах. Например у Микрочипа до определенных серий - изменение частоты по температуре от -20 до +100 доходило до +-15%, что для УАРТа неприемлимо. Более новые - в 2% укладывались и прекрасно работали с УАРТом без кварца.
Go to the top of the page
 
+Quote Post
rezident
сообщение May 25 2009, 10:26
Сообщение #22


Гуру
******

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



Цитата(Allregia @ May 25 2009, 10:43) *
Нет, это не так. УАРТу нужно чтобы с стоповому биту разбег был не более половины (лучше трети) длительности бита, отсюда и появляется граница в 5-6 % разницы в скорости приемника и передатчика.
5% это при условии 8-ми битного символа без бита четности и считывании значения строго в центре битового интервала. Но вовсе не все UART считывают значение именно в центре битового интервала.
Цитата(Allregia @ May 25 2009, 10:43) *
Поскольку они в хушем случае могут быть противоположны по знаку, то для каждого берется половина - 2.5-3%. (и конечно, это выполняется во всем диапазоне температур и других условий).
Вы почему-то исключаете из рассмотрения длину (крутизну) фронтов сигнала и искажения их в тракте передачи.
Цитата(Allregia @ May 25 2009, 10:43) *
0.5% - для УАРТа совешенно избыточно.
Когда стыкуется два своих изделия - да, избыточно. Когда же заранее не известно с каким именно оборудованием будет стыковаться, то 0,5% дают уверенность, что проблем по вине вашего устройства не будет.
Go to the top of the page
 
+Quote Post
Allregia
сообщение May 25 2009, 12:34
Сообщение #23


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(rezident @ May 25 2009, 13:26) *
5% это при условии 8-ми битного символа без бита четности и считывании значения строго в центре битового интервала. Но вовсе не все UART считывают значение именно в центре битового интервала.


Конечно, другие считывают несколько раз с мажроитированием. Им еще проще будет smile.gif
Цитата
Вы почему-то исключаете из рассмотрения длину (крутизну) фронтов сигнала и искажения их в тракте передачи.


Длительность импульсов при этом не искажается, до определенного предела, конечно.

Цитата
Когда стыкуется два своих изделия - да, избыточно. Когда же заранее не известно с каким именно оборудованием будет стыковаться, то 0,5% дают уверенность, что проблем по вине вашего устройства не будет.


С любым стандартным.
Go to the top of the page
 
+Quote Post
rezident
сообщение May 25 2009, 13:21
Сообщение #24


Гуру
******

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



Делайте так, как вам будет угодно. Хоть 5%, хоть 10%. Я сразу понял, что пояснять для вас бесполезно, но почему-то вот не сдержался sad.gif
Go to the top of the page
 
+Quote Post
Allregia
сообщение May 25 2009, 19:04
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Непонятно, почему сделан такой вывод...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 04:33
Рейтинг@Mail.ru


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