Easyelectronics.ru

Электроника для всех
Текущее время: 26 май 2018, 11:28

Часовой пояс: UTC + 5 часов



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Запись в EEPROM
СообщениеДобавлено: 02 фев 2010, 03:57 
Заглядывает иногда

Зарегистрирован: 02 фев 2010, 03:49
Сообщения: 66
Не могу осуществить запись в EEPROM (проверка с помощью PIC SIMULATOR IDE) под pic16f676
чтение работает, но это - слабое утешение, зато катит как доказательство ненужности включения еще одного таймера
все как в примерах из сети и в даташите
вот код под меткой записи:
WriteInstruction macro
bank1
bsf EECON1, WREN
movf MemoryCounter,w
movwf EEADR
movf CurrInstruction,w
movwf EEDATA
movlw 55H
movwf EECON2
movlw 0AAH
movwf EECON2
bsf EECON1, WR ;Все пункты выполняются
check1 btfsc EECON1, WR ;а здесь проверка на законченность записи зацикливает программу
goto check1
bank0
endm

как я определил, что запись не осуществляется:
1. бит прерывания (GIE в PIR1) не программируется
2. бит записи (WR в EECON1) не очищается, даже вручную в PicSim
Кто-нибудь знает, где я так жестоко окарал?


Последний раз редактировалось asaid 02 фев 2010, 05:30, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запись в EEPROM
СообщениеДобавлено: 02 фев 2010, 11:00 
Старожил

Зарегистрирован: 29 янв 2010, 00:34
Сообщения: 818
Откуда: Санкт-Петербург
А errata не читал? http://ww1.microchip.com/downloads/en/D ... 80185F.pdf Хотя там немного о другом речь, похоже..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запись в EEPROM
СообщениеДобавлено: 02 фев 2010, 17:17 
Заглядывает иногда

Зарегистрирован: 02 фев 2010, 03:49
Сообщения: 66
A-10 писал(а):
А errata не читал? http://ww1.microchip.com/downloads/en/D ... 80185F.pdf Хотя там немного о другом речь, похоже..

В этом тексте вообще предлагают пользоваться прерываниями. Я хоть и впервые занимаюсь программированием мк, но догадываюсь в тайне, что использование прерываний тупиковый способ, и не хочу его юзать дадада


Перелопатив всю инфу в сети об EEPROM для pic'ов, выяснились следующие временные обстоятельства моей возможной неудачи:
1. не раз упоминалось, что запись производиться довольно долго
2. на каком-то форуме нашел, что первая запись у pic16f676 холостая неизвестно почему
http://www.microchip.ru/phorum/read.php ... eply_44945

чтобы проверить обе гипотезы, я зациклил запись в eeprom на всю величину памяти и поставил максимальную скорость на симуляторе и О ЧУДО, оно заработало

Но ячейки в EEPROM Memory Editor заполняются так медленно, что я с отвращением плюнул в распечатку даташита, где указано, что данная категория мк имеет очень быструю возможность записи в eeprom.

Буду писать в такой форме, благо результирующее устройство не ограничивает меня во времени записи.
Но может быть кто-нибудь подскажет, что я не учел?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запись в EEPROM
СообщениеДобавлено: 02 фев 2010, 17:54 
Старожил
Аватара пользователя

Зарегистрирован: 27 янв 2010, 12:18
Сообщения: 1259
Откуда: Moscow
asaid писал(а):
но догадываюсь в тайне, что использование прерываний тупиковый способ, и не хочу его юзать дадада


Уууйёёё.... выпала челюсть... А впустую молотить тактами задержи это что, лучше что-ли? Больше контроллеру нечем заняться? В крайнем случае его можно отправить спать, сэкономив электроэнергию. Запись EEPROM занимает порядка миллисекунд. Быстро - 1 мс, медленно - 10 и более. Всегда писал (не пишу более вообще) в EEPROM в фоне. Самый неудобный вид памяти.

