Например TDA7294

Форум РадиоКот • Просмотр темы - Проблемы со SPIMEM. Запись во внешнюю EEPROM
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 25, 2024 00:31:07

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 55 ]    , 2,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Чт апр 20, 2017 23:50:30 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 4
Медали: 1
Получил миской по аватаре (1)
Блин, да флаг IF нужно проверять, а не BF :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Пт апр 21, 2017 00:01:03 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
kotbaris1 писал(а):
Можете пример кода показать?
Если разберётесь (вырезка из программы под PIC18F26K22)....
В прерывании:
Спойлер
Код:
;----------
HighInt
   movff   STATUS,STATUS_TEMPH
   movff   WREG,WREG_TEMPH
   movff   BSR,BSR_TEMPH
   BANK1
;----------
   btfsc   PIR3,SSP2IF
   goto   SSP2INT

   goto   HINTEND
;----------
SSP2INT
   bcf   PIR3,SSP2IF
;
   bsf   _SSP2INT   ; Программный бит (в некоем регистре)
   movf   SSP2BUF,W
   movwf   TEMPSSPBUFF   ; Отсюда прочитаете значение SSPBUFF после того, как поднимется программный бит _SSP2INT
;----------
HINTEND
;
   movff   BSR_TEMPH,BSR
   movff   WREG_TEMPH,WREG
   movff   STATUS_TEMPH,STATUS
   RETFIE   FAST
;----------
Ожидание окончания передачи байта в MAIN-е (низший приоритет в программе)
Спойлер
Код:
;*****************************************************************************
WAITSPI2
   btfss   _SSP2INT
   goto   WAITSPI2
;
   bcf   _SSP2INT
;
   RETURN
;*****************************************************************************

-------
Флаг SSP2IF без разрешения прерывания в PIC18 не выставляется!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Пт апр 21, 2017 00:33:40 
Первый раз сказал Мяу!

Зарегистрирован: Ср окт 21, 2015 23:33:35
Сообщений: 30
Рейтинг сообщения: 0
Аlex писал(а):
Блин, да флаг IF нужно проверять, а не BF :)

Если не проверять BF, то на дебагере биты данных что в приеме что в отправке показываются знаком вопроса =)
Но спасибо всем, я решил проблему. В дебагер приходит нужное значение из нужной ячейки, НО, в регистр из буфера копируется что-то непонятное... вот скрин. мое значение 0x05, копирую из буфера в регистр, а туда копируется 0x82...
Изображение


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Пт апр 21, 2017 00:35:56 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
Мне сложно что-то сказать про ваш дебаггер, поскольку у меня ICD3 (оригинальный) и я работаю с реальным "железом".
------
P.S.
После записи в SSPBUF очередного байта - по получению прерывания всё равно (надо или нет) нужно читать SSPBUF!!!


Последний раз редактировалось Albert_V Пт апр 21, 2017 00:41:45, всего редактировалось 1 раз.

Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Пт апр 21, 2017 00:39:27 
Первый раз сказал Мяу!

Зарегистрирован: Ср окт 21, 2015 23:33:35
Сообщений: 30
Рейтинг сообщения: 0
Albert_V писал(а):
Мне сложно что-то сказать про ваш дебаггер, поскольку у меня ICD3 (оригинальный) и я работаю с реальным "железом".

Да не в нем дело... Вот отослал я данные, проверил пока отошлются (флаг BF), потом проверяю SSPIF, когда он в единице переписываю данные из регистр и все. Откуда может взяться не то значение? Мне приходит 3 байта, 0xFF,0xFF, и мой 0x05. Все они как я понимаю, приходят в SSPBUF. Так вот, как мне выцепить оттуда именной мой последний байт?
Еще предупреждение пишет
"Data written SSPBUF whilst MSSP (in master mode) is active - data has been ignored"


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Пт апр 21, 2017 00:47:31 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
kotbaris1 писал(а):
Еще предупреждение пишет

Ну и какого вы забиваете буфер, когда он ещё занят?
Документацию читать будете?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Пт апр 21, 2017 01:06:20 
Первый раз сказал Мяу!

Зарегистрирован: Ср окт 21, 2015 23:33:35
Сообщений: 30
Рейтинг сообщения: 0
Albert_V писал(а):
kotbaris1 писал(а):
Еще предупреждение пишет

Ну и какого вы забиваете буфер, когда он ещё занят?
Документацию читать будете?

