yalein
Messages postés6Date d'inscriptionjeudi 9 mars 2006StatutMembreDernière intervention19 mai 2006
-
18 mai 2006 à 23:54
chatelin71
Messages postés2Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention 1 juin 2006
-
1 juin 2006 à 15:37
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 !!!
chatelin71
Messages postés2Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention 1 juin 2006 1 juin 2006 à 15:37
bonjour,
peut être conviendrait il de postionner le portc pour la chauffe a l'initialisation et ensuite,
agir sur trisc pour valider la sortie ou la mettre en haute impedance
cordialement
chatelin71