Если не проверять BF, то на дебагере биты данных что в приеме что в отправке показываются знаком вопроса =) Но спасибо всем, я решил проблему. В дебагер приходит нужное значение из нужной ячейки, НО, в регистр из буфера копируется что-то непонятное... вот скрин. мое значение 0x05, копирую из буфера в регистр, а туда копируется 0x82...
Мне сложно что-то сказать про ваш дебаггер, поскольку у меня ICD3 (оригинальный) и я работаю с реальным "железом". ------ P.S. После записи в SSPBUF очередного байта - по получению прерывания всё равно (надо или нет) нужно читать SSPBUF!!!
Последний раз редактировалось Albert_V Пт апр 21, 2017 00:41:45, всего редактировалось 1 раз.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Мне сложно что-то сказать про ваш дебаггер, поскольку у меня ICD3 (оригинальный) и я работаю с реальным "железом".
Да не в нем дело... Вот отослал я данные, проверил пока отошлются (флаг BF), потом проверяю SSPIF, когда он в единице переписываю данные из регистр и все. Откуда может взяться не то значение? Мне приходит 3 байта, 0xFF,0xFF, и мой 0x05. Все они как я понимаю, приходят в SSPBUF. Так вот, как мне выцепить оттуда именной мой последний байт? Еще предупреждение пишет "Data written SSPBUF whilst MSSP (in master mode) is active - data has been ignored"
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Выше я дал вам пример кода. Если не поняли, после записи байта в SSPBUF надо "сказать" CALL WAITSPI2 и ждать выхода из подпрограммы (и, естественно, в тексте нужно подправить названия регистров). Не пропустили в моём тексте про то, что нужно всегда читать SSPBUF после окончания передачи байта? Если хотите трахаться с программой ещё два месяца продолжать проверять флаг SSPSTAT,BF - это ваше право. ----- P.S. Специально для вас: Можете вообще никаких флагов не проверять, поставив "тупую задержку в цикле" после записи байта в SSPBUF на время передачи байта по SPI умноженное на 1,5.
Выше я дал вам пример кода. Если не поняли, после записи байта в SSPBUF надо "сказать" CALL WAITSPI2 и ждать выхода из подпрограммы (и, естественно, в тексте нужно подправить названия регистров). Не пропустили в моём тексте про то, что нужно всегда читать SSPBUF после окончания передачи байта? Если хотите трахаться с программой ещё два месяца продолжать проверять флаг SSPSTAT,BF - это ваше право. ----- P.S. Специально для вас: Можете вообще никаких флагов не проверять, поставив "тупую задержку в цикле" после записи байта в SSPBUF на время передачи байта по SPI умноженное на 1,5.
Эхехехе. Вы, помоему, мне так и не сможете помочь. Реализация с задержкой. На выходе в SSPBUF лежит 0xA2, а не 0x45!!! Которое показано, что принялось. Аналогичный результат я кидал выше, с проверкой флага SSPIF, где вы сказали, что не надо проверять BF. В даташите написано, что BF проверяется чтобы понять произошла ли запись в буфер. Если его не проверять, а проерять просто SSPIF, то нихрена не пересылается и не принимается вообще. Вот реализация с задержкой. А ниже скрин, какое число должно быть получено, а какое итогу лежит в регистре. Спойлер
Наконец-то поняли. Именно ТАК (не зависимо от того что передаёте в понимании, в вашем случае, EEPROM-а)!!!
Сделал так. Но результат аналогичен -- пишет 0xA2 в регистр, а не 0x45.... Читаю SSPBUF после каждой отправки данных -- Проверяю установку SSPIF в 1, потом читаю SSPBUF. Спойлер
Не вижу. У меня, в отличии от вас, работа по прерыванию и нет проверки SSPSTAT,BF. Так что, это ваша некая редакция некоего текста программы.
Так какая разница, прерывание или нет. Вы мне сами говорили, что хоть через задержку делай. Через задержку аналогично все, бит танных по пересылке в регистр битый. Я хз как сделать чтоб оно работало.
Переводной документацией не пользуюсь. Ваш пример - это, похоже, работа в режиме Slave. Прочтите программатором вашу 25AA040 и выложите что там сейчас прописано. ---- P.S. Если есть логический анализатор - выкладывайте "захват" SPI.
Последний раз редактировалось Albert_V Сб апр 22, 2017 23:27:52, всего редактировалось 1 раз.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения