SPI-Gerät verhindert ISP-Programmierung

8

Ich habe einen ATmega8 mit einem Nokia LCD 5510 angeschlossen. Auf einem Steckbrett funktioniert alles hervorragend, und mein nächster Schritt besteht darin, es auf ein dauerhafteres Brett zu verschieben. Mein Problem ist, dass ich den ATmega8 nicht programmieren kann, während das LCD ebenfalls angeschlossen ist. Ich gehe davon aus, dass sie dieselben SPI- Pins verwenden und dass das LCD die Programmierung irgendwie stört. Wie kann ich das anders machen, damit ich den ATmega über den ISP flashen kann, ohne das LCD abzuziehen?

Tom Van den Bon
quelle
2
Sie müssen wirklich eine Schaltung hinzufügen, um eine gute Antwort darauf zu erhalten. Sie können Strg-M verwenden, um den Schaltplaneditor vor Ort zu starten, oder auf andere Weise einfach einen Link zum Schaltplan einfügen, und jemand kann ihn in der Frage bearbeiten.
PeterJ
1
Ist das Gerät niedrig aktiv? Wenn ja, haben Sie dann einen Pull-up-Widerstand hinzugefügt? Wenn Sie dies nicht tun, wird das Gerät den SPI-Bus blockieren, bis er freigegeben wird.
NothinRandom

Antworten:

12

Sie müssen verhindern, dass andere Geräte während der Programmierung die SPI-Leitungen ansteuern.

Um Treiberkonflikte zu vermeiden, sollte an jeder der drei dedizierten Leitungen ein Vorwiderstand angebracht werden, wenn die Möglichkeit besteht, dass externe Leitungen diese Leitungen ansteuern.

Geben Sie hier die Bildbeschreibung ein

Schauen Sie sich den Anwendungshinweis AVR910 an.

Um Probleme zu vermeiden, sollte der In-System-Programmierer in der Lage sein, das gesamte Zielsystem für die Dauer des Programmierzyklus zurückzusetzen. Das Zielsystem sollte niemals versuchen, die drei SPI-Leitungen anzusteuern, während Reset aktiv ist.

Daher ist es am besten, wenn die Rücksetzleitungen des ATMEGA und des Displays funktional verbunden sind, um zu verhindern, dass das Display etwas tut, während der Programmierer das Zurücksetzen hält.

Rev1.0
quelle
1
Wenn das LCD über eine Chipauswahlleitung verfügt, müssen Sie diese auch mit einem Widerstand hochziehen. Während der Programmierung wird der ATmega zurückgesetzt, wodurch alle Ein- / Ausgänge auf hohe Impedanz eingestellt werden, sodass das LCD inaktiv ist.
Austin
1
@ Rev1.0: Es sollte ausreichen, einen Widerstand in der MISO-Leitung zu haben (da dies der einzige Ausgang des SPI-Slave-Geräts ist, sind die beiden anderen Leitungen Eingänge und können daher keine Interferenzen verursachen).
Curd
@Curd, füge deine Antwort mit Schaltplan hinzu und ich werde sie verbessern. Klingt so, als würden die beiden besten Ansätze entweder einen Widerstand nur zur MISO-Leitung hinzufügen oder einen CS-Pullup hinzufügen oder beides.
Gabriel Staples
2

Eine andere Lösung besteht darin , den Bildschirm während der Programmierung zu deaktivieren .

Der Bildschirm ist aktiv, wenn der CS-Pin (Chip Select) niedrig ist (0 V). Wenn Sie einen 10-kR-Pull-up-Widerstand zwischen den CS-Pin und 3V3 legen , ist dieser standardmäßig deaktiviert / hoch. Um dies zu aktivieren, verbinden Sie den CS-Pin mit einem Ausgang Ihres Mikrocontrollers und stellen Sie diesen Ausgang auf niedrig (0 V). Ich habe das bei einem meiner Projekte gemacht und es funktioniert gut.

Der Bildschirm wird mit 3,3 V betrieben. Wenn Ihr Mikrocontroller mit 5 V betrieben wird, müssen Sie einen Spannungsteiler hinzufügen.

Rodot
quelle