Сохраняю в EEPROM только данные первоначальной инициализации программатором. На случай если отвалится внешнее хранилище или сильно программу поменяю (съедут адреса)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запись в EEPROM
СообщениеДобавлено: 02 фев 2010, 18:13 
Заглядывает иногда

Зарегистрирован: 02 фев 2010, 03:49
Сообщения: 66
THE BEAST писал(а):
asaid писал(а):
но догадываюсь в тайне, что использование прерываний тупиковый способ, и не хочу его юзать дадада


Уууйёёё.... выпала челюсть... А впустую молотить тактами задержи это что, лучше что-ли? Больше контроллеру нечем заняться?

Часы пусть будут в каждом контроллере! =))
THE BEAST писал(а):
Запись EEPROM занимает порядка миллисекунд. Быстро - 1 мс, медленно - 10 и более. Всегда писал (не пишу более вообще) в EEPROM в фоне. Самый неудобный вид памяти.
Сохраняю в EEPROM только данные первоначальной инициализации программатором. На случай если отвалится внешнее хранилище или сильно программу поменяю (съедут адреса)

А как же быть с данными, которые нужно сохранять во время работы и регенить после включения? EEPROM ведь для этого существует, иначе зачем EEPROM доступен для прошивки в режиме защиты протекцией?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запись в EEPROM
СообщениеДобавлено: 02 фев 2010, 18:19 
Заглядывает иногда

Зарегистрирован: 02 фев 2010, 03:49
Сообщения: 66
THE BEAST писал(а):
asaid писал(а):
Запись EEPROM занимает порядка миллисекунд. Быстро - 1 мс, медленно - 10 и более.

Эта фраза заставила меня пересмотреть свой код, оказывается в умопомрачительной гонке за наличием записи в память, я забыл указать обнуление 7го флага PIR1. Теперь все пишецо с ветерком =)
Всем спасибо!

WriteInstruction macro
bank1
bsf EECON1, WREN
movf MemoryCounter,w
movwf EEADR
movf CurrInstruction,w
movwf EEDATA
movlw 55H
movwf EECON2
movlw 0AAH
movwf EECON2
bsf EECON1, WR ;
check1 btfsc EECON1, WR ;
goto check1
bank0
bcf PIR1, 7 ;когда мы придем к власти, вообще все прерывания будут кастрированы на корню!))
endm


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запись в EEPROM
СообщениеДобавлено: 02 фев 2010, 18:42 
Старожил
Аватара пользователя

Зарегистрирован: 27 янв 2010, 12:18
Сообщения: 1259
Откуда: Moscow
asaid писал(а):
Часы пусть будут в каждом контроллере! =))


А причём тут часы? Кнопки тоже будут заблокированы на момент записи? Ну или реакция на внешние события?

asaid писал(а):
А как же быть с данными, которые нужно сохранять во время работы и регенить после включения? EEPROM ведь для этого существует, иначе зачем EEPROM доступен для прошивки в режиме защиты протекцией?


Я использую внешнюю FRAM. Надоели EEPROM глюки при пропадании питания на середине записи тех же установок. Да. использовал CRC. но вот что делать, если она погибла? Код инициализации писать? Уж пусть начальная инициализация тусуется в EEPROM, а из FRAM восстановить пусть медленнее, зато можно писать хоть каждый чих без опасения порушить структуру данных.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запись в EEPROM
СообщениеДобавлено: 02 фев 2010, 18:50 
Заглядывает иногда

Зарегистрирован: 02 фев 2010, 03:49
Сообщения: 66
убедиль


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запись в EEPROM
СообщениеДобавлено: 11 янв 2018, 15:33 
Здравствуйте!

Зарегистрирован: 11 янв 2018, 12:09
Сообщения: 1
Добрый день!
Используются ли калибровочные биты в pic16f628a b pic16f876a?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB