|
Как сохранить пару байт во FLASH?, FLASH & MSP430 |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 27)
|
Jan 9 2007, 15:02
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(exSSerge @ Jan 9 2007, 15:24)  После непродолжительной борьбы с этими сегментами я пришёл к выводу что при наших тиражах проще поставить внешнюю EEPROM с I2C или SPI интерфейсом - будет дешевле и быстрее. На самом деле использование/не использование внутренней FLASH MSP430 определяется несколькими факторами. - объем сохраняемой информации - частота сохранения записей и время единичной записи Если первый определяет в основном лишь сколько сегментов нужно резервировать во Flash под записи, то у второго контекст гораздо больше. Потому как тут вступают в силу многие факторы, например, ресурс Flash MSP430, минимальное время необходимое для записи в течение которого программа тормозится или может выполняться только из ОЗУ, минимальное время для резервирования питания и т.д. Так что ваш вывод не совсем верен.  Когда в очень простом, но серийном устройстве нужно сохранить с десяток байт, которые пользователь меняет скажем не чаще нескольких раз в день, то зачем мне доп. затраты в несколько $ на внешнюю EEPROM? Если я могу их спокойно добавить себе в прибыль, один раз, но досконально разобравшись с внутрипрограммным программирование Flash?
|
|
|
|
|
Jan 9 2007, 19:56
|
Частый гость
 
Группа: Свой
Сообщений: 182
Регистрация: 5-10-06
Пользователь №: 21 031

|
Цитата(HARMHARM @ Jan 9 2007, 12:57)  Это и есть удобный метод  Tak вот он какой, "северный олень".  Цитата Неспроста у MSP430 два сегмента памяти. Заполняете один записями, стираете второй и заполняете его, обеспечивая непрерывность процесса. Запись неплохо бы дополнить CRC. Если интересно, могу дать свой код, использующий эти сегменты, правда в очень простом варианте и с одним багом  P.S. На ассемблере. Кстати, эти сегменты везде по 128 байт. А байты презаписывать можно, но только нулевыми битами. Если один баг, то скинте пожалуйста. /У меня в программе есть пару - может скомпенсируют друг друга/
|
|
|
|
|
Jan 10 2007, 19:33
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(rezident @ Jan 9 2007, 16:02)  Цитата(exSSerge @ Jan 9 2007, 15:24)  ... я пришёл к выводу что при наших тиражах проще поставить внешнюю EEPROM с I2C или SPI интерфейсом - будет дешевле и быстрее...
...На самом деле использование/не использование внутренней FLASH MSP430 определяется несколькими факторами... Я в уже разработанное устройство, работающее с флэш, тоже поставил EEPROM по совокупности этих факторов. И еще одного фактора - мне кажется, что наличие кода стирания и записи флэш снижает надежность устройства, особенно при работе в условиях помех. Быо бы интересно услышать Ваше мнение.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Jan 10 2007, 20:54
|
Частый гость
 
Группа: Свой
Сообщений: 182
Регистрация: 5-10-06
Пользователь №: 21 031

|
Цитата(Dog Pawlowa @ Jan 10 2007, 19:33)  И еще одного фактора - мне кажется, что наличие кода стирания и записи флэш снижает надежность устройства, особенно при работе в условиях помех. Быо бы интересно услышать Ваше мнение. согласен
|
|
|
|
|
Jan 11 2007, 10:32
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(rezident @ Jan 10 2007, 23:44)  Цитата(Dog Pawlowa @ Jan 10 2007, 21:33)  И еще одного фактора - мне кажется, что наличие кода стирания и записи флэш снижает надежность устройства, особенно при работе в условиях помех. Быо бы интересно услышать Ваше мнение.
Без нормального супервизора питания использование внутрипрограммной перезаписи Flash вообще противопоказано! Ну, без нормального, желательно от TI, супервизора вообще использование MSP весьма чревато :-)
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Jan 11 2007, 15:07
|
Участник

Группа: Участник
Сообщений: 48
Регистрация: 5-12-06
Пользователь №: 23 143

|
Цитата Без нормального супервизора питания А встроенный чем плох?
|
|
|
|
|
Jan 11 2007, 16:06
|

читатель даташитов
   
Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999

