fox1 0 24 декабря, 2012 Опубликовано 24 декабря, 2012 · Жалоба Добрый день ! Пытаюсь инициализировать 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); Все работает .... Что может быть не так ????? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 24 декабря, 2012 Опубликовано 24 декабря, 2012 · Жалоба Что может быть не так ????? Вполне вероятно, что во время манипуляций по программированию памяти вы затерли сегмент с калибровочными константами. Если есть отладчик, то посмотрите содержимое памяти Flash по адресам 0x10C0-0x10FF. Если там сплошные 0xFF, то так и есть - калибровочные контакты были затерты при загрузке программы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
igorle 0 24 декабря, 2012 Опубликовано 24 декабря, 2012 (изменено) · Жалоба BCSCTL1 = XT2OFF + RSEL2 + RSEL1 + RSEL0; DCOCTL = CALDCO_16MHZ; BCSCTL1 = CALBC1_16MHZ; А если так попробовать? DCOCTL = CALDCO_16MHZ; BCSCTL1 = CALBC1_16MHZ; BCSCTL1 |= XT2OFF + RSEL2 + RSEL1 + RSEL0; В вашем-же случае третья строка перетирает данные, записанные в первой строке. Изменено 24 декабря, 2012 пользователем igorle Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shread 0 24 декабря, 2012 Опубликовано 24 декабря, 2012 · Жалоба Обычно вот такой кусочек втыкаю в прогу для детекта отсутствия нужных констант. От левых чисел не спасет, но все же) if (CALBC1_16MHZ ==0xFF || CALDCO_16MHZ == 0xFF) { while(1); } Внутри цикла по желанию. В простейшем случае прога трапается и далее не идет. И еще убедитесь что питание в норме для 16мгц(см даташит). Вполне может оказаться что питание маловато, и иногда работает, а иногда - нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fox1 0 25 декабря, 2012 Опубликовано 25 декабря, 2012 (изменено) · Жалоба А если так попробовать? 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 Изменено 25 декабря, 2012 пользователем fox1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fox1 0 25 декабря, 2012 Опубликовано 25 декабря, 2012 (изменено) · Жалоба Заработало на 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. Что там должно быть примерно ???? Изменено 25 декабря, 2012 пользователем fox1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 25 декабря, 2012 Опубликовано 25 декабря, 2012 · Жалоба Заработало на 15 МгцИнтересно, а как вы определили частоту? Частота DCO зависит как от установки RSEL и DCO, так и от температуры кристалла и напряжения питания. При RSEL=15 и DCO=7 диапазон частот генерируемый DCO находится от 16МГц до 26МГц. См. строку fDCO(15,7) DCO frequency (15, 7) в таблице DCO frequency на странице 42 в datasheet MSP430F249. Есть какой-либо прошивальщик bsl, который не затирает инфо мем, а шьет только программную память ???Программируйте через JTAG. Для него в программе обычно есть опция, которая сохраняет область INFO_A неизменной. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться