Jump to content

    

rezident

Свой
  • Content Count

    10744
  • Joined

  • Last visited

Community Reputation

0 Обычный

About rezident

  • Rank
    Гуру

Контакты

  • Сайт
    Array
  • ICQ
    Array

Recent Profile Visitors

8999 profile views
  1. Да, увидел. Дык правильно. Потому, что DC Generator (DCO) это генератор RC-типа. Битами FN задается эквивалент R, а точнее ток, которым заряжается C. Битами DCO задается величина емкости C (набором коммутируемых конденсаторов: 2^5=32 значения). Естественно, что без переключения величины R (только одними лишь конденсаторами) весь диапазон частот генератора перекрыть нельзя. Но битами DCO и MOD модулятор FLL может управлять автоматически (когда включена модуляция), а битами FN - нет. Поэтому коэффициент умножения, задаваемый N и D должен соответствовать диапазону выходных частот fDCO, который в свою очередь зависит от FN. Кстати, совсем не обязательно постоянно использовать модулятор FLL. Его можно включать периодически лишь для подстройки частоты fDCO. Зато при выключенном модуляторе частота будет меньше "болтаться". В кристаллах без FLL, имеющих лишь только DCO, программно-аппаратная (с помощью таймера) подстройка fDCO это вообще штатный hint. И все-таки хотелось бы узнать у топикстартера, зачем ему SMCLK именно 32768Гц?
  2. Посмотрев внимательно раздел Electical characterictics DCO в datasheet MSP430F4152 вынужден скорректировать свое сообщение: похоже, что нифига у вас не выйдет. :( Потому, что, судя по указанной таблице, генератор DCO не может генерировать частоту ниже 300кГц. А вывода для подключения внешнего резистора (RSEL) с помощью которого можно задавать ток для данного RC-генератора (как это было в некоторых старых моделях MSP430) у данного кристалла нет. Проверить, так ли это, можно установив описанный выше мной режим работы FLL и проанализировав через некоторое время после включения модулятора бит ошибки DCOF и значение модулятора. Если заданная частота достижима, то DCOF будет сброшен и в регистре модулятора будет ненулевое значение. Если же DCOF не сбрасывается и все биты DCOx и MODx в регистрах SCFI0 и SCFI1 равны нулю, то значит модулятор FLL "уперся" в нижнее значение и FLL синхронизироваться с опорной частотой 32768Гц не может.
  3. Задайте (с помощью битов FNx=0x00 задается самый нижний диапазон) частоту DC генератора fDCO=32768Гц*8. Делитель D для fDCO (с помощью битов FLLDx=0x3) выбираете 1/8. Предделитель для FLL =1 (N=0). Тогда на выходе DCO генерится fDCO=D*(N+1)*fLFXT=8*(0+1)*32768Гц. Соответственно после делителя fDCO/D=32768Гц*8/8=32768Гц. Выбрав правильные значения битов DCOPLUS и SELS, получаете на выходе SMCLK искомую частоту 32768Гц. Вот только, убей бог, не пойму, зачем вам это нужно? Ведь полученная таким образом от FLL частота будет модулированной и довольно нестабильной по фазе. Потому, что интегратор FLL поддерживает заданным СРЕДНЕЕ значение частоты на интервале интегрирования (а интегратор FLL всего 10 бит). Если вам нужны точные и стабильные 32768Гц, то используйте ACLK. Благо и SMCLK и ACLK ко всей периферии подведены ЕМНИП.
  4. Для того, чтобы флаги ошибок неиспользуемых генераторов не устанавливались эти генераторы нужно ВЫключить (установив биты XT2OFF и/или XT1OFF в регистре UCSCTL6). Общий флаг ошибки нужно сбрасывать в любом слечае, но перед этим предварительно выключив неиспользуемые генераторы. DCO выключать не нужно, его нужно использовать. Я всегда рекомендую тактировать само ядро MPS430 именно от DCO (плюсы: DCO удобно и быстро включается/выключется, в широких пределах на/под-страивается его частота). А вот периферию можно тактировать от любого удобного для вас источника тактирования- хоть встроенного, хоть внешнего. В том и состоит прелесть системы тактирования MSP430, что она позволяет тактироваться ядру и периферии от разных (асинхронных) источников.
  5. Вы не очень внимательно изучили раздел описания ADC12 из User's Manual. Перечитайте его еще раз, имея перед глазами картинку с блок-схемой АЦП на рисунке Figure 28-1. ADC12_A Block Diagram (Devices With REF Module). Особенно обратите внимание на содержание разделов, начиная с 28.2.5 Sample and Conversion Timing. Потому, что (имею основания так предполагать) вы не разобрались с самими режимами выборки и преобразования, со способами формирования сигнала выборки-преобразования и минимально необходимой длительностью этого сигнала.
  6. ИМХО у вас разрешено и возникает какое-то прерывание, для которого не определена функция его обработки. Поставьте "заглушки" типа for (;;); на все обработчики неиспользуемых векторов прерываний.
  7. "Подключить" означает "включить в исходник"? Или включить бинарный массив со шрифтами непосредственно в загружаемый файл? Если первое, то no problems - включайте в виде массива. Если второе, то в опциях проекта IAR есть дополнительная возможность загружать вместе в основной прошивкой кусочки дополнительных. См. Project->Options->Debugger->Images.
  8. MSP430F5528

    Насчет нумерации битов "Не верю!" (с)
  9. Это не глюк. Это фича :) Периферия в MSP430 работает независимо от ядра. Поэтому между двумя шагами в отладчике вы наблюдаете естественное изменение значения счетчика таймера, которому в принципе наплевать на вашу отладку с большой колокольни. Если хотите зафиксировать явное значение 0x0000 в TA1R, то разделите вашу команду на две. TA1CTL = TASSEL_2 | ID_3 | TACLR; TA1CTL |= MC_2; Первой командой устанавливается источник и частота тактирования таймера, а также сбрасывается значение TA1R. Второй командой выбирается режим счета и запускается счет. Кстати, изменять программно значение непосредственно TA1R при работающем таймере крайне или даже категорически не рекомендуется. Счетчик должен считать непрерывно в установленном режиме. Все манипуляции со считыванием значения TAxR и отсчетом временных интервалов можно делать через регистры сравнения TAxCCRx - они для этого и предназначены.
  10. MSP430F5528

    Нагрузочные конденсаторы в обвязке кварца имеются? Какой кварц и какие конденсаторы ставите? Свой код процедуры инициализации системы тактирования покажите. Часовой кварц на XT2 не работает и не должен работать. Допустимый диапазон частот для XT2: 4МГц...32МГц.
  11. WDT на MSP430F2012

    Как вариант. В процессе стирания кроме основной памяти вы стираете и область INFO, где хранятся калибровочные данные для DCO. Может эта частота где-то в вашей программе используется? Как вы проверяете частоту WDT? Для контроля частоты кварца выведите ACLK на пин P1.0 и проконтролируйте частоту.
  12. "Работало" вовсе не означает, что будет работать во всем диапазоне темперетур и напряжений питания. Цифры в даташите приведены с учетом гарантированной производителем рабочей частоты. Я потому так и написал: "согласно нее" (т.е. согласно формулы из даташита). Это конечно, так. Но исходный вопрос был про максимальную рабочую частоту SPI, а не про рабочую частоту ядра, необходимую, для "выгребания" потока данных на максимальной частоте SPI. ;)
  13. В datasheet MSP430F47197 на стр.51 в примечаниях к таблице USCI (SPI slave mode) (see Note 1, Figure 23, and Figure 24) приведена формула для расчета. Согласно нее для питания 3В получается что-то около 3,33МГц, для 2,2В - около 2,27МГц.
  14. Во-первых, следует уточнить, о каком компиляторе идет речь? Еслт речь про IAR, то просто читайте документацию. Генерация контрольной суммы в IAR это функция линкера xlink. Так что вам следует открыть документ xlink.ENU.pdf и найти там раздел с описанием ключа -j который служит для включения опции generates a checksum при линковке.
  15. Понятно, что АЦП измеряет мгновенное значение. Но вы не уточнили, при сравнении/фиксации про какое именное значение напряжения идет речь: пиковое за период наблюдения или про среднеквадратичное?