|
Цитата(serg_ok @ Jan 11 2007, 14:07)  Цитата Без нормального супервизора питания А встроенный чем плох? В первую очередь тем, что он есть не во всех устройствах.
|
|
|
|
|
Jan 11 2007, 18:34
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Dog Pawlowa @ Jan 11 2007, 12:32)  Ну, без нормального, желательно от TI, супервизора вообще использование MSP весьма чревато :-) Dog Pawlowa, я не совсем понимаю, какую информацию (в виде лекции, теории, баек?) о надежности/ненадежности устройства с внутрипрограммным изменением Flash вы от меня ожидаете услышать? Я не Иоан Богослов чтобы являть откровения. Надежность устройства зависит от многих факторов, и отнюдь не только от наличия/отсутствия куска кода с программирования Flash. Я высказал лишь свое мнение в каком именно случае для меня предпочтительнее использовать внутреннюю Flash вместо доп. EEPROM. И я не утверждал, что это нужно делать всегда. А надежно это или не очень зависит от конкретной реализации.
|
|
|
|
|
Jan 11 2007, 21:06
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(rezident @ Jan 11 2007, 20:54)  Ну если байки вас устроят...  Спасибо, сам факт того, что в управлении двигателя использовался MSP430, уже интересен. Я в свое время побоялся и сделал на PIC'е, но поскольку последний с трудом поддается программированию  , значительная часть функций была решена аппаратно. А по существу проблемы - о возможности порчи флэш... Соблазн исключить супервизор всегда есть, так как приборы выпускаются тысячами. Пока сдерживает то, что BOD (не помню наверняка, а даташит под рукой сейчас нет) имеет похуже быстродействие, чем супервизор. То есть команда может сбиться, программа "улетит", и до срабатывания WDT натворит дел (сотрет ту же флэш, особенно если код этого стирания есть). Пожалуй, мне нужно перепроверить новые данные про MSP, в последнее время пришлось заниматься AVRом. Гроза... Конечно... Январь, однако...
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Jan 14 2007, 04:31
|
Частый гость
 
Группа: Свой
Сообщений: 182
Регистрация: 5-10-06
Пользователь №: 21 031

|
Цитата(Dog Pawlowa @ Jan 11 2007, 21:06)  Спасибо, сам факт того, что в управлении двигателя использовался MSP430, уже интересен. почему MSP430 так "опасен" для работы с мотором?
|
|
|
|
|
Jan 14 2007, 05:06
|
Частый гость
 
Группа: Свой
Сообщений: 182
Регистрация: 5-10-06
Пользователь №: 21 031

|
Цитата(el34 @ Jan 14 2007, 04:53)  да вроде не опасен... может из-за температурного диапазона?.... так у них температурный диапазон вроде не плохой - −40°C to 85°C
|
|
|
|
|
Jan 14 2007, 20:42
|
Частый гость
 
Группа: Свой
Сообщений: 182
Регистрация: 5-10-06
Пользователь №: 21 031

|
Цитата(Dog Pawlowa @ Jan 14 2007, 13:15)  Это скорее мотор "опасен" для работы с MSP. Мотор создает импульсные помехи, которые при отсутствии защиты от них "сбивают" контроллер. От импульсных помех можно защитить любой контроллер, и MSP в том числе, но встает вопрос цены этой защиты. У MSP430 так чуствительны пины или ритание?
|
|
|
|
|
Jan 15 2007, 00:33
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Lucky:) @ Jan 14 2007, 06:31)  Цитата(Dog Pawlowa @ Jan 11 2007, 21:06) 
Спасибо, сам факт того, что в управлении двигателя использовался MSP430, уже интересен.
почему MSP430 так "опасен" для работы с мотором? Кто сказал, что опасен? ;) MSP430 чувствителен к EMI ничуть не больше, чем любой другой контроллер. Просто вопросам EMI всегда нужно уделять должное внимание. Как-то в одном пилотном варианте устройства управления маломощным двигателем трассировщик неправильно по требованиям устойчивости к EMI оттрасировал цепь подключения к MSP430 высокочастотного кварцевого осциллятора. Его корпус и точку соединения конденсаторов обвески осциллятора посадил на "грязную" землю питания. Естественно осциллятор иногда сбоил. Не слишком критично (программа-то не зависала), но были неприятные моменты с управлением. Я адаптировал программу под использование DCO у MSP430. При той же самой схемотехнике, только с кварцем 32768Гц (который использовался только для калибровки DCO) результат по устойчивости работы оказался удовлетворительным. Схему переделали (устранили ошибку с трассировкой кварцевого осциллятора и его обвески), но программу, работающую на DCO оставили. Оказалось, что работа MSP430 на DCO устойчивее, чем с внешним осциллятором. Что впрочем и не удивительно  Насчет Цитата(el34 @ Jan 14 2007, 06:53)  да вроде не опасен... может из-за температурного диапазона?.... могу еще одну байку рассказать. Одному нашему клиенту не понравилось, что партия устройств (в которых применялся в т.ч. MSP430) у нас была в некрашенных алюминиевых корпусах. Они решили покрасить уже готовые устройства. Покрасили. Но по условиям применения краски она требовала сушки в печи. Так что после покраски прогнали все устройства через печь, где грели их до 105-110 градусов несколько часов. Ни одно устройство из более, чем 150 штук после такого издевательства, пока не отказало. MSP430 в этих устройствах естественно были уже запрограммированные. Конечно о надежности Flash в этих "печеных" устройствах можно будет говорить лет через 5-7-10, но факт "жарки" можно зафиксировать уже сейчас. P.S. Еще одно кстати. Климатику на холод (до -40) устройства на MSP430 проходят нормально. Проблема встречалась лишь на платах без покрытия при испытаниях на "росу".
|
|
|
|
|
Jan 15 2007, 09:42
|
Частый гость
 
