Dmitry Dubrovenko 0 19 июня, 2019 Опубликовано 19 июня, 2019 · Жалоба Понадобилось тут для старого чипа PIC16F886 соорудить ПП перезаписи программного флэша. Даташит вот. Смотрю раздел 10 (стр. 110). На стр. 117 нарисована красивая картинка (а ранее про это говорится в тексте). В принципе, всё вроде бы понятно: грузим страницу по 8 слов в буфер, при последнем из восьми происходит автоматическая запись. Т.е. стандартный алгоритм страничной записи. Но везде говорят, что при этом стирается блок из 16 слов. Если бы говорили про 16 байт, я бы понял, а так что-то недоумеваю, как записывать-то? Приведённые экзамплы что-то тоже никакой ясности не внесли. Там на выбор и 8 слов и 16. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Driver_GV 1 19 июня, 2019 Опубликовано 19 июня, 2019 · Жалоба Там четко написано: Если стираем - то сразу блок 16 слов Если пишем то по 8 слов Они не обязаны быть равны. Если стерли - пишем два раза. И это не только в этом PIC , в остальных еще запутанней.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dmitry Dubrovenko 0 20 июня, 2019 Опубликовано 20 июня, 2019 · Жалоба В 19.06.2019 в 22:23, Driver_GV сказал: Там четко написано Если бы было чётко, никто вопросов не задавал. В 19.06.2019 в 22:23, Driver_GV сказал: Если стерли - пишем два раза Этот вывод, конечно, напрашивается, но всё же, это Ваше предположение, или практика? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
my504 2 21 июня, 2019 Опубликовано 21 июня, 2019 · Жалоба On 6/19/2019 at 10:23 PM, Driver_GV said: Там четко написано: Если стираем - то сразу блок 16 слов Если пишем то по 8 слов Они не обязаны быть равны. Проблема в том, что в этом МК НЕТ РЕЖИМА СТИРАНИЯ. Стирание происходит автоматически после загрузки 8-го слова флеша. И вот тут и возникает вопрос о том, как совместить стирание в 16-ти слов с записью 8-ми. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Driver_GV 1 21 июня, 2019 Опубликовано 21 июня, 2019 · Жалоба Писал на нем код лет 10 назад . Тоже долго разбирался. По памяти : 1 - Пишем блок 8 байт . Стираем блок 16 байт . Адрес начала блока должен быть выровнен (4 последних бита = 0 ) 2 - Пишем старший блок 8 байт . Адрес начала блока должен быть выровнен (3 последних бита = 0 ) Дополнительно https://www.microchip.com/forums/m332715.aspx И прочтите раздел PROGRAM FLASH MEMORY WRITE в этом документе http://ww1.microchip.com/downloads/en/DeviceDoc/40001305B.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
my504 2 22 июня, 2019 Опубликовано 22 июня, 2019 · Жалоба Ну я ему так и написал в ЛС на Радиокоте. Это следует из здравого смысла. ))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dmitry Dubrovenko 0 24 июня, 2019 Опубликовано 24 июня, 2019 · Жалоба В 21.06.2019 в 10:52, Driver_GV сказал: И прочтите раздел PROGRAM FLASH MEMORY WRITE в этом документе О, гран мерси! Это и требовалось. Но это же надо, куда запихнули. Почему бы в даташите было не указать... В 22.06.2019 в 10:13, my504 сказал: я ему так и написал Марк, не лукавьте. Не совсем так. А здравый смысл, не всегда соответствует документации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
my504 2 26 июня, 2019 Опубликовано 26 июня, 2019 · Жалоба On 6/24/2019 at 7:20 PM, Dmitry Dubrovenko said: Не совсем так. Совершенно так: Quote ...Скорее всего, стирание происходит только при прошивке первой половины блока стирания... Сравним с документом: Quote The first block written to a row erases the entire row. Consecutive block writes to the same row will not cause an additional row erase. Есть расхождения? Ну разве только в том, что последовательность записи половинок может быть любой. Для использования в бутлоадере совершенно не принципиально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться