Не указан конкретный PIC. У многих младших моделей программная запись во Flash не поддерживается, у других - возможна только блоками по 16 (32) слова, причем не с любого адреса - а кратного длине блока... В любом случае - при записи в Flash, Вы подвергаете программу потенциальной опасности разрушения в случае сбоя. Imho, запись констант во программую память можно использовать только в процессе начальной (заводской) настройки изделия, после которой оно подвергается обязательному тестированию. А для хранения констант, которые могут изменяться в процессе эксплуатации, нужно использовать только EEPROM. Ненадежность встроенной EEPROM, по моему, сильно преувеличена, если конечно не превышать заявленного ресурса стирания/записи. Но желательно защищать информацию, записываемую в EEPROM, контрольными суммами. Рекомендую, также, предусмотреть запасной фикисированный набор констант, по которым должны восстанавливаться значения рабочих констант, в случае сбоя EEPROM. Вот его уже нужно хранить в программной памяти, а определять значение этого набора - непосредственно при программировании или же на этапе заводской настройки изделия.
|