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

 
 
5 страниц V  « < 3 4 5  
Reply to this topicStart new topic
> СС430F5137 с нуля на asm, нужна помощь
vazz
сообщение Jan 5 2014, 22:43
Сообщение #61


Частый гость
**

Группа: Участник
Сообщений: 189
Регистрация: 21-01-10
Пользователь №: 54 971



То ли лыжи, то ли пол третьего ночи... Часовой кварц припаян, биты P5SEL[0/1] установлены, в регистре UCS включаю XT1 в режиме LF, выбираю емкость 12пФ при DRIVE=0, нифига не запускается... читаю дальше и вижу, что мне говорят: "мол, по-умолчанию, XT1 изначально настроен и сигнал подается на FLL с тактированием ACLK, только XT1 не включен. А если его включить, то, мол, он сразу отрубится и ACLK будет тактироваться от REFO, потому как наша умная система заметит нестабильность в работе XT1 и поднимет флаг XT1LFOFFG." Как я понял надо периодически пробовать сбрасывать этот флаг, и когда он перестанет автоматически подниматься из-за нестабильности генерации - тогда можно считать, что XT1 запустился и каким-то образом после этого переключить тактирование обратно с REFO на XT1. И по поводу внутренней емкости - на моих кварцах требо 12,5пФ, как я понял пины МК имеют собственнуюпаразитную емкость около 2пФ, т.е. нужна внутренняя емкость около 10пФ, или должно при 12 запуститься? Поможите люди добрые, а то голова реально разболелась, аж тРррРРРрррРРещит

Сообщение отредактировал vazz - Jan 5 2014, 22:43


--------------------
Не так страшна автоматизация, как её малюют.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 6 2014, 05:55
Сообщение #62


Гуру
******

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



Цитата(vazz @ Jan 6 2014, 03:43) *
в регистре UCS включаю XT1 в режиме LF, выбираю емкость 12пФ при DRIVE=0, нифига не запускается...

Начинаю художественное цитирование User's Guide sm.gif
Цитата
3.2.4 XT1 Oscillator
...
The drive settings of XT1 can be increased with the XT1DRIVE bits. At power up, the XT1 starts with the
highest drive settings for fast, reliable startup. If needed, user software can reduce the drive strength to
further reduce power.

can be совсем не то же самое, что must be, не так ли? Стартовать нужно при максимальном усилении (XT1DRIVE = 2) и только после старта, когда генератор уже "раскочегарился", можно пробовать уменьшить его. Кстати, XTS нужно не забыть сбросить, а то в LFXT mode генератор XT1 не переключится. А биты P5SEL, относящиеся к XT1, тоже не лишне будет установить. Я в очередной раз настоятельно рекомендую инициализировать все перифейрийные регистры явными значениями, не надеясь на их default state.
Цитата(vazz @ Jan 6 2014, 03:43) *
Как я понял надо периодически пробовать сбрасывать этот флаг, и когда он перестанет автоматически подниматься из-за нестабильности генерации - тогда можно считать, что XT1 запустился и каким-то образом после этого переключить тактирование обратно с REFO на XT1.

Можно тупо ждать, сбрасывая XT1LFOFFG, а можно и не ждать, выполняя программу инициализации дальше. Через 1 сек проверить, стартовал ли LFXT? А до тех пор REFO вполне заменяет часовой кварц.
Цитата(vazz @ Jan 6 2014, 03:43) *
И по поводу внутренней емкости - на моих кварцах требо 12,5пФ, как я понял пины МК имеют собственнуюпаразитную емкость около 2пФ, т.е. нужна внутренняя емкость около 10пФ, или должно при 12 запуститься?

Чтобы не быть плохим пересказчиком и не объяснять "на пальцах", рекомендую прочитать MSP430 32-kHz Crystal Oscillators и MSP430 LFXT1 Oscillator Accuracy. Лично я всегда закладываю два внешних конденсатора "на всякий случай". Ибо по законам физики последовательное соединение конденсаторов с одинаковой емкостью уменьшает их суммарную емкость ровно вдвое. Поэтому для кварца с нагрузочной емокстью 12,5пФ по теории требуется два конденсатора по 25пФ, включенных впараллель выводам генератора (относительно общей точки - земли), но последовательно относительно выводов кварцедержателя.
Go to the top of the page
 
+Quote Post
vazz
сообщение Jan 6 2014, 08:56
Сообщение #63


Частый гость
**

