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

Не замечал, код вполне приличный.

Чтобы на такой архитектуре как MSP сгенерировать неоптимальный код - это надо талант иметь и долго учиться ;)

Ясно, спасибо, буду пробовать!

 

В удобстве управления тактированием ядра/периферии и режимами перехода из спячки в работу и обратно. В MSP430 мне лично только 32-х разрядных таймеров (точнее 32-х разрядных capture) не хватает.

Ну не так уж и удобно с переходом из спячки и обратно, на первый взгляд. К примеру, устройству необходимо "уснуть" на 10 минут - на девайсах Value Line запрограммировать выход из спячки LPM3 по таймеру возможно только используя ватчдог, с учётом его 16 бит и частоты Low Power RC генератора в 12 кГц получаем максимальное время спячки в 20 секунд. Маловато будет.

На новых LPC800 для этого есть 32 битный WKT, дающий гораздо более гибкую настройку.

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


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

Ну не так уж и удобно с переходом из спячки и обратно, на первый взгляд. К примеру, устройству необходимо "уснуть" на 10 минут - на девайсах Value Line запрограммировать выход из спячки LPM3 по таймеру возможно только используя ватчдог, с учётом его 16 бит и частоты Low Power RC генератора в 12 кГц получаем максимальное время спячки в 20 секунд. Маловато будет.

На новых LPC800 для этого есть 32 битный WKT, дающий гораздо более гибкую настройку.

Надуманная проблема. :laughing: Во-первых, кроме WDT есть еще и TimerA. Во-вторых, а кто мешает просыпаться по переполнению таймера и программно проверять окончание временной паузы в течение этих 10 минут? При тактировании от того же VLO при каждом просыпании, проверка (вход в прерывание, сравнение, выход в спячку) займет порядка 30 тактов или около 2,5мс. Причем потреблять в активном режиме MSP430 в это время будет аж целых 5мкА вместо (максимум) 0.7мкА@25°C в режиме LPM3. Это конечно ужас, но ведь не ужас-ужас-ужас, не так ли? :biggrin:

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


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

Собрался распробовать MSP430

Может кто-либо дать ссылки на схемы перепрограммирования MSP430 через USB (MSP430 с USB) а не через JTAG для того, чтобы заложить на плату?

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


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

Надуманная проблема. :laughing: Во-первых, кроме WDT есть еще и TimerA.

Проблема не большая, согласен.

Но таймер тоже 16 битный, поэтому выдержка будет лишь в два раза больше - около 40 секунд.

Мало, мало, мало... :laughing:

 

кто мешает просыпаться по переполнению таймера и программно проверять окончание временной паузы в течение этих 10 минут?

Так и придётся делать, это понятно.

 

После того, как попробуешь все прелести 32 бит, даже на 16 становится тесновато... :)

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


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

Может кто-либо дать ссылки на схемы перепрограммирования MSP430 через USB (MSP430 с USB) а не через JTAG для того, чтобы заложить на плату?

В соседнем топике обсуждается эта тема http://electronix.ru/forum/index.php?showtopic=116844

 

После того, как попробуешь все прелести 32 бит, даже на 16 становится тесновато... :)
Аналогично, как и 16 после 8-битников. :laughing:

 

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


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

Всем привет.

1. Какой файл проекта CCS является прошивкой для MSP430?

Есть ли программные средства чтобы просто загрузить файл прошивки в память МК (без среды разработки CCS)?

 

2. Как очистить память программ в CCS?

Допустим я загрузил в микроконтроллер программу. Она будет там "сидеть" до тех пор пока я не запишу туда другую новую программу на место этой. А можно ли удалить "все" из микросхемы? В каком мануале можно почитать о "внутренностях" процесса прошивки?

 

3. В одном из примеров от TI увидел в коде ф-цию _delay_cycles(). Вставил в свой код. Работает?! Где определена эта функция?

Встречал в примерах функции __bis_sr_register(). В чем её отличия от функции __bis_sr()?

Читал что __bis_sr_register(GIE) эквивалентно _enable_interrupt(). Зачем их две, выполняющие одно и то же?

В чем отличие функций у которых перед именем одно подчеркивание (_) от функций в имени которых два подчеркивания (__) ?

Где взять описания всех этих функций?

 

И все функции, они работают, хотя в *.h файлах я их не нашел. Где это все определено?

 

4. Где вообще можно почитать о написании кода для MSP 430 на СИ. В мануалах про сам контроллер написано хорошо но там асм, а вот что делать с СИ - не совсем понятно. Учиться чисто на примерах из сети - как-то странновато (может это и на первый взгляд, раньше на ассемблере писал).

 

Одним словом прошу помощи в информации!!!

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


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

1. Какой файл проекта CCS является прошивкой для MSP430?

Учимся самостоятельно добывать нужную информацию. Показываю пример того, как это делается.

- Идем на сайт TI: http://www.ti.com/

- Вводим в строку поиска ключевое слово "CCS"

- Переходим по результатам поиска на страничку продукта Code Composer Studio IDE - Integrated Development Environment, а там к абзацу Technical Documents

- Ищем в списке документов руководство по программированию в среде CCS на Си в применении именно к MSP430 MSP430 Optimizing C/C++ Compiler v 4.2 User's Guide (Rev. H)

- Поиском по документу ищем ключевое слово "output" и находим упоминание в разделе 1.2.2 Output Files

1.2.2 Output Files

These types of output files are created by the compiler:

COFF object files

Common object file format (COFF) provides basic modular (separately-compiled) compilation features,

such as relocations. COFF is a legacy format; it will continue to be supported, but support for some

modern language features will not be added

ELF object files

Executable and linking format (ELF) enables supporting modern language features like early template

instantiation and exporting inline functions.

