SPI-устройство предотвращает программирование интернет-провайдера

8

У меня ATmega8 с подключенным к нему ЖК-дисплеем Nokia 5510 . Все отлично работает на макете, и мой следующий шаг - переместить его на более постоянную доску. Моя проблема в том, что я не могу запрограммировать ATmega8, когда ЖК-дисплей также подключен. Я предполагаю, что это потому, что они используют одни и те же контакты SPI и что ЖК-дисплей как-то мешает программированию. Как я могу сделать это по-другому, чтобы я мог прошить ATmega через ISP, не отключая ЖК-дисплей?

Том Ван ден Бон
источник
2
Вам действительно нужно добавить схему, чтобы получить хороший ответ на этот вопрос. Вы можете использовать Ctrl-M для запуска редактора схемы на месте или просто добавить ссылку на схему, и кто-то может отредактировать ее в вопросе.
PeterJ
1
Устройство активно на низком уровне? Если да, то вы добавили подтягивающий резистор? Если вы этого не сделаете, то устройство будет захватывать шину SPI до тех пор, пока оно не освободится.
NothinRandom

Ответы:

12

Вы должны запретить любому другому устройству управлять SPI-линиями во время программирования.

Чтобы избежать конфликта драйверов, последовательный резистор должен быть размещен на каждой из трех выделенных линий, если существует вероятность того, что внешние линии могут управлять этими линиями.

введите описание изображения здесь

Посмотрите на примечание по применению AVR910.

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

Поэтому было бы лучше, если бы линии сброса ATMEGA и дисплея были функционально связаны, чтобы дисплей ничего не делал, пока программист удерживает сброс.

rev1.0
источник
1
Если на ЖК-дисплее есть линия выбора микросхемы, убедитесь, что вы подняли ее также с помощью резистора. Во время программирования ATmega сбрасывается, что устанавливает все входы / выходы на высокое сопротивление, поэтому ЖК-дисплей будет неактивен.
Остин
1
@ Rev1.0: должно быть достаточно наличия резистора в линии MISO (поскольку это единственный выход ведомого устройства SPI, две другие линии являются входами и, следовательно, не могут создавать помехи).
Творог
@Curd, добавь свой ответ со схемой, и я буду голосовать. Похоже, что лучшие два подхода - это либо добавить резистор только к линии MISO, либо добавить нагрузку CS, либо и то и другое.
Габриэль Стейплс
2

Другое решение - отключить экран во время программирования .

Экран активен, когда на выводе CS (выбор микросхемы) низкий уровень (0 В). Если вы вставите нагрузочный резистор 10 кР между контактом CS и 3V3 , он будет отключен / высокий по умолчанию. Чтобы включить его, подключите контакт CS к выходу вашего микроконтроллера и установите для этого выхода низкий уровень (0 В). Я сделал это на одном из моих проектов, и он работает хорошо.

Экран работает с напряжением 3,3 В, вам придется добавить делитель напряжения, если ваш микроконтроллер работает на 5 В.

Rodot
источник