Группа: Участник
Сообщений: 189
Регистрация: 21-01-10
Пользователь №: 54 971



Короче все запускается, оказывается помимо PxSEL нужно и PxDIR правильно настроить, а у меня вход XIN гены был настроен как вход, а надо как выход, во какая хрень (очень "логично" надо заметить).

Еще вопрос, но уже касательно сброса:

Периодически замечаю, что в SYSRST регистр записывается, к примеру 0x08, хотя согласно Datasheet этот вектор зарезервирован (т.е. не относится к какому-либо конкретному источнику сброса). У меня то на этом векторе заглушка стоит изначально типа "нет прерывания" (аналогично значению 0x00). Просто интерсено - это глюк или как? А еще сейчас видел разок как сброс произошел от SVSL, т.е. от супервизора питания ядра, нехорошо это..


--------------------
Не так страшна автоматизация, как её малюют.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 6 2014, 09:16
Сообщение #64


Гуру
******

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



Цитата(vazz @ Jan 6 2014, 13:56) *
Короче все запускается, оказывается помимо PxSEL нужно и PxDIR правильно настроить, а у меня вход XIN гены был настроен как вход, а надо как выход, во какая хрень (очень "логично" надо заметить).

Согласно Table 54. Port P5 (P5.0 and P5.1) Pin Functions, приведенной в datasheet, для включения пинов XT1 достаточно установить P5SEL.0. При этом значение P5SEL.1 и P5DIR.0/P5DIR.1 рояли не играет. Оказывает влияние еще и бит XT1BYPASS, который относится к системе тактирования, а не к портам.
Цитата(vazz @ Jan 6 2014, 13:56) *
Периодически замечаю, что в SYSRST регистр записывается, к примеру 0x08, хотя согласно Datasheet этот вектор зарезервирован (т.е. не относится к какому-либо конкретному источнику сброса). У меня то на этом векторе заглушка стоит изначально типа "нет прерывания" (аналогично значению 0x00). Просто интерсено - это глюк или как?

Вы имеете в виду SYSRSTIV? Дык он расписан в User's Guide. Если значение меняется после подачи питания, то я бы начхал. После всей инициализации периферии значение SYSRSTIV можно сбросить любой записью в него, несмотря на то, что он описан как Read-only.
Цитата
Writing to this register clears all pending reset source flags.

А вот если что-то появляется SYSRSTIV уже после инициализации (в процессе выполнения основной программы), тогда можно и повыяснять причины.
Go to the top of the page
 
+Quote Post
vazz
сообщение Jan 6 2014, 09:28
Сообщение #65


Частый гость
**

Группа: Участник
Сообщений: 189
Регистрация: 21-01-10
Пользователь №: 54 971



Цитата(rezident @ Jan 6 2014, 13:16) *
... для включения пинов XT1 достаточно установить P5SEL.0. При этом значение P5SEL.1 и P5DIR.0/P5DIR.1 рояли не играет ...


Играет играет! я изменил PxDIR отвечающий за XT1IN со входа на выход и программа перестала мертво висеть в цикле ожидания очистки бита XT1LFOFFG. При комнатной температуре XT1DRIVE не особо важен при запуске, в мороз наверное лучше начинать с XT1DRIVE=3 (хотя наверное и от качества кварца зависит).

Опытным путем получены достоверные результаты, позволяющие сделать определенный вывод: если хотя бы один из битов P5DIR.0 или P5DIR.1 установлен (в т.ч. если установлены оба) генератор XT1 не запустится. Оба бита должны быть сброшены. Как ни удивительно, но то же самое касается и регистра P5REN.

А вообще чего удивляться то? Схема пинов P5.0/XIN и P5.1/XOUT представлена на стр. 100, 101 Datasheet. На схеме четко показано, что пины МК напрямую подключены к входу и выходу генератора XT1 (напрямую - это значит в обход всей логики порта). Поэтому можно сделать вывод и без опытных экспериментов о том, что и PxREN и PxOUT естественно будут шунтировать вх/вых. генератора, тем самым нарушая его нормальную работу (а при некоторых вариациях порта - полностью исключающих запуск генератора XT1).

Ну что ребятки, кто будет маляву bug report к их ti employee отправлять? оказывается don't care - это ввод в заблуждение, статья КОАП как минимум, однако sm.gif

Сообщение отредактировал vazz - Jan 6 2014, 10:14


--------------------
Не так страшна автоматизация, как её малюют.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 6 2014, 13:04
Сообщение #66


