Programme PIC enfermé dans boucle
Répondre à la discussion
Affichage des résultats 1 à 21 sur 21

Programme PIC enfermé dans boucle



  1. #1
    boy30

    Programme PIC enfermé dans boucle


    ------

    Bonjour, j'ai commencé il y a quelques temps à intéressée aux PICs et j'ai suivi le cours de Bigonoff pour débuté.
    J'utilise un 16F84A que j'ai relié à un afficheur LCD alphanumérique 8X1 et j'ai copié un schéma trouvé sur internet et son programme. L'afficheur affiche bien les caractères demandés mais en mode gonogo je vois qu'il reste enfermé dans la boucle de vérification de l'état de l'afficheur: LCD_BUSY et je ne sais pas pourquoi (bit Z de STATUS pas à zéro donc bouclage) et du coup, le programme principal ne s'exécute jamais, pourriez vous m'aiguiller?

    -----
    ....j'ai glissé chef!

  2. #2
    boy30

    Re : Programme PIC enfermé dans boucle

    Désolé, j'ai oublié les pièces jointes...:
    Le schéma:

    lcd-pic.gif

    et le code:

    Lcd.txt
    ....j'ai glissé chef!

  3. #3
    gcortex

    Re : Programme PIC enfermé dans boucle

    La méthode "je suis sensé savoir"

    donne nous le schéma, la doc de l'afficheur et le programme

    PS : message inutile à présent

  4. #4
    boy30

    Re : Programme PIC enfermé dans boucle

    Quelqu'un aurait-il une idée ?

    p.s: je m'excuse encore pour les fautes d'orthographes que j'ai commis dans le premier post.
    ....j'ai glissé chef!

  5. A voir en vidéo sur Futura
  6. #5
    boy30

    Re : Programme PIC enfermé dans boucle

    Ce n'est pas le bon forum?
    ....j'ai glissé chef!

  7. #6
    gcortex

    Re : Programme PIC enfermé dans boucle

    De temps en temps, il arrive que les gens aient besoin de se reposer.
    as tu essayé de demander à l'auteur ?

    C'est peut être un problème matériel. As tu mis un condensateur sur l'alim à proximité du pic ?
    Dernière modification par gcortex ; 06/05/2012 à 11h01.

  8. #7
    invite5637435c

    Re : Programme PIC enfermé dans boucle

    J'ai modifie cette ligne, essaye comme ca pour voir.

    Code:
    ;=============================================================================
    ; LCDBUSY
    ; Returns when LCD busy-flag is inactive
    ; OK
    ;=============================================================================
    LCDBUSY
      BSF STATUS,RP0 ; Select Register page 1
      MOVLW 0x0FF  ; Set PORTB for input
      MOVWF LCD_DATA_TRIS
      BCF STATUS, RP0 ; Select Register page 0
      BCF LCD_CTRL, LCD_RS; Set LCD for command mode
      BSF LCD_CTRL, LCD_RW; Setup to read busy flag
      BSF LCD_CTRL, LCD_E ; LCD E-line High
      NOP; 
      MOVF LCD_DATA, W ; Read busy flag + DDram address
      BCF LCD_CTRL, LCD_E ; LCD E-line Low
      NOP;
      ANDLW 0x80  ; Check Busy flag, High = Busy
      BNZ     LCDBUSY
      
      LCDNOTBUSY BCF LCD_CTRL, LCD_RW
      BSF STATUS, RP0 ; Select Register page 1
      MOVLW 0x000
      MOVWF LCD_DATA_TRIS ; Set PORTB for output
      BCF STATUS, RP0 ; Select Register page 0
      RETURN

  9. #8
    boy30

    Re : Programme PIC enfermé dans boucle

    J'ai essayé les "NOP" mais rien n'y fait, d'ailleurs, je ne peux pas non plus me fier au débuggeur puisque quand je le suis depuis le début du programme, il reste dans la boucle BUSY avant même d'afficher le premier caractère, il en sort bien avant mais dès que l'on lui dit d'envoyer le premier caractère à afficher, c'est là qu'il reste dans la boucle, étrange, alors que j'ai bien tout afficher à l'afficheur.
    J'ai relevé les niveaux du portB et j'ai 0x30 dessus avec R/Wbarre à 1, ce qui laisserait à penser que l'afficheur est bel et bien en BUSY d'après la doc du contrôleur de celui-ci; pdf trop gros =>
    http://www.google.fr/search?q=CFAH0801ZYYHJP_v1.0&i e=utf-8&oe=utf-8&aq=t&rls=org.mozilla:frfficial&client=firefox-avoir page 34 pour les états de lecture.
    Je pense que c'est au niveau du message qui était configuré à la base pour s'afficher sur un LCD 8x2 que j'ai modifié pour qu'il s'affiche sur mon 8x1.
    Est-ce la piste à suivre?
    ....j'ai glissé chef!

  10. #9
    gcortex

    Re : Programme PIC enfermé dans boucle

    et le condensateur ?

  11. #10
    boy30

    Re : Programme PIC enfermé dans boucle

    J'ai laissé le condensateur de découplage aux bornes de l'alim au plus près depuis que l'on m'a conseillé de le mettre dans un précédent topic sur les PICs.
    Effectivement, c'est vrai que je ne pouvais pas me fier au débuggeur puisque j'ai réussi à simplement allumer une LED dans le programme pricipal (boucle Loop) en changeant de pin (l'afficheur n'était pas occupé "BUSY_flag=ON", j'ai mis la résistance à la led à la masse par RA3 qui s'allume lorsque je lui demande juste de le faire, avant, je voulais le faire par RA4 mais çà ne fonctionnait (sortie à drain ouvert en mode "output") => ça veut dire en quelque sorte que c'est une Haute impédance donc ne délivrant pas de courant donc ne pouvant alimenter une LED?
    Dernière modification par boy30 ; 07/05/2012 à 18h04.
    ....j'ai glissé chef!

  12. #11
    invite7609e8c2

    Re : Programme PIC enfermé dans boucle

    Bonjour,

    RA4 mais çà ne fonctionnait (sortie à drain ouvert en mode "output") => ça veut dire en quelque sorte que c'est une Haute impédance donc ne délivrant pas de courant donc ne pouvant alimenter une LED
    Pour ton problème de LCD je ne peux pas t'aider. Par contre il est possible d'alimenter une led grâce à RA4. Pour ça il faut que tu câbles ta del au + vcc (en passant par une résistance adaptée) et que tu relies la cathode à ra4.

  13. #12
    boy30

    Re : Programme PIC enfermé dans boucle

    Oui, en l'activant au niveau bas pour l'allumer..
    Mais le plus important, c'est que CE topic est quasi résolu par rapport au pourquoi je l'ai ouvert; je viens de me rendre compte que:
    par exemple: BCF PORTA, 3 ne mettait pas à zéro le troisième bit du portA (PA2) mais PA3!
    J'étais dans la calomnie...
    Je ré-ouvrirai le topic si d'autres problèmes persistent, merci encore à ceux qui ont participé.
    Dernière modification par boy30 ; 07/05/2012 à 18h53. Motif: problème réccursif d'indexation de bit /port
    ....j'ai glissé chef!

  14. #13
    gcortex

    Re : Programme PIC enfermé dans boucle

    ******************
    Dernière modification par gcortex ; 07/05/2012 à 18h57.

  15. #14
    boy30

    Re : Programme PIC enfermé dans boucle

    Bonjour, je ne voulais pas ouvrir un nouveau sujet pour économiser de la place sur le serveur et parce que le problème que je rencontre concerne le même montage/(programme)
    J'avais réussi à afficher ce que je voulais sur l'afficheur LCD 8x1 en mode 8bits (avec 8 fils donc!)
    Je désire maintenant passer en mode 4 bits pour économiser des ports qui me serviront à d'autres choses.
    Seulement, même en m'étant inspiré des exemples trouvés sur internet, je n'arrive pas à afficher quoique ce soit en mode 4 bits; j'ai garder le même programme qui fonctionnait en mode 8 bits et je l'ai modifié en conséquence pour qu'il envoie l'octet (ou le reçoive) en deux temps, avec le quartet de poids forts en premier, je pense pourtant que la manipulation de l'octet à envoyer en deux fois est bonne mais je trouve pas le bug du programme, voici comment le tout est câblé:

    lcd4bits.jpg

    J'ai fait la modification dans les routines LCDPUTCMD et LCDPUTCHAR qui sont celles qui dialogues avec le LCD:

    Lcd4.txt
    ....j'ai glissé chef!

  16. #15
    boy30

    Re : Programme PIC enfermé dans boucle

    il fait beau aujourd'hui!
    ....j'ai glissé chef!

  17. #16
    invite5637435c

    Re : Programme PIC enfermé dans boucle

    Tu peux mettre les 4 ports du LCD non branches a la masse sur ton schema.

  18. #17
    invite5637435c

    Re : Programme PIC enfermé dans boucle

    Valeur du quartz de ton schema?

  19. #18
    boy30

    Re : Programme PIC enfermé dans boucle

    Oui, je l'ai omis sur le schéma mais les ports inutilisés du LCD sont bien à la masse et le quartz est le même que celui que j'utilisais en mode 8 bits, un 13.8250 MHz.
    ....j'ai glissé chef!

  20. #19
    invite5637435c

    Re : Programme PIC enfermé dans boucle

    Et pourquoi un tel choix de quartz?

    Le code parle aussi d'un 4MHz.

  21. #20
    boy30

    Re : Programme PIC enfermé dans boucle

    C'est vrai, c'est un quartz bizarre mais j'ai pris ce que j'avais sous la main et comme tout fonctionnait bien jusque là.
    J'ai rajouté plein de tempo, de NOP et en 8 bits, tout était correct.
    J'ai pensé qu'il était peut-être bloqué dans la routine BUSY alors je l'ai shunté avec des tempo...
    ....j'ai glissé chef!

  22. #21
    boy30

    Re : Programme PIC enfermé dans boucle

    Bien joué, oui, effectivement, le quartz n'était pas du tout fait pour ce PIC 16F84A-04 qui admet théoriquement un quartz de 4 MHz maximum même s'il fonctionnait en 8 bits pour le LCD avec le 13.8250 MHz, ça ne marchait pas en mode 4 bits.
    Juste une question subsidiaire pour clôturer ce topic une fois pour toute,j'ai le code:

    Code:
    call	LCDchar
    	RETURN
    
    	include"lcd4.asm"
    
    
    	end
    qui ne fonctionne pas puisqu'il ne trouve pas les labels de lcd4.asm quand il compile, je suis obligé de le mettre tel quel à la suite alors que lcd4.asm est bien dans mon projet, où faut-il le placer pour avoir une bonne compilation du projet comportant plusieurs fichier? (je pensais dans le même répertoire!)
    ....j'ai glissé chef!

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/01/2012, 19h21
  2. Pb : comment démarrer un programme chargé dans unh PIC sous easy PIC 7
    Par invite2d9a5524 dans le forum Électronique
    Réponses: 4
    Dernier message: 23/12/2011, 00h41
  3. x enfermé dans une exponentielle !
    Par mc222 dans le forum Mathématiques du collège et du lycée
    Réponses: 4
    Dernier message: 29/12/2009, 19h02
  4. [PIC]erreurs dans un programme
    Par invitec35bc9ea dans le forum Électronique
    Réponses: 71
    Dernier message: 01/05/2008, 21h31
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...