Страница 1 из 3

Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 19:22:14
kotbaris1
Здарова.
Столкнулся с проблемой, при записи во внешнее EEPROM 25AA040 пишет следующее:
"Page was not written because it is write protected proteus".
Хотя защитный бит для записи притянут к питанию... 6-я стр даташита http://ww1.microchip.com/downloads/en/D ... 21204E.pdf данные по SPI нормально передаются, о чем свидетельствуют показания дебагера. В чем может быть дело? (Использую PIC18F242).
Изображение

Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 19:31:49
Albert_V
Разделы 3.3 и 3.4 документации.

Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 20:48:55
kotbaris1
Albert_V писал(а):Разделы 3.3 и 3.4 документации.
Спасибо, с записью разобрался. Но со чтением беда...
пытаюсь считать данные, которые записаны в еепром, отправляю инструкцию на чтение, отправляю адрес 0x01 на чтение, где у меня лежит 0x05, читаю sspbuf, но там оказывается 0... уже который месяц не могу разобраться с приемом данных по spi, а он и тут нужен. Что делаю не так?

Код: Выделить всё

bcf TRISA,SS	
			
;передача инструкции
movlw 0x03	
MOVWF  SSPBUF 
instrycd
clrwdt
BTFSS  SSPSTAT, BF  
GOTO   instrycd

;передача адреса
movlw 0x01
MOVWF  SSPBUF 
adrd 
clrwdt
BTFSS  SSPSTAT, BF  
GOTO   adrd

	
;прием данных
movff  SSPBUF,0x40  
sdata40  
clrwdt
BTFSS  SSPSTAT, BF 
GOTO   sdata40	
	
bsf TRISA,SS

Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 20:58:59
Albert_V
Что бы что-то прочитать - надо нечто передать (что бы было тактирование от Master-а по SCK).
Не стесняйтесь читать документацию не только на EEPROM, но и на PIC18F242.

Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 21:43:18
kotbaris1
Albert_V писал(а):Что бы что-то прочитать - надо нечто передать (что бы было тактирование от Master-а по SCK).
Не стесняйтесь читать документацию не только на EEPROM, но и на PIC18F242.
Вот не поверите, читал. Второй месяц читаю, а не получается. Может быть я идиот клинический) И примера там явного с кодом нет =(

Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 22:06:43
Albert_V
Тогда ответьте на вопрос: Какие данные вы считываете из SSPBUF, если у вас нет тактирования для чтения данных из EEPROM?
Может, надо вначале понять что такое Shift Register и посмотреть FIGURE 15-2: SPI MASTER/SLAVE CONNECTION?

Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 22:17:19
kotbaris1
Albert_V писал(а):Тогда ответьте на вопрос: Какие данные вы считываете из SSPBUF, если у вас нет тактирования для чтения данных из EEPROM?
Никакие значит.
Можете объяснить, как мне читать тогда их?
movf 0xXX,W
movwf SSPBUF
это я что-то передаю, а дальше чтоли?
movff sspbuf,0xXX

Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 22:21:02
Albert_V
Ага.
После заказа чтения, передаёте что угодно (я, обычно, "швыряю" 00h) и по окончании передачи читаете SSPBUF.
----
P.S.
На мой взгляд, удобнее работать по прерыванию от MSSP.

Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 22:37:37
kotbaris1
Albert_V писал(а):Ага.
После заказа чтения, передаёте что угодно (я, обычно, "швыряю" 00h) и по окончании передачи читаете SSPBUF.
----
P.S.
На мой взгляд, удобнее работать по прерыванию от MSSP.
не пашет(

Код: Выделить всё

bcf TRISA,SS				
;передача инструкции
movlw 0x03	
MOVWF  SSPBUF 
instrycd
clrwdt
BTFSS  SSPSTAT, BF  
GOTO   instrycd
;передача адреса
movlw 0x01
MOVWF  SSPBUF 
adrd 
clrwdt
BTFSS  SSPSTAT, BF  
GOTO   adrd

	
;прием данных
movlw 00h
movwf  SSPBUF
movff  SSPBUF,0x40  
sdata40  
clrwdt
BTFSS  SSPSTAT, BF 
GOTO   sdata40

	
bsf TRISA,SS	

Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 22:39:45
Albert_V
Я специально подчеркнул условие для чтения SSPBUF.
Вы же, пытаетесь считать данные до их получения....

Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 22:42:53
kotbaris1
Albert_V писал(а):Я специально подчеркнул условие для чтения SSPBUF.
Вы же, пытаетесь считать данные до их получения....
так тоже не пашет(

Код: Выделить всё

;прием данных
movlw 00h
movwf  SSPBUF
sdata40  
clrwdt
BTFSS  SSPSTAT, BF 
GOTO   sdata40
movff  SSPBUF,0x40

Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 22:45:51
Albert_V
Если будете работать по прерыванию от MSSP - всё получится.
Неужели сложно разобраться в FIGURE 15-3?

Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 22:54:53
kotbaris1
Albert_V писал(а):Если будете работать по прерыванию от MSSP - всё получится.
Неужели сложно разобраться в FIGURE 15-3?
Она никакой информации по тому, как принять данные не дает. Только как они отправляются. Так а чего не работает подобный метод, а нужно через прерывания?

Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 22:58:28
Albert_V
kotbaris1 писал(а): чего не работает подобный метод, а нужно через прерывания?
Что-то ещё является признаком окончания передачи байта кроме SSPIF?

Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 23:02:47
Аlex
На этот камень есть даже Русский перевод даташита, в котором всё расписано/разжёвано вдоль и поперёк.
Какие могут тут появляться вопросы....

Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 23:03:57
kotbaris1
Albert_V писал(а):
kotbaris1 писал(а): чего не работает подобный метод, а нужно через прерывания?
Что-то ещё является признаком окончания передачи байта кроме SSPIF?
По даташиту он отвечает только за то, что выполнено условие прерывания если в 1.

Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 23:07:43
Albert_V
По даташиту, на FIGURE 15-3, указано когда поднимается SSPIF и когда происходит запись SSPSR to SSPBUF.
Что ещё нужно?

Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 23:37:08
kotbaris1
Albert_V писал(а):По даташиту, на FIGURE 15-3, указано когда поднимается SSPIF и когда происходит запись SSPSR to SSPBUF.
Что ещё нужно?
Ничего, но это не мешает тому, что у меня второй месяц это не пашет.

Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 23:38:50
Albert_V
kotbaris1 писал(а):это не мешает тому, что у меня второй месяц это не пашет.
А у меня работает (по SSPIF).
У кого из нас ошибка?

Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM

Добавлено: Чт апр 20, 2017 23:48:29
kotbaris1
Albert_V писал(а):
kotbaris1 писал(а):это не мешает тому, что у меня второй месяц это не пашет.
А у меня работает (по SSPIF).
У кого из нас ошибка?
Так ясно что у меня))
Можете пример кода показать?