|
MSP430F2013 из eZ430-F2013 + IAR для начинающих, MSP430F2013 из eZ430-F2013 + IAR для начинающих |
|
|
|
Sep 18 2007, 06:10
|
Участник

Группа: Новичок
Сообщений: 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.
|
|
|
|
|
 |
Ответов
|
Sep 18 2007, 12:25
|
Участник

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

|
Цитата(Юрий Санвальд @ Sep 18 2007, 14:38)  AlexandrM, разрешите вопрос, почему именно MSP? Для какого применения хотите делать устройство? Я вот изучение микроконтроллеров в институте начинал с Atmel AVR, и хотя сейчас в основном работаю с LPC и MSP, но мне кажется что проще всего начать с какой-нибудь ATMEGA16 от Atmel, там все просто и линейно, нет кучи всяких разных клоков, спящих режимов и т.п. ИМХО конечно. Или выбрали MSP просто из-за наличия eZ430? Прием передача по радиоканалу. Изза того что хорошие отзывы о MSP430 + CC110x и наличия eZ430. Цитата(Сергей Борщ @ Sep 18 2007, 14:39)  Начните с моргания светодиодом. Потом поморгайте через таймер. И так постепенно дойдете до Помигал  А вот на таймерах ничего не пойму: Код #include <msp430x20x3.h>
void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT P1DIR |= 0x01; // P1.0 output CCTL0 = CCIE; // CCR0 interrupt enabled CCR0 = 1000-1; TACTL = TASSEL_1 + MC_1; // ACLK, upmode
_BIS_SR(LPM3_bits + GIE); // Enter LPM3 w/ interrupt }
// Timer A0 interrupt service routine #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) { P1OUT ^= 0x01; // Toggle P1.0 } Вот недоходит мне что это за "1000-1". Читаю что ACLK = TACLK = 32768Hz но как вычислить чему равно должно быть CCR0 чтобы получилась 1 секунда.
|
|
|
|
|
Sep 18 2007, 12:41
|
Частый гость
 
Группа: Свой
Сообщений: 125
Регистрация: 21-03-07
Из: Санкт-Петербург
Пользователь №: 26 371

|
Цитата(AlexandrM @ Sep 18 2007, 16:25)  Вот недоходит мне что это за "1000-1". Читаю что ACLK = TACLK = 32768Hz но как вычислить чему равно должно быть CCR0 чтобы получилась 1 секунда. В этом примере "1000-1" - число тактов ACLK, досчитав до которого таймер выдаст прерывание и обнулится. Если ACLK у вас 32,768 кГц то, чтобы прерывание происходило каждую секунду CCR0 = 2*32768-1.
|
|
|
|
|
Sep 18 2007, 13:16
|
Участник

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

|
Цитата(Юрий Санвальд @ Sep 18 2007, 15:41)  В этом примере "1000-1" - число тактов ACLK, досчитав до которого таймер выдаст прерывание и обнулится. Если ACLK у вас 32,768 кГц то, чтобы прерывание происходило каждую секунду CCR0 = 2*32768-1. Не обижайтесь  обясните почему * 2 какая связь 2*32768-1 и 1 секундой?
Сообщение отредактировал AlexandrM - Sep 18 2007, 13:23
|
|
|
|
|
Sep 18 2007, 13:42
|
Частый гость
 
Группа: Свой
Сообщений: 125
Регистрация: 21-03-07
Из: Санкт-Петербург
Пользователь №: 26 371

|
Цитата(AlexandrM @ Sep 18 2007, 17:16)  Не обижайтесь  обясните почему * 2 какая связь 2*32768-1 и 1 секундой? Насчет *2 это я ошибся  надо "32768/2". Смотрите: таймер считает импульсы ACLK, его частота 32,768 кГц, значит за секунду происходит 32768/2 =16384 импульсов. Т.е. если вы хотите, чтоб прерывание происходило через секунду, то в CCR0 нужно записать это число - 1 ("нулевой" такт тоже считается), за секунду счетчик дойдет до этого числа и случиться прерывание. Только вы уверены что у вас там на плате есть внешний кварц (32768кГц обычно) для ACLK? по-моему его на плате просто нет: http://focus.ti.com/lit/ug/slau176b/slau176b.pdfстраница №10 там к XIN/XOUT ничего не подключено, есть только ВЧ-кварц на ХТ2. Во втором семействе там вроде внутренний осциллятор есть, но может какие то особенности есть с его настройкой, я не знаю, т.к. не работал никогда Попробуйте переключить таймер на SMCLK, как это у меня в примере было (поменяйте только регистры под ваш контроллер), по идее он по умолчанию от DCO работает, так нормально все должно быть. Главное не сдаваться!
|
|
|
|
|
Sep 18 2007, 13:50
|
Участник

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

|
Цитата(Юрий Санвальд @ Sep 18 2007, 16:42)  Насчет *2 это я ошибся  надо "32768/2". Смотрите: таймер считает импульсы ACLK, его частота 32,768 кГц, значит за секунду происходит 32768/2 =16384 импульсов. Т.е. если вы хотите, чтоб прерывание происходило через секунду, то в CCR0 нужно записать это число - 1 ("нулевой" такт тоже считается), за секунду счетчик дойдет до этого числа и случиться прерывание. Извините если уже дастал но: CCR0 = (32768 / 2)-1; в результатет мигание индикатора приблизительно 27 сек. Пожалуйста дайте рабочий код  Я что не попробую все не работает
|
|
|
|
|
Sep 18 2007, 14:21
|
Частый гость
 
Группа: Свой
Сообщений: 125
Регистрация: 21-03-07
Из: Санкт-Петербург
Пользователь №: 26 371

|
Цитата(AlexandrM @ Sep 18 2007, 17:50)  Извините если уже дастал но: CCR0 = (32768 / 2)-1; в результатет мигание индикатора приблизительно 27 сек. Пожалуйста дайте рабочий код  Я что не попробую все не работает  Ну я выше написал уже, что не работал со вторым семейством, реального кода для него у меня нет, но все эти вещи должны работать. Обратите внимание на мое замечание насчет ACLK, почитайте юзергид насчет внутреннего осциллятора, какая у него частота по умолчанию? И светодиод не самый лучший способ отладки, он может мигать с большой частотой и вы просто этого не увидите, осциллографа часом нету? Без него сложновато с МК работать. Но можно. Посмотрел сам (стало интересно): http://focus.ti.com/lit/ds/symlink/msp430f2013.pdfНичего не понял (точнее почти ничего просто не написано в разделе "oscillator and system clock") Тут кто-нибудь работал со второй серией MSP? Какие там особенности есть в плане этого "the internal LF oscillator"?
|
|
|
|
Сообщений в этой теме
AlexandrM MSP430F2013 из eZ430-F2013 + IAR для начинающих Sep 18 2007, 06:10 jorikdima Цитата(AlexandrM @ Sep 18 2007, 10:10) Я ... Sep 18 2007, 07:56 AlexandrM Цитата(jorikdima @ Sep 18 2007, 10:56) 1.... Sep 18 2007, 08:39  Юрий Санвальд Цитата(AlexandrM @ Sep 18 2007, 12:39) Во... Sep 18 2007, 08:58  rezident Цитата(AlexandrM @ Sep 18 2007, 14:39) Во... Sep 18 2007, 09:03   AlexandrM Цитата(rezident @ Sep 18 2007, 12:03) Пос... Sep 18 2007, 09:41    jorikdima Цитата(AlexandrM @ Sep 18 2007, 13:41) По... Sep 18 2007, 09:53     Юрий Санвальд Цитата(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 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|