Fixé une broche à un niveau logique haut

yalein Messages postés 6 Date d'inscription jeudi 9 mars 2006 Statut Membre Dernière intervention 19 mai 2006 - 19 mai 2006 à 13:17
src77 Messages postés 1 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 30 mai 2006 - 30 mai 2006 à 12:40
Bonjour à tous,

Je suis en train de finir un thermostat avec commande de chauffe d'un cabe chauffant. Mais apres avoir comparé la température de seuil avec celle réel et que je veux commander la chauffe du cable (via un relais), la broche du pic ne reste pas à 1. Je m'explique : j'ai créé deux macros, une qui force à un niveau haut le bit 1 du port C (commande de chauffe) et une autre qui "relache" se meme bit (commande d'arret chauffe). Mais quand je sort du sous programme de chauffe, le bit 1 du portc ne rest pas a un niveau haut et passe a un niveau bas, donc arret forcé de la chauffe.

Est -il possible d'avoir un niveau haut sur le bit tout en exécutant d'autre sous programmes, puis commander ensuite le niveau bas?

Je vous met mes lignes de codes pour aider a la compréhension.
Merci d'avance pour votre aide !

**********voici les macros**********
; La macro suivante règle le bit1 du PORTC en sortie et y impose un niveau haut

COM_CABLE_ON Macro
; Banque 1
banksel TRISC
bcf COM_CABLE ; = sortie (agit sur le TRISC)
; Banque 0
banksel PORTC
bsf COM_CABLE ; = niveau Haut (on commande la chauffe du câble)
endM

; La macro suivante règle le bit1 du PORTC en entrée (relâche)

COM_CABLE_OFF Macro
; Banque 1
banksel TRISC
bsf COM_CABLE ; = entrée (on arrête la chauffe du câble)
; Banque 0
banksel PORTC
endM

********sous programme de chauffe ou d'arret******
COMMANDE_CHAUFFE
movlw D'25' ; Temperature de reference pour la chauffe
movwf Temp_Comp
movf TEMPERATURE, W
subwf Temp_Comp,W ;Temp_comp-TEMPERATURE
btfss STATUS, Z ; tester le bit Z, si=0 -> teste carry
; si=1 -> resultat nul ->arret chauffe
btfss STATUS, C ; tester le carry, si=0 resultat negatif->arret chauffe
; si=1 resultat positif->departchauffe
goto ARRET_CHAUFFE
goto DEPART_CHAUFFE

ARRET_CHAUFFE
COM_CABLE_OFF ;arret de la chauffe du cable (voir macro)
CALL LCD_EFFACE
CALL LCD_CURSEUR

movlw 0x2155 ; adresse du message à afficher
movwf ADR_EEPROM ; affichage de "Depart chauffe"
call AFF_MSG

return

DEPART_CHAUFFE
COM_CABLE_ON ;depart de la chauffe du cable (voir macro)
CALL LCD_EFFACE
CALL LCD_CURSEUR

movlw 0x2144 ; adresse du message à afficher
movwf ADR_EEPROM ; affichage de "Arret chauffe"
call AFF_MSG

return ;retourne au test de température pour savoir si la chauffe à suffit;
; c'est en sortant de DEPART_CHAUFFE que le bit 1 revient au niveau bas !!!

1 réponse

src77 Messages postés 1 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 30 mai 2006
30 mai 2006 à 12:40
[auteurdetail.aspx?ID=714814
]yalein,

Quelle est la version de ton PIC et quel est la pin que tu commande ??

Normalement on doit utiliser le LATx pour fixer un bit en sortie et le PORTx pour lire un bit en entrée,

vérifie celà dans la doc de ton PIC (bien entendu celà dépend de la
version de ton PIC, certain PIC utilise juste le PORTx pour
input/output)..


Autre possibilité, tes routines de contrôle d'affichage LCD peuvent influer sur ta commande de chauffe..

A+

SRC77++
0
Rejoignez-nous