и далее в разделе 1.2.4 Utilities

1.2.4 Utilities

These features are compiler utilities:

 

...

 

• Hex conversion utility

For stand-alone embedded applications, the compiler has the ability to place all code and initialization

data into ROM, allowing C/C++ code to run from reset. The COFF files output by the compiler can be

converted to EPROM programmer data files by using the hex conversion utility, as described in the

MSP430 Assembly Language Tools User's Guide.

- См. вновь на той же страничке документ с упомянутым названием MSP430 Assembly Language Tools v 4.2 User's Guide (Rev. H) в котором внимательно изучаем Chapter 12. Hex Conversion Utility Description

- На той же страничке продукта находится основной документ для пользователя CCS Code Composer Studio v5.5 for MSP430 User's Guide (Rev. Z), где в разделе Using the Integrated Debugger описано как "прикрутить" к дебаггеру CCS эту утилиту для конвертации в стандартные форматы TI-TXT и Intel-HEX.

Есть ли программные средства чтобы просто загрузить файл прошивки в память МК (без среды разработки CCS)?

MSP430 Flasher - Command-line Programmer

FET-Pro430 от Elprotronic

MSPFET Programmer от Kurt-а

Естественно, что прошивка должна быть в одном из стандартных форматов (типа TI-TXT или Intel-HEX).

2. Как очистить память программ в CCS?

Допустим я загрузил в микроконтроллер программу. Она будет там "сидеть" до тех пор пока я не запишу туда другую новую программу на место этой. А можно ли удалить "все" из микросхемы?

Через JTAG или BSL, воспользовавшись командой Erase в любой из вышеперечисленных программ. Либо читайте User's Guide для вашей серии MSP430, где описано внутрипрограммное программирование и стирание Flash.

В каком мануале можно почитать о "внутренностях" процесса прошивки?

Читайте User's Guide для соответствующей серии MSP430. Ссылки на сайте призводителя http://www.ti.com/lsds/ti/microcontroller/...docCategoryId=6

3. В одном из примеров от TI увидел в коде ф-цию _delay_cycles(). Вставил в свой код. Работает?! Где определена эта функция?

В библиотеке CCS вестимо. Исходников может и не быть. Публиковать или нет исходники своих библиотек это личное добровольное дело разработчиков компилятора.

Встречал в примерах функции __bis_sr_register(). В чем её отличия от функции __bis_sr()?

Я не встречал вторую. Может это что-то самописное?

Читал что __bis_sr_register(GIE) эквивалентно _enable_interrupt(). Зачем их две, выполняющие одно и то же?

Первая более универсальная. unsigned short __bis_SR_register(unsigned short mask); компилируется в команду BIS mask, SR

Вторая функция void __enable_interrupt(void); не имеет аргумента и компилируется в команду EINT, которая суть то же самое, что и BIS GIE, SR

В чем отличие функций у которых перед именем одно подчеркивание (_) от функций в имени которых два подчеркивания (__) ?

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

Где взять описания всех этих функций?

В User's Guide на ваш компилятор. Конкретно для CCS они описаны в документе MSP430 Optimizing C/C++ Compiler v 4.2 User's Guide (Rev. H) в таблице Table 6-5. MSP430 Intrinsics

И все функции, они работают, хотя в *.h файлах я их не нашел. Где это все определено?

См. выше. В библиотечных функциях компилятора.

4. Где вообще можно почитать о написании кода для MSP 430 на СИ. В мануалах про сам контроллер написано хорошо но там асм, а вот что делать с СИ - не совсем понятно. Учиться чисто на примерах из сети - как-то странновато (может это и на первый взгляд, раньше на ассемблере писал).

Учебниками по языку Си наводнен весь Интернет. Учиться на примерах из сети - в этом нет ничего странного. Нужно только пользоваться заведомо рабочими примерами. У того же производителя (TI) на сайте есть примеры (Code Examples) для всех типов MSP430 и для всей периферии, имеющейся у MSP430.

Одним словом прошу помощи в информации!!!

Еще раз предлагаю вам учиться искать требуемую информацию самостоятельно! На сайте производителя www.ti.com этой информации в избытке. :rolleyes:

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


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

3. В одном из примеров от TI увидел в коде ф-цию _delay_cycles(). Вставил в свой код. Работает?! Где определена эта функция?

В библиотеке CCS вестимо. Исходников может и не быть. Публиковать или нет исходники своих библиотек это личное добровольное дело разработчиков компилятора.

Про публикование реализации никто не говорит, но заголовки-то должны где-то присутствовать, так или не так?

 

Огромное спасибо за такой развернутый ответ.

Много раз, естественно, был на ti.com и копался в этом огромном списке. Но для меня, как для начинающего работу с этими микросхемами, даже учитывая, что я не первый раз работаю с микроконтроллерами, трудновато на первых парах найти нужный документ для ответа на конкретный вопрос из такого большого списка, тем более что многие документы довольно обширные и даже просто просмотр занимает огромное количество времени. Мне достаточно было бы лишь дать ссылку на нужный мануал, а дальше проблем нет.

Еще раз спасибо за развернутость. :)

 

С уважением, Анатолий.

 

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


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

Про публикование реализации никто не говорит, но заголовки-то должны где-то присутствовать, так или не так?

Я работаю с IAR, поэтому в "потрохах" CCS не очень ориентируюсь. Если по аналогии с IAR, то хедер intrinsics.h (в котором определены __bis_SR_register() и т.п.) находится среди стандартных хедеров от TI. А вот _delay_cycles() это уже библиотечная функция собственно компилятора и куда именно в CCS поместили ее хедер, я не знаю. Устанавливать CCS только ради этого знания, у меня желания нет :)

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


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

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

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

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

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

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

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

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

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

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