Было ещё множество замечательных сцен, где герой фильма говорил про кадр с камеры наблюдения например: «сделайте изображение чётче», и оператор в два клика «делал всё чётко».
Знаете, а самое забавное, что ровно сегодня я готовил материал для следующей статьи и наткнулся на другой пример кода в том же архиве в файле msp430x22x4_wdt_05.c.
...
for (;;)
{
volatile unsigned int i;
P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR
i = 50000; // Delay
do (i--);
while (i != 0);
...
Тут используется локальная переменная.
Я не берусь обсуждать стандарты языка, по скольку не считаю себя отличным C/C++ программистом. Повторюсь, я учился работать с контроллером по официальным примерам и документациям, и если там содержались ошибки, связанные со стандартом языка, они вполне могли быть перенесены на мой код.
Если Вы уверены в своей правоте, я бы рекомендовал сообщить в техническую поддержку TI об ошибках в коде примеров.
По-моему, надо руки обрывать за такое использование volatile.
Не будьте так критичны. Я учился работать с MSP430 по официальным примерам от Texas Instruments, и там volatile для организации задержки используется достаточно часто.
Что бы не быть голословным, вот ссылка, откроем, например, файл msp430x22x4_uscia0_irda_01.c, 62 строка: for (i = 1000; i; i--); // Small delay
Выше есть объявление (37 строка): volatile unsigned int i;
Когда речь идёт о системах реального времени, в которых необходимо обрабатывать большие объемы данных, то безусловно наилучшем решением является ASM. Ни один компилятор не донесёт до микроконтроллера Ваши мысли лучше Вас самих.
Но если говорить о системах, которые выполняют не большое количество задач, да ещё и с небольшими требованиями к задержкам, то можно использовать любой удобный язык.
В частности C++ в разы повышает скорость разработки. Классы которые я отписывал раньше, с минимальными изменениями, идут в следующие проекты, при этом не ухудшая читабельность кода. Я не опровергаю мысль о том, что это, может быть, не рационально, но сроки разработки часто играют большую роль.
Это C++.
Хотя конечно почти никакой специфики C++ в примере нет.
Я очень сильно привык к прелестям ООП и поэтому программы побольше, чем эта, всегда всегда пишу с применением классов.
Тут используется локальная переменная.
Я не берусь обсуждать стандарты языка, по скольку не считаю себя отличным C/C++ программистом. Повторюсь, я учился работать с контроллером по официальным примерам и документациям, и если там содержались ошибки, связанные со стандартом языка, они вполне могли быть перенесены на мой код.
Если Вы уверены в своей правоте, я бы рекомендовал сообщить в техническую поддержку TI об ошибках в коде примеров.
Мне кажется, что вы драматизируете. На картинке снимки экрана, где виден процесс выполнения в обоих случаях.
Не будьте так критичны. Я учился работать с MSP430 по официальным примерам от Texas Instruments, и там volatile для организации задержки используется достаточно часто.
Что бы не быть голословным, вот ссылка, откроем, например, файл msp430x22x4_uscia0_irda_01.c, 62 строка:
for (i = 1000; i; i--); // Small delay
Выше есть объявление (37 строка):
volatile unsigned int i;
Но если говорить о системах, которые выполняют не большое количество задач, да ещё и с небольшими требованиями к задержкам, то можно использовать любой удобный язык.
В частности C++ в разы повышает скорость разработки. Классы которые я отписывал раньше, с минимальными изменениями, идут в следующие проекты, при этом не ухудшая читабельность кода. Я не опровергаю мысль о том, что это, может быть, не рационально, но сроки разработки часто играют большую роль.
Хотя конечно почти никакой специфики C++ в примере нет.
Я очень сильно привык к прелестям ООП и поэтому программы побольше, чем эта, всегда всегда пишу с применением классов.
.h файлы для других микроконтроллеров лежат в папке \Program Files\IAR Systems\Embedded Workbench 6.0 Kickstart\430\inc
К этому стоит добавить наличие доступных отладочных наборов.
Обязательно попробую проделать тоже самое дома.
Спасибо!
Сегодня надо знатно покодить :)