Гуру
******

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



Цитата(vazz @ Jan 6 2014, 14:28) *
Поэтому можно сделать вывод и без опытных экспериментов о том, что и PxREN и PxOUT естественно будут шунтировать вх/вых. генератора, тем самым нарушая его нормальную работу (а при некоторых вариациях порта - полностью исключающих запуск генератора XT1).

Не будут. Там присутствует еще и логика, отключающая выход и подтяжку при PxSEL != 0.
Цитата(vazz @ Jan 6 2014, 14:28) *
Ну что ребятки, кто будет маляву bug report к их ti employee отправлять? оказывается don't care - это ввод в заблуждение, статья КОАП как минимум, однако sm.gif

Прежде, чем "кидать предъявы" вы бы припаяли в схему конденсаторы по 12пФ и показали вашу процедуру инициализации LFXT.
Go to the top of the page
 
+Quote Post
vazz
сообщение Jan 6 2014, 13:36
Сообщение #67


Частый гость
**

Группа: Участник
Сообщений: 189
Регистрация: 21-01-10
Пользователь №: 54 971



Цитата(rezident @ Jan 6 2014, 17:04) *
вы бы припаяли в схему конденсаторы по 12пФ


Уверен, дело не в этом. Потому как генератор отлично запускается, а сбой в его работе наблюдается только в случаях описанных мной выше (сугубо из-за инициализации линий ввода вывода).

Цитата(rezident @ Jan 6 2014, 17:04) *
и показали вашу процедуру инициализации LFXT.


Инициализация порта:

Код
                  MOV.B #00000000b,&P5OUT      ; конфигурируем порт 5
                  MOV.B #11111100b,&P5DIR      ; (на P5.0 (вх.) и P5.1 (вых.)
                  MOV.B #11111100b,&P5REN      ; кварц 32.768кГц (XT1), PMC дл
                  MOV.B #00000000b,&P5DS       ; я P5 не задействован)
                  MOV.B #00000011b,&P5SEL


Запуск XT1 (LF), XDRIVE=3:

Код
                  BIC   #0x00FF,&UCSCTL6       ; настраиваем XT1 (32.768кГц)
                  BIS   #0x00CC,&UCSCTL6       ; подключаем внутр.C = 12 пФ
loop_wait_XT1:    BIC   #0x0002,&UCSCTL7
                  BIT   #0x0002,&UCSCTL7
                  JNZ   loop_wait_XT1


Цитата(rezident @ Jan 6 2014, 17:04) *
Не будут.


Очевидно, что шунтируют. У меня две платы с CC430 на борту и обе ведут себя одинаково. Можно было бы еще погрешить на порт маппинг контроллер, но его работа описана только для P1-P3, P5 функционирует без него.


--------------------
Не так страшна автоматизация, как её малюют.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 6 2014, 13:43
Сообщение #68


Гуру
******

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



Цитата(vazz @ Jan 6 2014, 18:26) *
Уверен, дело не в этом. Потому как генератор отлично запускается, а сбой в его работе наблюдается только в случаях описанных мной выше (сугубо из-за инициализации линий ввода вывода).

Уверенность это хорошо. Но плоха излишняя самоуверенность sm.gif Еще раз предлагаю вам припаять по конденсатору 12пФ ко входам XIN и XOUT так, чтобы суммарная емкость на каждом входе получалась около 24пФ. Нагрузочная емкость CL=24пФ/2=12пФ будет близка (с учетом 5% разброса керамики NP0) к номинальной 12,5пФ. У вас же сейчас кварц работает на CL всего лишь 6пФ=12пФ/2. При этом любой "чих" может приводить к проблемам с генерацией.
Тут еще можно вспомнить про баг XOSC8. Правда он характерен для других кристаллов MSP430. Но вы ведь наверняка про ESR кварцев пока вообще даже не задумывались, не так ли? wink.gif
P.S. пользуйтесь, пожалуйста, стандартными хедерами TI со стандартными обозначениями битов. В противном случае я не гарантирую, что у меня будет желание разбираться с "магическими" числами, которыми вы инициализируете регистры.
Go to the top of the page
 
+Quote Post
vazz
сообщение Jan 6 2014, 14:55
Сообщение #69


Частый гость
**

Группа: Участник
Сообщений: 189
Регистрация: 21-01-10
Пользователь №: 54 971



