Цитата(jdhfdg @ Sep 27 2011, 06:25)

ходить по шагам пробовал, но толку мало.
в указанном месте просто выдает не то значение, которое записывал ранее.
да еще и неудобно жутко - когда идешь по шагам показывает не тот код, который сейчас выполняется, а тот в котором находится функция main. Но это отдельная история... Это в uvision. А в Silicon Laboratories дела с этим обстоят еще хуже...
Проходили такое. Это неправильно организован проект. Все сишные файлы должны билдиться (простите за сленг), а инклудиться только хедеры с объявлением функция, а не определением. Тогда отладка будет певеселее.
По существу. Во-первых, не возникает ли сброса по записи во флэш? Смотрим в RSTSRC или как он называется в данном камне?
Во-вторых, возможно все-таки, и скорее всего ошибка в проге. Попробуйте после однократной записи данных вообще запретить запись - либо залочить, либо в функции записи поставить проверку софтверного флага. Если залочите, а запись все-таки вызовется произойдет сброс по ошибке флэш.
А может сперва сделать как написал выше с файлом, содержащим функцию записи, или на крайний случай временно перенести функцию в файл с main и поставить брекпоинт в функции. Тем самым отловите непреднамеренный вызов функции.
UPD. Кстати, посмотрите в отладчике, что на самом деле записано в ячейке флэш когда она якобы испортилась, може не там ищем?