Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 09.01.2011, 13:50  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Глупый вопрос. Как писать EEPROM PIC18?

В общем, всегда пользовался встроенной библиотекой. А тут возникла проблема. Откуда - понять не могу. Вот моя тема на форуме MikroElektronika:

Короче говоря, процедуры eeprom_read и eeprom_write вызывают кучу ошибок в протеусе при работе с PIC18.
Решил писать свою библиотеку строго по даташиту.
Для чтения написал такую функцию:
Цитата:
sub function ee_flt_read (dim adrs as byte) as float
eecon1.cfgs=0
eecon1.EEPGD=0
eecon1.rd=1
eeadr=adrs
lo(result)=eedata
inc(adrs)
eeadr=adrs
hi(result)=eedata
inc(adrs)
eeadr=adrs
higher(result)=eedata
inc(adrs)
eeadr=adrs
highest(result)=eedata
end sub
Если по пунктам, получается так:
1) Стираем бит cfgs в регистре eecon1
2) Стираем бит eepgd в eecon1
3) Ставим бит rd в eecon1
4) Адрес ячейки заносим в eeadr
5) Читаем данные на следующий цикл из eedata
Это протеус принимает и нормально работает.
Но с записью я так и не разобрался. Помогите, пожалуйста. Придется переписывать библиотеку.
Реклама:
Easyrider83 вне форума  
Непрочитано 09.01.2011, 14:01  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,535
Сказал спасибо: 172
Сказали Спасибо 1,561 раз(а) в 811 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: Глупый вопрос. Как писать EEPROM PIC18?

Сообщение от Easyrider83 Посмотреть сообщение
Но с записью я так и не разобрался. Помогите, пожалуйста.
1) Стираем бит cfgs в регистре eecon1
2) Стираем бит eepgd в eecon1
3) Адрес ячейки заносим в eeadr
4) Заносим байт данных в eedata
5) Ставим бит wren в eecon1 (разрешаем запись)
6) Запрещаем прерывания
7) Записываем 0x55 в eecon2
8.) Записываем 0xAA в eecon2
Цитата:
MOVLW 0x55
MOVWF EECON2
MOVLW 0xAA
MOVWF EECON2
9) Ставим бит wr в eecon1 (инициируем процедуру записи)

Последовательность чтения у вас немного не верна. Сначала надо занести нужный адрес в EEADR, а только потом устанавливать бит RD(инициирование чтения).

Последний раз редактировалось realid; 09.01.2011 в 14:06.
realid вне форума  
Сказали "Спасибо" realid
Easyrider83 (09.01.2011)
Непрочитано 09.01.2011, 14:30  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: Глупый вопрос. Как писать EEPROM PIC18?

Ещё нужно дождаться окончания записи в EEPROM и желательно по окончанию установить EEPGD в единицу. Не знаю как в Васике, а на СИ знаю две темы где народ напоролся на "чудеса", т.к. если после операции записи в EEPROM будет табличное чтение из памяти программ...

P.S: Указывайте всегда полное название проца, не так уж это трудно, не забывайте про ERRATA.

Последний раз редактировалось st_1; 09.01.2011 в 14:32.
st_1 вне форума  
Эти 2 пользователя(ей) сказали Спасибо st_1 за это сообщение:
Easyrider83 (09.01.2011), ТКН (09.01.2011)
Непрочитано 09.01.2011, 17:30  
awtoap
Прописка
 
Регистрация: 11.04.2006
Сообщений: 197
Сказал спасибо: 80
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
awtoap на пути к лучшему
По умолчанию Re: Глупый вопрос. Как писать EEPROM PIC18?

Заканчивайте играццо со шпротеусом и увидите на сколько облегчите себе жизнь...собственно на форуме микрое вам тоже самое сказали.
awtoap вне форума  
Непрочитано 09.01.2011, 19:55  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Глупый вопрос. Как писать EEPROM PIC18?

Всем спасибо! Процедура пошла. Протеус ошибок не выдает.
На счет отказаться от протеуса - спасибо, не надо таких советов. Как и зачем я его использую - отдельная тема дискуссии. Для меня это очень удобное и универсальное средство разработки, с помощью которого я экономлю кучу времени.
Процедура выглядит так:
Цитата:
eecon1.cfgs=0
eecon1.eepgd=0
eeadr=adress
eedata=dat
eecon1.wren=1
eecon2=0x55
eecon2=0xAA
eecon1.wr=1
while eecon1.wr=1 wend
eecon1.eepgd=1
Easyrider83 вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Милениум-2000 Uragan90 Отвлекитесь, эмбеддеры! 16 17.07.2010 00:21
[Решено] Как внедрялась АСУ chermnv Отвлекитесь, эмбеддеры! 743 14.02.2010 23:11
[Решено] Третье Послание Человечеству lelkanet Отвлекитесь, эмбеддеры! 201 06.01.2010 00:33


Часовой пояс GMT +4, время: 16:10.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot