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

 
 
> MSP430F2013 из eZ430-F2013 + IAR для начинающих, MSP430F2013 из eZ430-F2013 + IAR для начинающих
AlexandrM
сообщение Sep 18 2007, 06:10
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 46
Регистрация: 9-07-07
Пользователь №: 28 991



Я программист и раньше писал для ПК, Psion, PalmOS, PocketPC. Сейчас очень хочу изучить МК от TI. Имеется eZ430-F2013, IAR и желание. Но никак не могу понять принципов программирования МК. Прошу помощи. Вот есть такие вопросы:
1. на борту памяти 128Б флеша 2К:
1.1. Программа прошивается в флеш?
1.2. Мне для работы будет доступно 2К минус размер программы?
2. Имеется 100Б параметров (типа номер, пользователь и т.д.) они должны быть записаны во флеш
2.1. Есть стартове значения, как их при прошивки записать во флеш или нужно при первом запуске программы инитить?
3. Таймер. Имею код:
Цитата
#include "msp430x20x1.h"

void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //выключили WD
P1DIR |= 0x01; //Порт работает на выход

TACTL = TASSEL_1 + MC_1; //Используем ACLK и движение от 0 до TACCR0
TACCR0 = 1000; //Предел 1000
TACCTL0 = CCIE; //Включить прерывание

_BIS_SR(LPM0_bits + GIE); //Перейти в режим сна
}

#pragma vector=TIMERA0_VECTOR
__interrupt void TIMERA0_ISR(void)
{
P1OUT ^=0x01; //Изменить состояние порта (как я понимаю в порт будет подавать/не подавать постоянно импульс)
}

3.1. Правильно ли я понял код?
3.2. Как сделать чтобы задержка была 1сек? Как вычислять эту цифру?
3.3. Генератор ACLK работает с одинаковой скорость в спящем режиме?
4. Как вычислять скорость выполнения каждой команды?
5. При отладке с использованием Z430-F2013 код прошивается или идет подобие эмуляции?
Пока все вопросы, надеюсь на ответы для человека с уровнем 0.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jorikdima
сообщение Sep 18 2007, 07:56
Сообщение #2


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(AlexandrM @ Sep 18 2007, 10:10) *
Я программист и раньше писал для ПК, Psion, PalmOS, PocketPC. Сейчас очень хочу изучить МК от TI. Имеется eZ430-F2013, IAR и желание. Но никак не могу понять принципов программирования МК. Прошу помощи. Вот есть такие вопросы:
1. на борту памяти 128Б флеша 2К:
1.1. Программа прошивается в флеш?
1.2. Мне для работы будет доступно 2К минус размер программы?
2. Имеется 100Б параметров (типа номер, пользователь и т.д.) они должны быть записаны во флеш
2.1. Есть стартове значения, как их при прошивки записать во флеш или нужно при первом запуске программы инитить?
3. Таймер. Имею код:

3.1. Правильно ли я понял код?
3.2. Как сделать чтобы задержка была 1сек? Как вычислять эту цифру?
3.3. Генератор ACLK работает с одинаковой скорость в спящем режиме?
4. Как вычислять скорость выполнения каждой команды?
5. При отладке с использованием Z430-F2013 код прошивается или идет подобие эмуляции?
Пока все вопросы, надеюсь на ответы для человека с уровнем 0.


1.1 да во флешь. это пзу (аналог винчестера в ПК biggrin.gif )
1.2 что значит доступно? для чего. Для записипрограммы вам будет доступна вся флешь (в доке смотрите таблицу памяти). для переменных все ОЗУ. Программа при выполнении выполняется из флешь а не ОЗУ

2.1 Я правильно понял, что вамнадочто то записать во флешь потому что при последующем перепрограммировании вам нельзя это стирать? если так, то надо использовать Information Memory например - это спец область флеши для таких нужд. Если вам просто надо при программировании набор констант использовать, то пользуйте const.

3.1 Судя по коментам вроде да. Только фраза " в порт будет подавать/не подавать постоянно импульс" насмешила
3.2 Эта цифра зависит от частоты того генератора, которым тактируется таймер. В вашем случае ACLK. Как задавать частоту ACLK почитайте в доке (например можно от внешнего кварца, обычно именно так ACLK пользуют).
3.3 да.

4. одна АССЕМБЛЕРНАЯ команда выполняется за 1 такт, то есть 1/Fmclk c/ Но зачем вам это? Формировать задержки? это не так делается, а с помощью таймера.

5. прошивается

У Вас тяжелое наследие программирования ПК. Все кто в программирование МК приходит изПК так мучаются. Не переживайте... лечится biggrin.gif biggrin.gif biggrin.gif
Go to the top of the page
 
+Quote Post
AlexandrM
сообщение Sep 18 2007, 08:39
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 46
Регистрация: 9-07-07
Пользователь №: 28 991



Цитата(jorikdima @ Sep 18 2007, 10:56) *
1.2 что значит доступно? для чего. Для записипрограммы вам будет доступна вся флешь (в доке смотрите таблицу памяти). для переменных все ОЗУ. Программа при выполнении выполняется из флешь а не ОЗУ

Вот есть 2К флеша с 0 по 2047 программа размером 512Б прошьется с Х адреса (с какого прошивается? как определить какая свободная?), т.е. с 512 по 2047 я могу использовать для хранения данных?

Цитата(jorikdima @ Sep 18 2007, 10:56) *
2.1 Я правильно понял, что вамнадочто то записать во флешь потому что при последующем перепрограммировании вам нельзя это стирать? если так, то надо использовать Information Memory например - это спец область флеши для таких нужд. Если вам просто надо при программировании набор констант использовать, то пользуйте const.

Это не константы это очень редко меняющиеся данные. Про Information Memory понял, ее там 256Б (получается 2К + 256Б реально имеется?). А если нужно больше 256Б хранить? Основная суть вопроса вот в чем, имеется:
- базовые параметры размером 300Б они нужны для работы (напр. Номер и Пользователь);
- размер программы 1748Б;
- итого вся память занята
как IAR сказать чтобы разместил Номер и Пользователь например сразу за кодом программы при прошивке, чтобы я мог его использовать так
void main
{
SN = ReadFlash(Addr_SN);
USer = ReadFlash(Addr_User);
}
если не размещаять при прошивке нужно записать во флеш стартовые данные
void main
{
SN = ReadFlash(Addr_SN);
User = ReadFlash(Addr_User);
if (SN == 0)
{
SN = 12345;
User = 09876;
}
}
но это как бы лишний код и памяти под него нет
итого:
можно ли при прошивки размещать некоторые данные во флеше по определенным адресам? и как?

Цитата(jorikdima @ Sep 18 2007, 10:56) *
3.2 Эта цифра зависит от частоты того генератора, которым тактируется таймер. В вашем случае ACLK. Как задавать частоту ACLK почитайте в доке (например можно от внешнего кварца, обычно именно так ACLK пользуют).

А без внешних как? Как узнать текущие насройки?

Цитата(jorikdima @ Sep 18 2007, 10:56) *
У Вас тяжелое наследие программирования ПК. Все кто в программирование МК приходит изПК так мучаются. Не переживайте... лечится

smile.gif

Цитата(rezident @ Sep 18 2007, 11:34) *
Вычислять как отношение тактовой частоты к значению регистра перезагрузки. В вашем случае как F(ACLK)/(1000+1). Частота переключения выхода P1.1 будет Fout(P1.1)=F(ACLK)/(1000+1)/2

Чувствую что глупый вопрос, но чему это F(ACLK) будет равно на этом чипе?
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 18 2007, 09:03
Сообщение #4


Гуру
******

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



Цитата(AlexandrM @ Sep 18 2007, 14:39) *
Вот есть 2К флеша с 0 по 2047 программа размером 512Б прошьется с Х адреса (с какого прошивается? как определить какая свободная?), т.е. с 512 по 2047 я могу использовать для хранения данных?

Неверные адреса! Распределение памяти смотрите в datashseet конкретного кристалла. Для MSP430F2013 распределение памяти такое (см. правую колонку в аттаче).
Цитата(AlexandrM @ Sep 18 2007, 14:39) *
Это не константы это очень редко меняющиеся данные. Про Information Memory понял, ее там 256Б (получается 2К + 256Б реально имеется?). А если нужно больше 256Б хранить? Основная суть вопроса вот в чем, имеется:
- базовые параметры размером 300Б они нужны для работы (напр. Номер и Пользователь);
- размер программы 1748Б;
- итого вся память занята

Рекомендую для такого случая использовать внешнюю м/с EEPROM. Для уменьшения энергопотребления можно запитать ее прямо от вывода любого порта MSP430.
Цитата(AlexandrM @ Sep 18 2007, 14:39) *
как IAR сказать чтобы разместил Номер и Пользователь например сразу за кодом программы при прошивке, чтобы я мог его использовать так
void main
{
SN = ReadFlash(Addr_SN);
USer = ReadFlash(Addr_User);
}
если не размещаять при прошивке нужно записать во флеш стартовые данные
void main
{
SN = ReadFlash(Addr_SN);
User = ReadFlash(Addr_User);
if (SN == 0)
{
SN = 12345;
User = 09876;
}
}
но это как бы лишний код и памяти под него нет