да когда ж он занят, если SSPIF в 1 стоит. Ошибки той уже нет. я лоханулся с btfss и btfsc
Что именно в коде не так?
Код:
movlw 0x20
movwf  SSPBUF
sdata40 
clrwdt
BTFSS  SSPSTAT, BF
GOTO   sdata40
btfsc PIR1,SSPIF
goto givemedate
from_givemedate
incf 0x41
bsf TRISA,SS   


Код:
givemedate

incf 0x30
movf SSPBUF,W
movwf 0x45
bcf PIR1,SSPIF
goto from_givemedate


По моему все в точности как вы говорили.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Пт апр 21, 2017 13:44:18 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
Выше я дал вам пример кода.
Если не поняли, после записи байта в SSPBUF надо "сказать" CALL WAITSPI2 и ждать выхода из подпрограммы (и, естественно, в тексте нужно подправить названия регистров).
Не пропустили в моём тексте про то, что нужно всегда читать SSPBUF после окончания передачи байта?
Если хотите трахаться с программой ещё два месяца продолжать проверять флаг SSPSTAT,BF - это ваше право.
-----
P.S.
Специально для вас:
Можете вообще никаких флагов не проверять, поставив "тупую задержку в цикле" после записи байта в SSPBUF на время передачи байта по SPI умноженное на 1,5. :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Сб апр 22, 2017 21:59:31 
Первый раз сказал Мяу!

Зарегистрирован: Ср окт 21, 2015 23:33:35
Сообщений: 30
Рейтинг сообщения: 0
Albert_V писал(а):
Выше я дал вам пример кода.
Если не поняли, после записи байта в SSPBUF надо "сказать" CALL WAITSPI2 и ждать выхода из подпрограммы (и, естественно, в тексте нужно подправить названия регистров).
Не пропустили в моём тексте про то, что нужно всегда читать SSPBUF после окончания передачи байта?
Если хотите трахаться с программой ещё два месяца продолжать проверять флаг SSPSTAT,BF - это ваше право.
-----
P.S.
Специально для вас:
Можете вообще никаких флагов не проверять, поставив "тупую задержку в цикле" после записи байта в SSPBUF на время передачи байта по SPI умноженное на 1,5. :)))

Эхехехе. Вы, помоему, мне так и не сможете помочь.
Реализация с задержкой. На выходе в SSPBUF лежит 0xA2, а не 0x45!!! Которое показано, что принялось. Аналогичный результат я кидал выше, с проверкой флага SSPIF, где вы сказали, что не надо проверять BF. В даташите написано, что BF проверяется чтобы понять произошла ли запись в буфер. Если его не проверять, а проерять просто SSPIF, то нихрена не пересылается и не принимается вообще.
Вот реализация с задержкой. А ниже скрин, какое число должно быть получено, а какое итогу лежит в регистре.
Спойлер
Код:
movlw 0x00
bcf TRISA,SS
movlw 0x03   
MOVWF  SSPBUF
instrycd
clrwdt
BTFSS  SSPSTAT, BF 
GOTO   instrycd
;передача адрес по которому читаем
movlw 0x02
MOVWF  SSPBUF
adrd
clrwdt
BTFSS  SSPSTAT, BF 
GOTO   adrd

   
;передаем 0 чтобы было тактирование
movlw 0x00
movwf  SSPBUF
sdata40 
clrwdt
BTFSS  SSPSTAT, BF
GOTO   sdata40
call WAIT
movf SSPBUF,W
movwf 0x45
;btfsc PIR1,SSPIF
;goto givemedate
;from_givemedate
incf 0x41
bsf TRISA,SS
......
......
;получаем данные из памяти
;givemedate
;movf SSPBUF,W
;movwf 0x45
;incf 0x30
;bcf PIR1,SSPIF
;goto from_givemedate      



Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Сб апр 22, 2017 22:02:31 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
После записи в SSPBUF очередного байта - по получению прерывания всё равно (надо или нет) нужно читать SSPBUF!!!
Так видно?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Сб апр 22, 2017 22:05:32 
Первый раз сказал Мяу!

Зарегистрирован: Ср окт 21, 2015 23:33:35
Сообщений: 30
Рейтинг сообщения: 0
Albert_V писал(а):
Так видно?
После записи в SSPBUF очередного байта - по получению прерывания всё равно (надо или нет) нужно читать SSPBUF!!!

Читать даже после отправке инструкций в память?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Сб апр 22, 2017 22:09:59 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
Наконец-то поняли.
Именно ТАК (не зависимо от того что передаёте в понимании, в вашем случае, EEPROM-а)!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Сб апр 22, 2017 22:27:49 
Первый раз сказал Мяу!

