В общем, всегда пользовался встроенной библиотекой. А тут возникла проблема. Откуда - понять не могу.
Вот моя тема на форуме 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
Это протеус принимает и нормально работает.
Но с записью я так и не разобрался. Помогите, пожалуйста. Придется переписывать библиотеку.