Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

programme fonctionnel sur p16f84a et pas sur 16f628



  1. #1
    aminos18

    Unhappy programme fonctionnel sur p16f84a et pas sur 16f628


    ------

    Bonjour,

    j'ai un programme qui tourne sans problème sur un pic 16f84A, mais sur un pic 16f628, la lecture des entrées (en provenance des boutons poussoirs) n'aboutit à rien

    en fait l'algo du programme est comme suit :
    1) allumage d'une LED 20 fois.
    2) boucle infinie avec lecture des ports et exécution d'instructions selon le bouton appuyé , à la pression d'un bouton, la LED s'allumera et d'autres instructions seront exécutées par la suite...

    le problème c'est que sur le 16F628, l'étape 1) est exécutée, mais à la pression du bouton relié à RA0 (le seul permis en premier temps) et même en maintenant le bouton enfoncé, la diode ne s'allume pas, donc le PIC n'arrive pas à lire l'état de la pin ou quoi ??? elle est pourtant configurée en entrée

    avec le même montage et les mêmes conditions le pic 16f84a exécute sans problème tout le programme, et ce même s'il est alimenté par 3 V

    portion du code en mikropascal :

    Code:
    ........
    VAR 
    B1_Pin       : SBIT AT RA0_bit;    B1_Dir      :  SBIT AT TRISA0_bit;
    B2_Pin       : SBIT AT RA1_bit;    B2_Dir      :  SBIT AT TRISA1_bit;
    
    ...
    
    LED_Pin      : SBIT AT RB0_bit;    LED_Dir      : SBIT AT TRISB0_bit;
    
    PROCEDURE Blink_Led;
    BEGIN
        LED_Pin := 1;
        Delay_ms(20);
        LED_Pin := 0;
        Delay_ms(20);
    END;
    
    PROCEDURE Setup;
    VAR
        i : BYTE;
    BEGIN
        TRISA := 0;
        TRISB := 0;
    
    B1_Dir := 1;
    B2_Dir := 1;
    
    ....
    Order_Passed := FALSE;
    ....
    ....
    
    FOR i := 0 TO 20 DO
    BEGIN
    	Blink_Led;
    	Delay_ms(100);
    END;
    END;
    
    Begin
    Setup;
        WHILE TRUE DO
        BEGIN
            IF (B1_Pin = 1) AND (Order_Passed = FALSE) THEN
            BEGIN
                Blink_Led;
    .....
            END;
    			
            IF (B2_Pin = 1) AND (Order_Passed = TRUE) THEN
            BEGIN
                Blink_Led;
    ......
            END;
    
    // 2 autres instructions IF
    
    END.
    une autre remarque : sur le PIC 16F84A, au lieu d'utiliser : B1_Pin = 1
    je l'ai changé par PORTA.0 = 1
    c'est la même chose, mais je me demande si c'est à cause de ça... désolé je suis tellement désespéré que je dis n'importe quoi...
    je ne comprends plus rien

    PS : pour le pic 16f master clear : disable + brown out detect : disable + oscillator XT 4 mhz + alimentation : j'ai essayé avec 3 et 4 volts pensant que le problème pourrait être la tension.

    Merci de m'éclaircir ce problème qui m'inquiète et qui entrave l'achèvement de mon pfe

    -----
    Dernière modification par aminos18 ; 10/05/2011 à 19h51.

  2. Publicité
  3. #2
    Gérard

    Re : programme fonctionnel sur p16f84a et pas sur 16f628

    Si tu utilises le PortA du 628, tu dois écrire dans l'init :
    CMCON = 7

    Je te laisse chercher pourquoi.

  4. #3
    aminos18

    Re : programme fonctionnel sur p16f84a et pas sur 16f628

    Merci BEAUCOUP gérard pour ton indice j'ai consulté le datasheet, et j'ai compris pourquoi il faut mettre un 7 (0000111 en binaire - mode comparators off) en effet, dans mon cas il faut que je désactive les comparateurs, mais puisque je suis novice en PIC (même pas 1 mois déjà, cependant j'ai appris beaucoup de chose), je ne savais pas que ce genre de "choses" pouvait engendrer des problèmes...

    CMCON := CMCOM or 7; // Turn off compartors

    demain je testerai ça car je n'ai pas de programmateur chez moi !!!! si tu as d'autres conseils, dug enre il faut initialiser certains registres sans quoi il y aura des problèmes, s'il te plaît n'hésite pas ! Autrement dit, quels sont les autres registres qui peuvent me poser problème si je ne les initialise pas ??? merci d'avance !!!

  5. #4
    Gérard

    Re : programme fonctionnel sur p16f84a et pas sur 16f628

    On verra au prochain bug.
    En général, si comparateur ou CAN, le port A est à la mise sous tension en "analogique".

  6. A voir en vidéo sur Futura
  7. Comparatifs

    Gagnez du temps et de l'argent grâce à nos comparatifs de produits. Parmi nos sujets :
  8. #5
    aminos18

    Re : programme fonctionnel sur p16f84a et pas sur 16f628

    Mr. Gérard, je vais vous poser quelques questions :

    * Quels sont les registres qui doivent être initialisés pour utliser la plupart des pins (registre A et B) du 16F628 comme étants des I/O ? CMCOM en fait partie par exemple.

    => Il est dit que le 16F628 dispose d'un "USART", est ce un UART software ou quoi au juste ?
    en fait, je voulais dire, quelle est la différence entre une implémentation software du protocole UART et ce "USART" ? qu'est ce qu'il a de si spéciale ?


    par exemple, je suis entrain de concevoir un récepteur à base de PIC16F628 + un Tranceiver RF, le tranceiver communique avec le pic au moyen d'un bus SPI, et le PIC communique avec l'ordinateur via un port série RS232, Il y a un circuit MAX232N pour adapter les signaux,... bref, les mots que le PIC reçoit de la part du module RF seront transmis vers l'ordinateur,... j'ai utilisé ce genre d'instructions :
    Code:
    VAR TX_Pin       : SBIT AT RA0_bit;    TX_Dir       : SBIT AT TRISA0_bit;
    RX_Pin       : SBIT AT RA1_bit;    RX_Dir       : SBIT AT TRISA1_bit; /* Ne sera pas utilisé, c'est juste pour la forme */
    ....
    BEGIN
    
    TX_Dir := 0;
    ....
    Soft_Uart_Init(PORTA, 0, 1, 9600, 0); /* communication à 9600 bps, RA0 -> TX et RA1 -> RX */
    ....
    .....
    Chanl := MRF_Recv(ReceivedData, _On); // Adresse de l'émetteur sur 16 bits
    
    Soft_Uart_Write(Lo(Chanl)); // on envoie l'octer du poids faible de l'adresse.
    Soft_Uart_Write(Hi(Chanl));  // on envoie l'octer du poids fort de l'adresse.
    Soft_Uart_Write(ReceivedData); // On envoie le "payload" la donnée utile.
    ...
    END.
    donc ici comme d'habitude, je dois initaliser le registre CMCON pour désactiver les comparateurs et initialiser TRISA.0 pour pouvoir utiliser la pin RA0 comme sortie (Output)
    Je n'ai pas encore terminé le circuit du récepteur, le code est compilable, mais je ne sais pas si les fonctions prédéfinies du mikropascal me poseront des problèmes....

    J'aimerais savoir votre avis sur ce sujet là... et surtout quel est l'apport si j'utilise le "fameux" usart du PIC (pin 8 : RB2/TX/CK)

    Merci d'éclairer ma lanterne ! Je vous en serai reconnaissant.

  9. #6
    aminos18

    Re : programme fonctionnel sur p16f84a et pas sur 16f628

    le port A est à la mise sous tension en "analogique".
    je n'ai pas trouvé de registre genre ADCON1 dans le datasheet ! Apparemment, le 16F628 ne dispose pas de convertisseur analogique/numérique.

  10. Publicité
  11. #7
    Gérard

    Re : programme fonctionnel sur p16f84a et pas sur 16f628

    Citation Envoyé par aminos18 Voir le message
    je n'ai pas trouvé de registre genre ADCON1 dans le datasheet ! Apparemment, le 16F628 ne dispose pas de convertisseur analogique/numérique.
    Normal, il n'en a pas.
    Il faut éliminer les comparateurs analogiques.

  12. #8
    Gérard

    Re : programme fonctionnel sur p16f84a et pas sur 16f628

    Si tu utilises l'UART hard, le soft sera plus compact.

Discussions similaires

  1. [Blanc] pas de vidange et essorage sur 1 programme BB60
    Par tabletop83 dans le forum Dépannage
    Réponses: 2
    Dernier message: 03/10/2009, 20h42
  2. [Blanc] ne veut pas essorer et bloque sur programme
    Par macarbra dans le forum Dépannage
    Réponses: 0
    Dernier message: 09/06/2009, 12h37
  3. Programme sur un 16F628 (UART)
    Par satora dans le forum Électronique
    Réponses: 0
    Dernier message: 07/04/2008, 21h47
  4. Help! Urgent! Sujet sur l'osmose pas au programme!
    Par Demoizelle dans le forum Biologie
    Réponses: 2
    Dernier message: 07/01/2007, 13h33
  5. Interruptions : changement de RB4-7 sur P16F84A
    Par Nico G. dans le forum Électronique
    Réponses: 10
    Dernier message: 21/01/2006, 01h56
Découvrez nos comparatifs produits sur l'informatique et les technologies.