Честно говоря я уже погрузился в Unified Clock System, и чем глубже в лес, тем толще партизаны.. Думаю, типичное рабочее место TI Engineer's Departament выглядит примерно так:



Черт ногу сломит в этом МК, кишащем RC-генераторами да еще и со всякими примочками и приблудами... Эх.. Ладно..

Цитата(rezident @ Jan 6 2014, 17:43) *
При этом любой "чих" может приводить к проблемам с генерацией.


Ок, только у меня по-моему нет сейчас в распоряжении NP0 на 12пФ, но помоему есть 24пФ. Поэтому XCAP выставлю на 2пФ (как я подозреваю в этом случае емкость вообще не подключается, а используется собственная емкость пина) и подключу их. А еще, если не ошибаюсь есть 10пФ NP0/COG. Вобщем сейчас попробую... Эээээээ... только вспомнил, там на плате 0402, а у меня 0805 минимум, ради этого в офис не поеду.

Нарыл 4000шт COG 22пФ 5% 0805, сейчас припаяюсь и отпишусь.

Докладываю

Начальные условия:
XCAP = 2 пФ, внеш.C = 22 пФ COG 5% 0805 (корпус кварца припаян к общему, одна ножка внеш.конденсаторов припаяна XIN/XOUT, другая ножка припаяна в точку соединения корпуса кварца с общим). XT1DRIVE = 3. Температура окр.среды комнатная.

Результат:
По поводу влияния PxDIR, PxREN - все ровно также, как и при отсутвии внеш.конденсаторов. Единственное изменение - это увеличение времени запуска XT1, что не есть гуд.

Оффтоп: Надо мне побольше почитать про опыт применения внутренних емкостей, хочется верить, что "любой чих" не сбивает генерацию, т.к. время запуска значительно меньше, чем с конденсаторами суммарной емкостью 24пФ.

Еще немного результатов, не так важных, но мало ли может кому пригодиться.

Время запуска при комнатной температуре:

При внутр.C = 12 пФ + внеш. 22 пФ:

XT1DRIVE=0 - около 3 секунд
XT1DRIVE=3 - около 1,5 секунд

При внутр.C = 2 пФ + внеш. 22 пФ:

XT1DRIVE=0 - около 1 секунды
XT1DRIVE=3 - около 0,7...0,8 секунды

Сообщение отредактировал vazz - Jan 6 2014, 14:19


--------------------
Не так страшна автоматизация, как её малюют.
Go to the top of the page
 
+Quote Post
vazz
сообщение Jan 6 2014, 20:47
Сообщение #70


Частый гость
**

Группа: Участник
Сообщений: 189
Регистрация: 21-01-10
Пользователь №: 54 971



А можно мне совет?

Я что-то зря с этим XT1 походу заморачиваюсь, он мне по сути не нужен. Стабильность временных интервалов для меня важна только при работе модуля CC1101. Но он как я понимаю из описания полностью самостоятелен в плане тактирования (baudrate и т.д.) и тактируется от своего кварца. А мне по сути необходимо периодически просыпаться (примерно раз в 4 часа), мерить сигнал с записью его в ОЗУ + 10 секунд ожидать запрос хоста и засыпать снова (а если во время бодрствования пойман сигнал запроса данных, то передать эти данные хосту, после чего опять же уснуть). В 4 часах 14400 секунд, если предположить что погрешность DCO составит не более 5% в температурном диапазоне -40...+60 гр., то за 4 часа я получу ошибку отсчета времени в 12 минут, что в принципе не очень критично для моей задачи и вполне подойдет.

Так вот исходя из моей задачи мне можно оставить DCO (для тактирования ядра во время пробуждения и для периферии) и XT2 (для работы трасивера + тактирования ядра если возникла необходимость в быстром выполнении большого кол-ва операций). FLL мне тоже надо оставить для стабилизации DCO (чтобы ошибка 5% не стала больше). XT1, REFO и VLO я могу отключить и забыть про них (возможно вспомнив о них в других проектах). Правильно я мыслю? Как бы Вы сконфигурировали UCS? В том же составе или по другому?


--------------------
Не так страшна автоматизация, как её малюют.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 7 2014, 11:20
Сообщение #71


Гуру
******

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



Ну если вам на потребление начхать и 60мкА DCO vs 0,5мкА LFXT ничего не значат (не говоря уже о дестяке мА потребления генератора RF), то можно вообще ничего не отключать.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 6th August 2025 - 00:36
Рейтинг@Mail.ru


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