Форум по микроконтроллерам: ПО работе с EEPROM - Форум по микроконтроллерам

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

ПО работе с EEPROM Нужна помощь по функции записи в EEPROM

#1 Пользователь офлайн   SDTUTM 

  • Прибывший
  • Группа: Пользователи
  • Сообщений: 4
  • Регистрация: 16 Март 19

Отправлено 16 Март 2019 - 04:00

Доброго времени суток всем. Нужна помощь. Может, кто сможетпомочь советом. Написана программа, точнее ее первая половина. Написана, для МК PIC16F877A. Написана, на Ассемблере. В программной среде IMPILAB. IDE V 7.3 Прогон работы кода программы ту же т.е в IMPILAB. IDE, с подключенным ПРОТЕУСом. По ходу выполнения программы некоторые данныедолжны переписываться во встроенную ЕЕРROM память. При прогоне через ПРОТЕУС все четко крутится, что тотЗингер! При опробовании на реальном макете с реальным МК просто глухо, НИКАК!!! Сначала заподозрил, что в МК просто не работает ЕЕРROM. Написал данные ручками впрограмматоре. Залил в МК. Все заработало как часы, т.е ЕЕРROM читается нормально. Что делать?Залез в интернет, наткнулся на упоминание о необходимости временной задержки вреальном МК. Правда не совсем ясно на кой фиг она нужна, если мы по ходупрограммы ждем появления бита окончания записи в ЕЕРROM. Это может быть либо бит EECON1,1 либо бит-флаг прерыванияпо окончанию записи вЕЕРROM т.е PIR2,4 .Я пробовал все и 20 мс задержки и контроль флагов, кстати когдафлагов, то прграмма стопорится и дальше ничего не происходит, этосвидетельствует о том, что запись не выполняется. Хотя напрямую изпрограмматора ПИШЕТСЯ!!! Тогда я заподозрил, что возможно дело в конфигурацииконтроллера. Я перетряс все слово конфигурации, я убирал его вааще и задавалконфигурацию из программатора напрямую. Все бесполезно. Такое ощущение, что ЕЕРROM наглухо заблокирована отзаписи именно от исполняемого кода программы. Хотя как такое может быть не представляю. Остается еще возможно вернутсяк временной задержке, но, куда в какое место программы ее правильно затулить яне понимаю, так же как и не понимаю ее необходимость. Убито две недели навыхлопе-0! Может кто то все таки переварил уже такую же проблему, будубеспредельно благодарен за подсказку!!! Просто жаль потраченного времени, да ипричину понять хотелось бы. Ниже фрагмент программы записи в ЕЕРROM как это написано у меня:

;**********************************************************************************

;Блокперезаписи данных из регистра DATA_BANK в рабочий регистр EEDATA. Далее изEEDATA в ячейку EEPROM

;садресом который синхронно копируется из временного регистра ADRS_BANK в рабочийрегистр EEADR.

;Включаетсятип используемой EEPROM памяти и включается режим записи.

;**********************************************************************************

FLEH_REC

BCF INTCON,7 ;Запретить все прерывания



CLRW

MOVF DATA_BANK,0

BCF STATUS,5

BSF STATUS,6

MOVWF EEDATA

BCF STATUS,5

BCF STATUS,6

CLRW

MOVF ADRS_BANK,0

BCF STATUS,5

BSF STATUS,6

MOVWF EEADR

CLRW

BSF STATUS,5

BCF EECON1,7 ; EEPROM в режиме памяти данных

BSF EECON1,2 ; EEPROM в режиме записи

CLRW

MOVLW 0X55

MOVWF EECON2

MOVLW 0XAA

MOVWF EECON2

CLRW

BSF EECON1,1 ; Включить запись

LOOP_FLEH

CLRWDT

BTFSC EECON1,1 ; Ожидать окончания записи

GOTO LOOP_FLEH

CLRF EECON2

BCF STATUS,5

BCF STATUS,6

INCF ADRS_BANK,1

CLRF DATA_BANK

RETURN ; Подпрограмма оконченна


0

#2 Пользователь офлайн   MAZ 

  • Консерватор - до мозга костей и суставов
  • Группа: Администраторы
  • Сообщений: 1 437
  • Регистрация: 15 Февраль 11
  • ГородРоссия

Отправлено 16 Март 2019 - 14:32

То что там внутри творится страшная тайна. :D
Попробуйте вот так. Прикрепленный файл  EEPROM.rar (971байт)
Количество загрузок:: 15
У меня никогда не подводило.
там стандартная процедура и пример чтения, записи
Если бы Бог не был консерватором, вместо десяти заповедей мы имели бы десять предложений
0

#3 Пользователь офлайн   SDTUTM 

  • Прибывший
  • Группа: Пользователи
  • Сообщений: 4
  • Регистрация: 16 Март 19

Отправлено 16 Март 2019 - 15:13

Просмотр сообщенияMAZ (16 Март 2019 - 14:32) писал:

То что там внутри творится страшная тайна. :D
Попробуйте вот так. EEPROM.rar
У меня никогда не подводило.
там стандартная процедура и пример чтения, записи


Здравствуйте! Большое спасибо за оперативный ответ! Я сейчас не дома, забрал себе ваш файл, как только доберусь до своего рабочего места обязательно попробую. И у меня к вам еще вопрос: представленный вами фрагмент вы делали под 877 МК или другой?
И еще вопрос: если я буду проверять работу программы не в Протеусе, а в IMPILAB. IDE вкладка " EEPROM" должна заполнится записанными данными? Или будут только FF?
Спасибо.
0

