ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
9 июля
271162
POV (10.09.2011 13:41, просмотров: 2313)
Долго я приходил к мысли что с C8051F506 у меня проблемы при работе с flash. Сейчас ими занялся и.. решить не могу... Прога при запуске из флешки читает настройки и если контрольная сумма нехорошая, то восстанавливаются параметры по дефолту и записываются во флешь. На 125 и 410 процах (которые я до сих пор преимущественно и использовал - всё Ок). А вот с 506 траблы начались.. по ошибке записи во флешь (точнее при ее стирании, PSEE = 1) происходит сброс МК. Причём если идти пошагово, то всё нормально. Я тактовую понижал, и с регистром FLSCL баловался - ничего не помогает. На ряде плат всё работает (но прям вот так чётко утверждать не могу, пока в эксплуатации ни одной платы нет), а сейчас вот началось. В errata никаких фантазий на этот счёт нет. Алгоритм работы соответствует DS да и вообще взят с сайта производителя: void FLASH_PageErase (WORD addr) { bit EA_SAVE = EA; // Preserve EA char xdata * data pwrite; // FLASH write pointer EA = 0; // Disable interrupts VDM0CN = 0xA0; // Enable VDD monitor and high threshold RSTSRC = 0x02; // Enable VDD monitor as a reset source pwrite = (char xdata *) addr; FLKEY = 0xA5; // Key Sequence 1 FLKEY = 0xF1; // Key Sequence 2 PSCTL |= 0x03; // PSWE = 1; PSEE = 1 VDM0CN = 0xA0; // Enable VDD monitor and high threshold RSTSRC = 0x02; // Enable VDD monitor as a reset source *pwrite = 0; // Initiate page erase PSCTL &= ~0x03; // PSWE = 0; PSEE = 0 EA = EA_SAVE; // Restore interrupts }