Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW - Page 2
Répondre à la discussion
Page 2 sur 3 PremièrePremière 2 DernièreDernière
Affichage des résultats 31 à 60 sur 72

Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW



  1. #31
    spown

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW


    ------

    Bonjour/bonsoir Fernando et à tout le groupe,

    La réponse est : NON, c'est pas normal. Qu'est ce que t'as dans GestionBouton(i); et GestionAffichage(i); ??

    -----

  2. #32
    spown

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Je ne vois pas la configuration des bits en-tête du programme. Ton WDT est désactivé ?

    Utilise ca après le #include ++> : __CONFIG _WDT_OFF

    NOTE : il y a d'autres paramètres à configurer comme le quartz, et protection code etc.

  3. #33
    invitea7212905

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Je ne sais pas. J'ai refait un autre test en affichant un autre texte dans cette boucle "while" et en enlevant mes fonctions. Le LCD n'affiche jamais ce qui est dans cette boucle. Est ce que les temporisations peuvent influencer quelque chose ? Je vois que le LCD affiche le texte, l'efface et le ré affiche. La fréquence du Quartz est précisée en début de programme. Sinon je ne vois pas ce que son les entêtes ? Je ne comprend pas ?

  4. #34
    spown

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Quel texte? Pour ta connaissance, les PICs il faut configurer des registres au debut du programme. Comme clock utilisee, watch dog etc. Tu utilises quartz externe ? As tu ajouter ce que je t, ai dit ?
    entete c'est les fichiers include en haut du programme .
    Dernière modification par spown ; 27/02/2014 à 00h27.

  5. #35
    spown

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Test ca :
    Code:
    void main(void)
    {
    	unsigned char i;
    
    	i=0;
    	//__delay_ms(1000);
    
    	init_PIC();
    
    	RELAY=1;
    
    	__delay_ms(1000);
    
    	lcd_init();
    	
    
    	lcd_goto(0);	// select first line
    	lcd_puts("TITRE");
    	lcd_goto(0x40);	// Select second line
    	lcd_puts("  version 1.0");
    
    	__delay_ms(4000);
    
    	lcd_clear();
    	__delay_ms(4);
    	while(1) 
    	{
      		GestionBouton(i);            //on lance les boucles de gestion
      		GestionAffichage(i);
    	}
    
    
    }

  6. #36
    invitea7212905

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Non ça ne fonctionne pas en ajoutant une tempo de 4ms. Par contre, si je mets la tempo de 4s à 1s, il entre dans la boucle while mais il en sort et recommence l'initlaistion du LCD, l'affichage du titre et ainsi de suite .... Je ne comprend pas le fonctionnement ?

  7. #37
    invitea7212905

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    J'ai ajouté ça en entête mais le comportement est le même que précédemment:
    #define _CONFIG _WDT = OFF
    #define FOSC = EXTRC

  8. #38
    invitea7212905

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Je pense que j'ai résolu mon problème. Je ne peux pas utliser des tempo trop longs donc j'ai fait ça:
    Code:
    void delay_100ms(unsigned char n) 
         { 
             while (n-- != 0) { 
                 __delay_ms(100); 
             } 
         }
    et je remplace __delay_ms(4000) par delay_100ms(40) et ça fonctionne l'affichage ne sort plu de la boucle infinie. Il faut quand même que je creuse pour comprendre ? Auriez-vous des pistes sur ses tempo trop longs ?

  9. #39
    spown

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Citation Envoyé par Fernando_86 Voir le message
    J'ai ajouté ça en entête mais le comportement est le même que précédemment:
    #define _CONFIG _WDT = OFF
    #define FOSC = EXTRC
    Mais c'est faut , ce que tu viens de faire c'est une simple définition des nouveaux variable. ajoute cette macro comme tu le vois ici==> __CONFIG _MCLRE_OFF & _PWRTE_OFF & _WDT_OFF & _EXTRC_OSC juste apres ( #include "pic16f876.h" )

    Pourquoi tu lies pas TOUT, je demande EST CE QUE TU UTILISES un QUATRZ externe ou interne ?

  10. #40
    spown

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Si ça donne des erreurs essaye ça ==> __CONFIG( _MCLRE_OFF & _PWRTE_OFF & _WDT_OFF & _EXTRC_OSC); à la place.

  11. #41
    invitea7212905

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    C'est un quartz externe de 8MHz.

  12. #42
    spown

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    As tu essayé ca : __CONFIG( _MCLRE_OFF & _PWRTE_OFF & _WDT_OFF & _EXTRC_OSC); ?

    L'explication de l'erreur, c'est que __delay_ms est limité dans ton fichier htc.h

  13. #43
    invitea7212905

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    J'ai essayé mais erreur lors de la compilation:
    Error [800] C:\Users\Rom\AppData\Local\Tem p\s750.; 45. symbole "_EXTRC_OSC" indéfini
    Error [800] C:\Users\Rom\AppData\Local\Tem p\s750.; 45. symbole "_WDT_OFF" indéfini
    Error [800] C:\Users\Rom\AppData\Local\Tem p\s750.; 45. symbole "_PWRTE_OFF" indéfini
    Error [800] C:\Users\Rom\AppData\Local\Tem p\s750.; 45. symbole "_MCLRE_OFF" indéfini

  14. #44
    spown

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Fais moi voir ton fichier htc.h et pic16f876.h pour vérifier les bonnes déclarations

  15. #45
    invitea7212905

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Je t'ai joins les 2 fichiers que tu m'as demandé. Je suis en train de me battre avec mon codeur incrémental. Sur interne, je trouve des codes où l'on doit générer une fonction interruption sur des changements d'états afin de savoir le sens de rotation du codeur. Sur ma carte, il est connecté au entrée C0 et C1 mais elles ne possèdent pas d'interruption. J'ai donc réalisé une fonction qui check les valeurs sur ces deux entrées pour connaitre le changement d'état ... Est-ce la meilleure solution ? Avec cette fonction, j'ai de nouveau les problèmes que j'observais précédemment (bouclage de l'affichage en sortant des fonctions while(1)). J'ai vraiment l'impression d'avoir qq chose de bancale dans mon code.

  16. #46
    invitea7212905

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Les fichiers joints

  17. #47
    invitea7212905

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    A renommer en .rar et à décompresser
    Images attachées Images attachées

  18. #48
    invitea7212905

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    J'ai refait des tests hier soir et c'est vraiment les fonctions de temporisations qui influent sur le fonctionnement du programme. Pour l'affichage de mon menu, si la tempo est inférieur à 4ms, le programme boucle et si j'utilise la fonction __delay_us, il affiche des caractères bizarres sur l'afficheur LCD. Est-ce que le compilateur Hi-tech 9.83 peut être la cause ? Faut-il que j'en change ?

  19. #49
    spown

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Essayes ca : __CONFIG( PWRTE_OFF & WDTE_OFF & FOSC_XT & LVP_OFF & CPD_OFF & CP_OFF);

    Note: Pourquoi tu veux utiliser __delay_us ? Le LCD demande quelques millisecondes pour la réception du 1er caractère apres l'initialisation et non micro-secondes
    Dernière modification par spown ; 01/03/2014 à 17h07.

  20. #50
    invitea7212905

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Bonjour spown,

    J'ai effectivement essayé ta dernière proposition et celle fonctionne. Je suis désolé de répondre si tard mais j'ai repris le travail cette semaine et je suis donc moins dispo pour avancer sur mon projet perso.
    Je pense que j'aurais d'autres questions rapidement que je trouverais de nouveau du temps ... merci encore

  21. #51
    invitea7212905

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Rebonjour,

    J'ai enfin fini mon menu avec sous-menu et changement de variable ... c'est vraiment pas une partie de plaisir. Il faut penser à tous les cas possible ...
    La prochaine étape est de sauvegarder certaine valeur dans la mémoire du pic. Si j'ai bien compris la mémoire disponible et la mémoire EEPROM. Est-ce que c'est la seule disponible ? J'ai trouvé ce site très intéressant : http://claude.dreschel.free.fr/comme.../RW_EEPROM.htm
    J'ai essayé le code en C qu'il présente mais j'ai des erreurs liées au define en haut du code. Je pense qu'ils ne sont pas adaptés avec mon compilo ?
    Code:
    #define	EEPROM_WRITE(addr, value) while(WR)continue;EEADR=(addr);EEDATA=(value);EEPGD=0;GIE=0;WREN=1;\
    		EECON2=0x55;EECON2=0xAA;WR=1;WREN=0
    #define	EEPROM_READ(addr) ((EEADR=(addr)),(EEPGD=0),(RD=1),EEDATA)
    Auriez-vous des idées ?

    Merci d'avance

  22. #52
    spown

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Il y a 3 types de mémoires dans ton pics : Flash, RAM et EEPROM.

    Quel type d'erreur??

  23. #53
    invitea7212905

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    OK, donc si je veux stocker des valeurs (char et int uniquement) pour qu'elle soit toujours dispo au prochain redémarrage, j'utilise EEPROM ?

    Les erreurs:
    Warning [111] C:\Users\Rom\Desktop\Retard_bo x\v0.1\retard_v0.1.c; 19.37 redéfinition de la macro "EEPROM_WRITE" du pré-processeur (-TECH Software\PICC\9.83\include\eep rom_routines.h: 21)
    Warning [111] C:\Users\Rom\Desktop\Retard_bo x\v0.1\retard_v0.1.c; 20.66 redéfinition de la macro "EEPROM_READ" du pré-processeur (C:\Program Files (x86)\HI-TECH Software\PICC\9.83\include\eep rom_routines.h: 28)
    Error [984] C:\Users\Rom\Desktop\Retard_bo x\v0.1\retard_v0.1.c; 36.59 type redeclaré
    Error [1098] C:\Users\Rom\Desktop\Retard_bo x\v0.1\retard_v0.1.c; 36.59 conflit de déclaration pour la variable "eeprom_write"
    Error [984] C:\Users\Rom\Desktop\Retard_bo x\v0.1\retard_v0.1.c; 877.1 type redeclaré
    Error [1098] C:\Users\Rom\Desktop\Retard_bo x\v0.1\retard_v0.1.c; 877.1 conflit de déclaration pour la variable "eeprom_write"
    Warning [343] C:\Users\Rom\Desktop\Retard_bo x\v0.1\retard_v0.1.c; 880.1 return implicite à la fin d'une fonction non void

    Warning au début c'est sur les define.
    Les erreurs ensuite c'est sur les fonctions que j'ai reprise du site que j'ai présenté au-dessus. Est ce que les fonctions EEPROM_WRITE et EEPROM_READ sont déjà définies dans un include ?

  24. #54
    spown

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Tes 'eeprom_write' et read sont déjà déclarés quelques part. Je peux pas savoir sans tout le code. EEPROM_READ et WRITE sont pas définies dans tes include ( d’après la version que tu m'as montré pour l'afficheur ).

  25. #55
    invitea7212905

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Je te joins le code qui pose problème:

    Code:
    //---------------------------------E/S et variables generales--------------------- 
    
    #include <htc.h>
    #include <stdio.h> 
    #include <string.h>
    #include <math.h>
    
    #include "pic.h"
    #include "pic16f876.h"
    ;
    
    #define _XTAL_FREQ 8000000
    
    
    #define	EEPROM_WRITE(addr, value) while(WR)continue;EEADR=(addr);EEDATA=(value);EEPGD=0;GIE=0;WREN=1;\
    		EECON2=0x55;EECON2=0xAA;WR=1;WREN=0
    #define	EEPROM_READ(addr) ((EEADR=(addr)),(EEPGD=0),(RD=1),EEDATA)
    
    
    // CONFIG
    	
    
    __CONFIG(  PWRTE_OFF & WDTE_OFF & FOSC_XT & LVP_OFF & CPD_OFF & CP_OFF);
    
    
    
    //-------------------------------Déclaration de fonction-------------------------
    
    
    //**************************************************************************
    void ecriture_eeprom(unsigned char adr,unsigned int valeur);
    unsigned int lecture_eeprom(unsigned char adr);
    void eeprom_write(unsigned char addr, unsigned char value);
    unsigned char eeprom_read(unsigned char addr);
    //************************************************************************
    
    void main(void)
    {
    	init_PIC();
    
    ///////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////
    
    	int toto;
    		
    	if(lecture_eeprom(0) !=0xFFFF) 
    	{	
    		toto = lecture_eeprom(0); 
    	}
    	else
    	{
    		toto=100;        
        	ecriture_eeprom(0,toto);
    	}	
    
    void eeprom_write(unsigned char addr, unsigned char value)
    {
    	EEPROM_WRITE(addr, value);
    	GIE=1;  // si besoin	
    }	
    
    
    unsigned char eeprom_read(unsigned char addr)
    {
        	return(EEPROM_READ(addr)); 
    }
    	
    void ecriture_eeprom(unsigned char adr,unsigned int valeur)
    {
    	eeprom_write(adr,(unsigned char)valeur);
    	valeur >> = 8;
    	eeprom_write(adr+1,(unsigned char)valeur);
    }
    		
    unsigned int lecture_eeprom(unsigned char adr)
    {
    	unsigned int temp;
    	temp=(unsigned char)eeprom_read(adr+1);
    	temp << = 8;
    	temp|=(unsigned char)eeprom_read(adr);
        return(temp);
    }
    Je ne vois pas où ils sont déclarés deux fois. Ce code est quelque chose que j'ai repris du site que j'ai indiqué plus haut. Est-ce que je dois déclarer quelque chose de spéciale au niveau de l'initialisation du PIC ?

  26. #56
    spown

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Il te manque une accolade pour fermer le main "}". Puis, il est ou ton while (1) ???

  27. #57
    invitea7212905

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    C'est une erreur de copier/coller. J'ai bien une accolade à la fin du main et une boucle pour afficher mon menu. Le problème est que j'ai des erreurs sur les fonctions de lecture et écrire dans l'EEPROM depuis que j'ai rajouté ces fonctions.

  28. #58
    spown

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Ok, Mais tu peux pas mettre des fonctions à l’intérieur de main.

  29. #59
    invitea7212905

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    Je sais. Je te renvoie le code du main.

    Code:
    void main(void)
    {
    	init_PIC();
    
    ///////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////
    
    	int toto;
    		
    	if(lecture_eeprom(0) !=0xFFFF) 
    	{	
    		toto = lecture_eeprom(0); 
    	}
    	else
    	{
    		toto=100;        
        	ecriture_eeprom(0,toto);
    	}
    
            while(0)
           {
                  //coeur de mon menu
           }
    
    }

  30. #60
    spown

    Re : Pic 16f876 et LCD NHD‐C0220AZ‐FSW‐FTW

    C'est while(1).

Page 2 sur 3 PremièrePremière 2 DernièreDernière

Discussions similaires

  1. pic 16f876 + RS 232
    Par invite934a22e4 dans le forum Électronique
    Réponses: 8
    Dernier message: 01/06/2013, 16h28
  2. Pic 16f876
    Par invite4305859e dans le forum Électronique
    Réponses: 1
    Dernier message: 22/05/2013, 14h01
  3. pic 16f876
    Par invite934a22e4 dans le forum Électronique
    Réponses: 8
    Dernier message: 19/03/2013, 17h40
  4. pic 16f876
    Par invite6568e6cf dans le forum Électronique
    Réponses: 2
    Dernier message: 21/05/2006, 19h19
  5. Pic 16f876
    Par Toufinet dans le forum Électronique
    Réponses: 2
    Dernier message: 22/04/2006, 14h49
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...