Группа: Свой
Сообщений: 182
Регистрация: 5-10-06
Пользователь №: 21 031

|
-40 ... +100C ОООчень хорошо, что есть реальные свидетели. Цитата(jorikdima @ Jan 15 2007, 09:26)  Цитата только с кварцем 32768Гц (который использовался только для калибровки DCO) А расскажите в двух словах, это как? да Rezident, пожалуйста расскажите.
|
|
|
|
|
Jan 15 2007, 10:39
|

читатель даташитов
   
Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999

|
Я, правда, не rezident; но позволю себе ответить. Надеюсь он на меня не обидится  Дело в том, что в MSP430 есть внутренний тактовый RC-генератор DCO, который имеет возможность более-менее точной подстройки частоты битами RSELx, DCOx, MODx. Если ACLK работает от кварца 32768 Гц, то эта система потребляет немного, особенно если использовать кварц еще и для MCLK. А если надо резко ускориться и что-нибудь сделать, то можно включить DCO (заранее подстроенное под нужную частоту), быстренько сделать вычисления, и отключить DCO чтоб не жрал. Правда, надо помнить о том, что частота DCO меняется от температуры, и заранее подстроенная частота может уйти. Все это написано в slau049 в разделе 4.2.4.
Сообщение отредактировал HARMHARM - Jan 15 2007, 10:40
|
|
|
|
|
Jan 15 2007, 14:42
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(jorikdima @ Jan 15 2007, 11:26)  Цитата только с кварцем 32768Гц (который использовался только для калибровки DCO) А расскажите в двух словах, это как? Чтобы беспричинно "не умножать сущностей"  предлагаю почитать какой-нибудь application note на эту тему. Например, slaa074-Controlling the DCO Frequency of the MSP430x11x. Если вкратце, то DCO (встроенный в MSP430 генератор RC-типа) можно откалибровать, используя внешний осциллятор, путем подсчета (с помощью TimerA) числа импульсов от DCO в створе временнЫх ворот, формируемых от внешнего осциллятора. Естественно, чем больше разница в частотах DCO и осциллятора, тем точнее можно определить эту разницу. Поэтому при частоте DCO 1МГц и более используется часовой кварц 32768Гц. Нужно только не забывать, что - генератор на часовом кварце стартует весьма медленно (start-up до 1 секунды м.б.); - DCO (для MSP430x1xx) на унутренних R и C не дает частоты выше (примерно) 6.5МГц. Но при использовании внешнего резистора (Rosc) его можно гнать аж до сотни МГц. Однако при этом ядро MSP430 на такой частоте работать не сможет. Процедура калибровки (для MSP430x1xx) примерно такова (XT1 в режиме LFXT с кварцем 32768Гц). 1) ждем >1сек после подачи питания. 2) программируем TimerA. Источником его тактирования выбираем SMCLK=DCO. CCR2 таймера TimerA используем в режиме захвата (capture) с источником сигнала от CCI2B (это сигнал ACLK для всех этих кристаллов) и фиксацией по одному из фронтов. 3) по факту срабатывания защелки берем разницу между двумя "соседними" (последовательными) значениями CCR2. Это число (разница) и будет отношением двух частот SMCLK(DCO) и ACLK(32768Гц). 4) если нужно не просто знать значение частоты DCO, но и подогнать его частоту в некоторый диапазон чатот, то манипулируем с битами DCOx, MODx и RSELx регистров DCOCTL и BCSCTL1, а затем переходим снова на шаг 3.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|