#4 Пользователь офлайн   MAZ 

  • Консерватор - до мозга костей и суставов
  • Группа: Администраторы
  • Сообщений: 1 437
  • Регистрация: 15 Февраль 11
  • ГородРоссия

Отправлено 16 Март 2019 - 18:12

Это файл Inc моей личной библиотеки, для среднего семейства пик. Единственно, назначение переменных, констант и т.д. делается в другом файле.
Когда делаю проект, не заморачиваюсь, прикрепляю этот файл, для работы с ЕЕПРОМ. В зависимости от задачи, добавляю процедуры записи, чтения в него.
Насчет Протеуса, не скажу. Не пользуюсь. Не люблю гонять круги на воде или гадать на кофейной гуще. :D
Вот пример файла, определения данных.
Прикрепленный файл  OPRED_DANNIX.rar (2,86К)
Количество загрузок:: 8
Внизу, в нем, все что связано с ЕЕПРОМ.
Как видно с 877А работает.
877 и 877А отличаются.
В симулятор Лаба все видно, будут записанные данные. Но это не идеально. Идеально в железе с отладчиком посмотреть
Если бы Бог не был консерватором, вместо десяти заповедей мы имели бы десять предложений
0

#5 Пользователь офлайн   SDTUTM 

  • Прибывший
  • Группа: Пользователи
  • Сообщений: 4
  • Регистрация: 16 Март 19

Отправлено 18 Март 2019 - 11:38

Здравствуйте. УРААА!!! ПОБЕДА!!! ЗАКОННЕКТИЛОСЬ!!! Причина неудачи как всегда на поверку оказалась банальной. Но, в какую хитроумную упаковку все было оформлено! Как я уже и рассказывал. когда я проверял в IMPILAB. IDE, но из подключенного ПРОТЕУСа все работало, хотя внешне все выглядело, что я работаю все таки в IMPILAB. После того, как я зашел в полный тупик, с этой гребанной EEPROM, я отключил ПРОТЕУС, и стал проверять работу только из под IMPILAB. Я увидел, что в IMPILAB оказывается ничего и ни куда не записывается. Тогда я уткнулся носом в кирпичную стенку и выбросил у вас на сайте аварийный буй. Крик был услышан и я получил от вас спасительное сообщение. Основным и огромным результатом вашего ответа явилось мной полного понимания, что все работает!,что дело не в МК, не в IMPILAB, не в программаторе, а только во мне. Я что то упустил. Тогда я позабыл о ПРОТЕУСе, и в IMPILAB начал пошагово прогонять эту подпрограмму. Я увидел, что просто перемудрил с подпрограммой именно записи. Но, что и сбило с толку, в ПРОТЕУСе ведь все работало! Как я для себя уяснил: в закладке DEBUG, IMPILABа мы выбираем режим прогона и под PROTEUS VSM, то проверка исполнения кода переходит к контролю ПРОТЕУСа, но он похоже, отслеживает только программу, а как дело доходит до команд касающихся работы со встроенными модулями, он не обращая внимания на наши человеческие ошибки просто подписывает работу соответствующего модуля из своей (правильной) библиотеки, при этом совершенно лишая видения ошибок при написании команд работы с перефирийными модулями. Еще раз вам спасибо за отклик, и хочу вот еще о чем вас спросить по ПРОТЕУСУ: Я к нему обратился только тогда, года понадобилось работать с модулем USART с внешними физическими устройствами. Как вы поступаете, в случае, если необходимо проверять работу программы с внешними устройствами? С уважением. Сергей.
0

#6 Пользователь офлайн   MAZ 

  • Консерватор - до мозга костей и суставов
  • Группа: Администраторы
  • Сообщений: 1 437
  • Регистрация: 15 Февраль 11
  • ГородРоссия

Отправлено 18 Март 2019 - 14:57

Собираю, черновик устройства на макетке, безпаячной. Подключаю к мк отладчик и гоняю все лабе, в режиме отладки. Устройство работает, программу всегда можно остановит, можно по шагово, изучить ошибку, посмотреть память, спецрегистры, флаги.
Если рассматривать протоколы. Особенно обмен. То хорошо подключить анализатор.
У меня вот такой. В нем можно выбрать какой режим тестируем, и он много чего подскажет.
Если бы Бог не был консерватором, вместо десяти заповедей мы имели бы десять предложений
0

#7 Пользователь офлайн   SDTUTM 

  • Прибывший
  • Группа: Пользователи
  • Сообщений: 4
  • Регистрация: 16 Март 19

Отправлено 22 Март 2019 - 01:53

Здравствуйте! Спасибо за описание. Наверное то, как вы делаете и проще и правильнее. А я вот как вы выражаетесь "Консерватор до мозга и костей" Сначала до потери пульса гоняю прогоны в программе, а потом собираю обычный старый

классический макет. Привык так. Консерватор знаете ли. Спасибо вам за общение и потраченное на меня время. Здоровья и творческих успехов. С уважением Сергей.

Прикрепленные изображения

  • Прикрепленное изображение: Макет.JPG

0

#8 Пользователь офлайн   MAZ 

  • Консерватор - до мозга костей и суставов
  • Группа: Администраторы
  • Сообщений: 1 437
  • Регистрация: 15 Февраль 11
  • ГородРоссия

Отправлено 22 Март 2019 - 14:43

Пожалуйста! Не претендую, на правильность и простоту. Мне так удобно. Вам тоже наверно удобно, по своему.
Если бы Бог не был консерватором, вместо десяти заповедей мы имели бы десять предложений
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей