Le dispositif SPI empêche la programmation du FAI

8

J'ai un ATmega8 avec un Nokia LCD 5510 connecté. Tout fonctionne très bien sur une planche à pain et ma prochaine étape est de la déplacer vers une planche plus permanente. Mon problème est que je ne peux pas programmer l'ATmega8 alors que l'écran LCD est également connecté. Je suppose que c'est parce qu'ils utilisent les mêmes broches SPI et que l'écran LCD interfère en quelque sorte avec la programmation. Comment puis-je procéder différemment pour pouvoir flasher l'ATmega via ISP sans débrancher l'écran LCD?

Tom Van den Bon
la source
2
Vous aurez vraiment besoin d'ajouter un circuit pour obtenir une bonne réponse à ce sujet. Vous pouvez utiliser Ctrl-M pour lancer l'éditeur de schéma sur site ou sinon simplement mettre un lien vers le schéma et quelqu'un peut le modifier dans la question.
PeterJ
1
L'appareil est-il actif bas? Si oui, avez-vous ajouté une résistance de rappel? Sinon, l'appareil monopoliserait le bus SPI jusqu'à ce qu'il soit libéré.
NothinRandom

Réponses:

12

Vous devez empêcher tout autre appareil de piloter les lignes SPI pendant la programmation.

Pour éviter les conflits de pilotes, une résistance série doit être placée sur chacune des trois lignes dédiées s'il existe une possibilité que des circuits externes puissent piloter ces lignes.

entrez la description de l'image ici

Jetez un œil à la note d'application AVR910.

Pour éviter les problèmes, le programmeur intégré au système doit être en mesure de conserver l'intégralité de la réinitialisation du système cible pendant la durée du cycle de programmation. Le système cible ne doit jamais tenter de piloter les trois lignes SPI lorsque la réinitialisation est active.

Il serait donc préférable que les lignes de réinitialisation de l'ATMEGA et de l'écran soient fonctionnellement connectées pour empêcher l'écran de faire quoi que ce soit pendant que le programmateur maintient la réinitialisation.

Rev1.0
la source
1
Si l'écran LCD a une ligne de sélection de puce, assurez-vous de tirer aussi haut avec une résistance. Pendant la programmation, l'ATmega est réinitialisé, ce qui définit toutes les entrées / sorties comme étant à haute impédance, de sorte que l'écran LCD sera inactif.
Austin
1
@ Rev1.0: Il devrait suffire d'avoir une résistance dans la ligne MISO (car c'est la seule sortie du dispositif esclave SPI, les deux autres lignes sont des entrées et ne peuvent donc pas causer d'interférence).
Curd
@Curd, ajoutez votre réponse avec un schéma et je voterai pour elle. On dirait que les deux meilleures approches consistent soit à ajouter une résistance uniquement à la ligne MISO, soit à ajouter un pullup CS, ou les deux.
Gabriel Staples
2

Une autre solution consiste à désactiver l'écran lors de la programmation .

L'écran est actif lorsque la broche CS (sélection de puce) est faible (0v). Si vous mettez une résistance de rappel de 10 kR entre la broche CS et le 3V3 , elle sera désactivée / élevée par défaut. Pour l'activer, connectez la broche CS à une sortie de votre micro-contrôleur et réglez cette sortie sur faible (0 V). Je l'ai fait sur l'un de mes projets et cela fonctionne bien.

L'écran fonctionne à 3,3 V, vous devrez ajouter un diviseur de tension si votre micro-contrôleur fonctionne à 5 V.

Rodot
la source