Не понял, что за такая функция ReadFlash? Константы можно адресовать непосредственно, зачем еще функцию для этого писать? Еще раз повторяю, чтобы константы разместить в одном месте используйте структуру. Т.е. оформите данные как структуру констант.
Цитата(AlexandrM @ Sep 18 2007, 14:39) *
итого:
можно ли при прошивки размещать некоторые данные во флеше по определенным адресам? и как?

Можно. Читайте документ MSP430 C/C++ Compiler Reference Guide из состава IAR wink.gif
Цитата(AlexandrM @ Sep 18 2007, 14:39) *
Чувствую что глупый вопрос, но чему это F(ACLK) будет равно на этом чипе?

Поскольку вы не используете никаких процедур инициализации источников тактирования, то ACLK будет по-умолчанию от LFXT1CLK тактироваться, то бишь от часового кварца, который установлен на вашем EZ430.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
AlexandrM
сообщение Sep 18 2007, 09:41
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 46
Регистрация: 9-07-07
Пользователь №: 28 991



Цитата(rezident @ Sep 18 2007, 12:03) *
Поскольку вы не используете никаких процедур инициализации источников тактирования, то ACLK будет по-умолчанию от LFXT1CLK тактироваться, то бишь от часового кварца, который установлен на вашем EZ430.


Подскажите как обойтись без внешних кварцев?
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Sep 18 2007, 09:53
Сообщение #6


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(AlexandrM @ Sep 18 2007, 13:41) *
Подскажите как обойтись без внешних кварцев?

не использовать ACLK. Использовать например MCLK или SMCLK

Вы наверно думаете, что в МК частоты ACLK и пр. уже заданы. Нет. Это не Пень4 smile.gif с 3.0 Ггц, тут формировать тактовую частоту надо самому, настраивая конфигурационные регистры. Читайте Basic Clock.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- AlexandrM   MSP430F2013 из eZ430-F2013 + IAR для начинающих   Sep 18 2007, 06:10
|- - Юрий Санвальд   Цитата(AlexandrM @ Sep 18 2007, 12:39) Во...   Sep 18 2007, 08:58
|- - Юрий Санвальд   Цитата(jorikdima @ Sep 18 2007, 13:53) не...   Sep 18 2007, 11:21
|- - jorikdima   Цитата(Юрий Санвальд @ Sep 18 2007, 15:21...   Sep 18 2007, 11:33
|- - Юрий Санвальд   Цитата(jorikdima @ Sep 18 2007, 15:33) не...   Sep 18 2007, 11:42
- - rezident   Цитата(AlexandrM @ Sep 18 2007, 12:10) 1....   Sep 18 2007, 08:34
- - AlexandrM   А существует какой-нибудь примерник элементарных к...   Sep 18 2007, 10:45
|- - Юрий Санвальд   Цитата(AlexandrM @ Sep 18 2007, 14:45) А ...   Sep 18 2007, 11:13
|- - jorikdima   Цитата(AlexandrM @ Sep 18 2007, 14:45) А ...   Sep 18 2007, 11:17
|- - AlexandrM   Цитата(jorikdima @ Sep 18 2007, 14:17) ht...   Sep 18 2007, 11:30
|- - Сергей Борщ   Цитата(AlexandrM @ Sep 18 2007, 14:30) Ес...   Sep 18 2007, 11:39
- - Юрий Санвальд   AlexandrM, разрешите вопрос, почему именно MSP? Дл...   Sep 18 2007, 11:38
|- - AlexandrM   Цитата(Юрий Санвальд @ Sep 18 2007, 14:38...   Sep 18 2007, 12:25
|- - Юрий Санвальд   Цитата(AlexandrM @ Sep 18 2007, 16:25) Во...   Sep 18 2007, 12:41
|- - AlexandrM   Цитата(Юрий Санвальд @ Sep 18 2007, 15:41...   Sep 18 2007, 13:16
|- - Юрий Санвальд   Цитата(AlexandrM @ Sep 18 2007, 17:16) Не...   Sep 18 2007, 13:42
|- - AlexandrM   Цитата(Юрий Санвальд @ Sep 18 2007, 16:42...   Sep 18 2007, 13:50
|- - Юрий Санвальд   Цитата(AlexandrM @ Sep 18 2007, 17:50) Из...   Sep 18 2007, 14:21
- - rezident   Я же вам привел формулу. Период перезагрузки тайме...   Sep 18 2007, 13:42
- - rezident   ЦитатаТут кто-нибудь работал со второй серией MSP?...   Sep 18 2007, 15:29
- - jorikdima   у автора нету кварца. А значит нет 32768! Авт...   Sep 19 2007, 08:18
- - Tech   По MSP430 читать здесь: http://www.compel.ru/libra...   Sep 19 2007, 09:01
- - Юрий Санвальд   Для AlexandrM: Только что проверил код представлен...   Sep 19 2007, 09:03


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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 08:45
Рейтинг@Mail.ru


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