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

 
 
 
Reply to this topicStart new topic
> MSP430F249 и 16 MHz, MSP430F249 и 16 MHz
fox1
сообщение Dec 24 2012, 06:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 3-05-06
Из: Нижний Новгород
Пользователь №: 16 725



Добрый день !

Пытаюсь инициализировать MSP430F249 на 16 MHz - не работает
Все вроде по эррате

BCSCTL1 = XT2OFF + RSEL2 + RSEL1 + RSEL0;
DCOCTL = CALDCO_16MHZ;
BCSCTL1 = CALBC1_16MHZ;

и вообще при загрузке калибровочных коэффициентов не работает
так же не работает и при
BCSCTL1 |= (RSEL0 | RSEL1 | RSEL2 | RSEL3);

а при

BCSCTL1 = XT2OFF + RSEL2 + RSEL1 + RSEL0;
DCOCTL = (DCO0 | DCO1 | DCO2) | (!MOD0 | !MOD1 | !MOD2 | !MOD3 | !MOD4);

Все работает ....
Что может быть не так ?????
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 24 2012, 14:49
Сообщение #2


Гуру
******

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



Цитата(fox1 @ Dec 24 2012, 11:50) *
Что может быть не так ?????

Вполне вероятно, что во время манипуляций по программированию памяти вы затерли сегмент с калибровочными константами. Если есть отладчик, то посмотрите содержимое памяти Flash по адресам 0x10C0-0x10FF. Если там сплошные 0xFF, то так и есть - калибровочные контакты были затерты при загрузке программы.
Go to the top of the page
 
+Quote Post
igorle
сообщение Dec 24 2012, 17:11
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 338
Регистрация: 14-07-12
Пользователь №: 72 753



Цитата(fox1 @ Dec 24 2012, 09:50) *
BCSCTL1 = XT2OFF + RSEL2 + RSEL1 + RSEL0;
DCOCTL = CALDCO_16MHZ;
BCSCTL1 = CALBC1_16MHZ;

А если так попробовать?
DCOCTL = CALDCO_16MHZ;
BCSCTL1 = CALBC1_16MHZ;
BCSCTL1 |= XT2OFF + RSEL2 + RSEL1 + RSEL0;
В вашем-же случае третья строка перетирает данные, записанные в первой строке.

Сообщение отредактировал igorle - Dec 24 2012, 21:45
Go to the top of the page
 
+Quote Post
Shread
сообщение Dec 24 2012, 19:44
Сообщение #4


иногда заглядывающий
****

Группа: Свой
Сообщений: 900
Регистрация: 18-05-05
Из: Зеленоград
Пользователь №: 5 170



Обычно вот такой кусочек втыкаю в прогу для детекта отсутствия нужных констант. От левых чисел не спасет, но все же)
if (CALBC1_16MHZ ==0xFF || CALDCO_16MHZ == 0xFF)
{
while(1);
}

Внутри цикла по желанию. В простейшем случае прога трапается и далее не идет.
И еще убедитесь что питание в норме для 16мгц(см даташит). Вполне может оказаться что питание маловато, и иногда работает, а иногда - нет.
Go to the top of the page
 
+Quote Post
fox1
сообщение Dec 25 2012, 04:49
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 3-05-06
Из: Нижний Новгород
Пользователь №: 16 725



Цитата(igorle @ Dec 24 2012, 21:11) *
А если так попробовать?
DCOCTL = CALDCO_16MHZ;
BCSCTL1 = CALBC1_16MHZ;
BCSCTL1 |= XT2OFF + RSEL2 + RSEL1 + RSEL0;
В вашем-же случае третья строка перетирает данные, записанные в первой строке.

Ничего там не перетирается
Все из ерраты

slaz184.pdf
стр. 4
the 3-step clock startup sequence

C:
BCSCTL1 = XT2OFF + RSEL2 + RSEL1 + RSEL0; // BCL12 Workaround, first set RSELx=7
DCOCTL = CALDCO_1MHZ; // Then set target DCOx and MODx
BCSCTL1 = CALBC1_1MHZ; // Finally set target RSELx

Сообщение отредактировал fox1 - Dec 25 2012, 04:52
Go to the top of the page
 
+Quote Post
fox1
сообщение Dec 25 2012, 07:15
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 3-05-06
Из: Нижний Новгород
Пользователь №: 16 725



Заработало на 15 Мгц

BCSCTL1 = (XT2OFF | RSEL2 | RSEL1 | RSEL0); // BCL12 Workaround, first set RSELx=7

DCOCTL = (DCO0 | DCO1 | DCO2) | (!MOD0 | !MOD1 | !MOD2 | !MOD3 | !MOD4);

BCSCTL1 |= (RSEL0 | RSEL1 | RSEL2 | RSEL3);

Но похоже затерлись калибровочные константы при прошивке

Показывает
CALDCO_16MHZ = 0xFF;
CALBC1_16MHZ = 0xFF;

Прошиваю

msp430-bsl.exe -c0 -m10 -1 --invert-test -epvrw 3010I_430_01_01.elf>log.txt

Есть какой-либо прошивальщик bsl, который не затирает инфо мем, а шьет только программную память ???
Кто нибудь может привести значение CALDCO_16MHZ и CALBC1_16MHZ. Что там должно быть примерно ????

Сообщение отредактировал fox1 - Dec 25 2012, 07:16
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 25 2012, 14:26
Сообщение #7


Гуру
******

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



Цитата(fox1 @ Dec 25 2012, 12:15) *
Заработало на 15 Мгц
Интересно, а как вы определили частоту? Частота DCO зависит как от установки RSEL и DCO, так и от температуры кристалла и напряжения питания. При RSEL=15 и DCO=7 диапазон частот генерируемый DCO находится от 16МГц до 26МГц. См. строку fDCO(15,7) DCO frequency (15, 7) в таблице DCO frequency на странице 42 в datasheet MSP430F249.
Цитата(fox1 @ Dec 25 2012, 12:15) *
Есть какой-либо прошивальщик bsl, который не затирает инфо мем, а шьет только программную память ???
Программируйте через JTAG. Для него в программе обычно есть опция, которая сохраняет область INFO_A неизменной.
Go to the top of the page
 
+Quote Post

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

 


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


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