Зарегистрирован: Ср окт 21, 2015 23:33:35
Сообщений: 30
Рейтинг сообщения: 0
Albert_V писал(а):
Наконец-то поняли.
Именно ТАК (не зависимо от того что передаёте в понимании, в вашем случае, EEPROM-а)!!!

Сделал так. Но результат аналогичен -- пишет 0xA2 в регистр, а не 0x45.... Читаю SSPBUF после каждой отправки данных --
Проверяю установку SSPIF в 1, потом читаю SSPBUF.
Спойлер
Код:
;передача инструкции на чтение
bcf TRISA,SS   
movlw 0x03   
MOVWF  SSPBUF
instrycd
clrwdt
BTFSS  SSPSTAT, BF 
GOTO   instrycd
;Ждем пока установится SSPIF в 1         
SSP1
btfss PIR1,SSPIF
goto SSP1
;Читаем SSPBUF
movf SSPBUF,W
movwf 0x45
;Сбрасываем SSPIF
;bcf PIR1,SSPIF
            
;передача адрес по которому читаем
movlw 0x02
MOVWF  SSPBUF
adrd
clrwdt
BTFSS  SSPSTAT, BF 
GOTO   adrd
;Ждем пока установится SSPIF в 1         
SSP2
btfss PIR1,SSPIF
goto SSP2
;Читаем SSPBUF
movf SSPBUF,W
movwf 0x45         
;Сбрасываем SSPIF
;bcf PIR1,SSPIF   
            
            
;передаем 0 чтобы было тактирование
movlw 0x00
movwf  SSPBUF
sdata40 
clrwdt
BTFSS  SSPSTAT, BF
GOTO   sdata40
;Ждем пока установится SSPIF в 1         
SSP3
btfss PIR1,SSPIF
goto SSP3
;Читаем SSPBUF
movf SSPBUF,W
movwf 0x45
;Сбрасываем SSPIF
;bcf PIR1,SSPIF
bsf TRISA,SS   


причем байты sspbuf после передачи инструкций пишутся верно... а с этим баг какой-то

Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Сб апр 22, 2017 22:43:29 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
Почему закомментировано:
;Сбрасываем SSPIF
;bcf PIR1,SSPIF
???


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Сб апр 22, 2017 22:51:06 
Первый раз сказал Мяу!

Зарегистрирован: Ср окт 21, 2015 23:33:35
Сообщений: 30
Рейтинг сообщения: 0
Albert_V писал(а):
Почему закомментировано:
;Сбрасываем SSPIF
;bcf PIR1,SSPIF
???

Тестил. Оно откоментировано все. проблема не в этом...(


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Сб апр 22, 2017 22:53:38 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
В моём примере пробовали разобраться?
Он рабочий (в железе).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Сб апр 22, 2017 22:56:58 
Первый раз сказал Мяу!

Зарегистрирован: Ср окт 21, 2015 23:33:35
Сообщений: 30
Рейтинг сообщения: 0
Albert_V писал(а):
В моём примере пробовали разобраться?
Он рабочий (в железе).

Я разобрался как видите. Но как это влияет на то что у меня такая трабла? Или вы что-то еще скрываете?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Сб апр 22, 2017 22:59:34 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
kotbaris1 писал(а):
Я разобрался как видите....

Не вижу.
У меня, в отличии от вас, работа по прерыванию и нет проверки SSPSTAT,BF.
Так что, это ваша некая редакция некоего текста программы.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Сб апр 22, 2017 23:12:04 
Первый раз сказал Мяу!

Зарегистрирован: Ср окт 21, 2015 23:33:35
Сообщений: 30
Рейтинг сообщения: 0
Albert_V писал(а):
kotbaris1 писал(а):
Я разобрался как видите....

Не вижу.
У меня, в отличии от вас, работа по прерыванию и нет проверки SSPSTAT,BF.
Так что, это ваша некая редакция некоего текста программы.

Так какая разница, прерывание или нет. Вы мне сами говорили, что хоть через задержку делай. Через задержку аналогично все, бит танных по пересылке в регистр битый.
Изображение
Я хз как сделать чтоб оно работало.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы со SPIMEM. Запись во внешнюю EEPROM
СообщениеДобавлено: Сб апр 22, 2017 23:20:56 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
Переводной документацией не пользуюсь.
Ваш пример - это, похоже, работа в режиме Slave.
Прочтите программатором вашу 25AA040 и выложите что там сейчас прописано.
----
P.S.
Если есть логический анализатор - выкладывайте "захват" SPI.


Последний раз редактировалось Albert_V Сб апр 22, 2017 23:27:52, всего редактировалось 1 раз.

Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 55 ]    , 2,  

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


Кто сейчас на форуме

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


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

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


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y