Pic16f88 CAN
Répondre à la discussion
Affichage des résultats 1 à 22 sur 22

Pic16f88 CAN



  1. #1
    cougar73

    Pic16f88 CAN


    ------

    bonjour

    j aimerais faire une mesure sur une plage de mesure de 0v à 0.6v avec une résolution de 10bits.

    si je m est VCFG1 à 1 et VCFG0 à 0, et sur l entrée RA3 (+Vref) une tension de 0.6v comme référence de tension.

    ça marche ou je me trompe ???

    merci d avance pour vos réponses

    -----

  2. #2
    invitefaaca50b

    Re : Pic16f88 CAN

    ben non, regarde sur la datasheet, on ne peut pas affecter une tension de reference inferieure a 2.56V, je me suis fais pieger au debut aussi....
    Il te reste a amplifier le signal a mesurer (par exemple si ta reference devait etre a 0.6V, tu la passe a 2.56V (avec reference tension adhoc), et tu insere sur ton entree CAN un AOP non inverseur avec un gain de 2.56/0.6=4.266.

    0.6V je parie que tu voulais utiliser une diode silicium comme reference de tension, mais ca marche pas du tout comme ca...

  3. #3
    cougar73

    Re : Pic16f88 CAN

    merci Franck-26 de ta réponse.

    c'est pour une alim de labo qui est prévu avec des modules 200mV, s était 0.2V au lieu de 0.6v je m étais trompé
    pour mesurer U, I et IConsigne voilas

    y aurait il pas une autre solution que je viens de voir dans le pdf de fabrice.sincere.
    regardes 1-2- Choix des tensions de référence
    exemple2http://fabrice.sincere.pagesperso-or.../ADC_16F88.htm



    merci de ton aide Franck

  4. #4
    invitefaaca50b

    Re : Pic16f88 CAN

    la notice stipule qu'on ne peut pas utiliser une VREF <2.56V. c'est le fabricant qui le dit, apres libre a toi de jouer en dehors des clous... Ca peut marcher ou pas...
    Ensuite pour faire ta mesure de tension de ton alim, tres simple, tu fais un diviseur de tension.
    Quelle tension maxi pour ton alim???

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

    Re : Pic16f88 CAN

    ce que je veux dire on prend une tension de 2.8V pour pour RA2 et pour RA3 3v et si je comprends bien
    on configure VCFG0 et VCFG1 à 1 tous les deux il soustrait les tensions ce qui fais 0.2v

    autrement pour l alim 30V 3A

    voilas merci

  7. #6
    invitefaaca50b

    Re : Pic16f88 CAN

    NON... tu vas choisir pour Vref+ 5.12V, attention, pas le 5V d'alim, mais une reference 5.12V. et tu mets ton Vref- a la masse. Ensuite tu vas faire un diviseur par 10 pour avoir sur l'entree CAN 3V pour une tension alim de 30V.
    tu vas utiliser 9 bits MSB (bits 9>1) pour avoir un quantum de 0.1V. Le bit 0 sera le 20eme de volt de precision a rajouter.
    Ensuite, tu fais une division de tes 9 bits pour sortir 5 octets dont 3 seront reellement utilisés (exemple 15.5)
    Apres, tu rajouteras a l'affichage de ton voltage sur 3 octets un quatrieme octet qui sera 5 dans le cas ou le bit 0=1 ou 0 si le bit 0=0

    Par exemple si ton code est 128 sur 9 bits (bits 9>1) avec le bit 0 = 1, ca te donnera 12.85V

  8. #7
    cougar73

    Re : Pic16f88 CAN

    ok Franck merci de ta patience pour mon obstination

    bonne soirée

  9. #8
    invitefaaca50b

    Re : Pic16f88 CAN

    bonne soiree aussi, pour le pont diviseur, 9.1K et 91K pour diviser par 10 en respectant l'impedance d'entree du CAN
    L'avantage de faire comme ca, c'est qu'on obtient une valeur equivalente a la tension a la decimale pres. et une simple division 9 bits vers 5 afficheurs permet de faire l'affichage. Apres, reste a gerer la conversion 7 segments pour les afficheurs LED...

  10. #9
    cougar73

    Re : Pic16f88 CAN

    ok je voulais y faire afficher sur un lcd 20*2

    bonne soirée et bon week

  11. #10
    invitefaaca50b

    Re : Pic16f88 CAN

    je te mettrais la partie de traitement que j'utilise pour mon afficheur LCD... Prise sur le net et adaptee...

  12. #11
    cougar73

    Re : Pic16f88 CAN

    merci

  13. #12
    invitefaaca50b

    Re : Pic16f88 CAN

    Ci dessous la routine de gestion d'un afficheur LCD avec le HD77480, que j'ai un peu amelioré pour la lisibilité, et configurée en 4Mhz, reste a selectionner les bonnes tempo pour le 8MHz et enlever les ; pour activer les nop en plus...

    Code:
    ;	routines en mode 4 Bits avec afficheur à base de HD77480
    ;       ecrite par Gilles Chevalerias 
    ;	E.mail:gilles.chevalerias@Ifrance.com
    ;
    ; Pour utiliser cette routine ecrire #include LCD.asm je vous conseillle
    ; de placer cette ligne juste avant la directive END du programme principal
    ; la routine s'occupe de  mettre en sortie les pins utilisées 
    ; pour les pics 12XXX et 16xxx
    ; si vous n'avez pas besoin de lire dans l'afficheur, pour lire la position du curseur,
    ; par exemple, vous pouvez vous passer de LCD_RW qu'il suffit de relier à la masse,
    ; et de ne pas definir LCD_RW, le cas et prevue
    ;
    ;	Les commandes:
    ;	LCDinit : initialisation de l'afficheur
    ;	LCDchar : envoi un caractere ( contenu dans w ) sur l'afficheur
    ;	LCDins  : envoi une commande ( contenue dans w) à l'afficheur
    ;	LCDcls  : efface l'afficheur
    ;	LCDcls2 : efface la deuxieme ligne de l'afficheur
    ;	LCDhome : renvoi le curseur en haut a gauche
    ;	LCDlin1 : renvoi le curseur au debut de la ligne 1
    ;	LCDlin2 : renvoi le curseur au debut de la ligne 2
    ;
    ;	pour positionner le curseur sur la ligne 1 :	movlw 0x80+offset
    ;							call LCDins
    ;
    ;	pour positionner le curseur sur la ligne 2 : 	movlw 0xC0+offset
    ;							call LCDins
    ;
    ;	variables à definir dans le programme principal:
    ;
    ;	LCDtmp,LCDtmp2		; LCD
    ;	LCDt1,LCDt2,LCDt3,LCDt4	; LCD
    ;	D0, D1			; Tempos
    ;
    ; à definir dans le programme principal:
    ; on peut choisir n'importe quelle E/S du pic
    ; pour les datas, (D7,D6,D5,D4), il nest pas necessaire que toutes les pins
    ; soient sur le meme port, ni quelles se suivent, idem pour E,RW,RS 
    ; LEURS AFFECTATIONS SONT TOTALEMENT LIBRES
    ; attention à RA4 qui est en drain ouvert et que les pins choisies 
    ; soient configurées en E/S numériques
    ;#DEFINE  LCD_pin_D7	PORTX,Y		; E/S du pic ou est connectée la pin D7 de l'afficheur
    ;#DEFINE  LCD_pin_D6	PORTX,Y		;    "        "       "         "    D6  "   "    "
    ;#DEFINE  LCD_pin_D5	PORTX,Y		;    "        "       "         "    D5  "   "    "
    ;#DEFINE  LCD_pin_D4	PORTX,Y		;    "        "       "         "    D4  "   "    "
    ;#DEFINE  LCD_E   	PORTX,Y		;    "        "       "         "    E   "   "    "
    ;#DEFINE  LCD_RS  	PORTX,Y		;    "        "       "         "    RS  "   "    "
    ;#DEFINE  LCD_RW  	PORTX,Y		; ne pas déclarer LCD_RW si vous ne voulez pas
                                  		; l'utiliser, le cas est prevue
    
    
    ; *********************************
    ; *   INSTRUCTIONS  PROGRAMMEES   *
    ; *********************************
    
    LCDcls				; effacement de l'ecran
    	movlw	D'01'
    	call	LCDins
    	call Tempo1.5ms.4MHz	; Tempo 1.5ms @4MHz
    ;	call Tempo1.5ms.8MHz	; Tempo 1.5ms @8MHz
    	retlw 0
    
    LCDcls2 			; effacement de la deuxieme ligne
    	movlw	D'16'
    	movwf	LCDtmp2
    	movlw	0xC0
    	call	LCDins
    	call Tempo1.5ms.4MHz	; Tempo 1.5ms @4MHz
    ;	call Tempo1.5ms.8MHz	; Tempo 1.5ms @8MHz
    	movlw	' '
    	call	LCDchar
    	decfsz	LCDtmp2,f
    	goto $-3
    	retlw 0
    
    LCDhome 			; Positionne le curseur an haut a gauche du LCD
    	movlw	D'02'
    	call	LCDins
    	call Tempo1.5ms.4MHz	; Tempo 1.5ms @4MHz
    ;	call Tempo1.5ms.8MHz	; Tempo 1.5ms @8MHz
    	retlw 0
    
    LCDlin1				; positionne le curseur en debut de ligne 1
    	movlw	0x80
    	call	LCDins
    	call Tempo1.5ms.4MHz	; Tempo 1.5ms @4MHz
    ;	call Tempo1.5ms.8MHz	; Tempo 1.5ms @8MHz
    	retlw 0
    
    LCDlin2				; Positionne le curseur en debut de ligne 2
    	movlw	0xC0
    	call	LCDins
    	call Tempo1.5ms.4MHz	; Tempo 1.5ms @4MHz
    ;	call Tempo1.5ms.8MHz	; Tempo 1.5ms @8MHz
    	retlw 0
    
    LCDchar				; Envoi caractere
    	movwf	LCDtmp
    	call	TEST_BF		; tempo 100µs ou teste de Busy Flag 
    	IFDEF	LCD_RW
    	bcf     LCD_RW
    	ENDIF
    	bsf     LCD_RS
    	call	LCD_envoie_octet
    	retlw 0
    
    LCDins				; envoi instruction	
    	movwf   LCDtmp
    	call 	TEST_BF		; tempo 100µs ou teste de Busy Flag 
    	IFDEF	LCD_RW
    	bcf     LCD_RW
    	ENDIF
    	bcf     LCD_RS
    	call	LCD_envoie_octet
    	retlw 0
    
    
    ; *********************************
    ; * INITIALISATION DE L'AFFICHEUR *
    ; *********************************
    
    LCDinit	
    	banksel	H'85'		; on passe en bank1 valable pour les pics 16XXX et 12XXX
    	bcf     LCD_E		; on met en sortie toutes les pins utilisées
    	bcf     LCD_RS
    	IFDEF	LCD_RW
    	bcf     LCD_RW
    	ENDIF
    	bcf	LCD_pin_D7	
    	bcf	LCD_pin_D6
    	bcf	LCD_pin_D5
    	bcf	LCD_pin_D4
    	banksel	H'05'		; on revient en bank0
    	bcf	LCD_pin_D7
    	bcf	LCD_pin_D6
    	bsf	LCD_pin_D5
    	bsf	LCD_pin_D4
    	bcf     LCD_E
    	bcf     LCD_RS
    	IFDEF	LCD_RW
    	bcf     LCD_RW
    	ENDIF
    	call Tempo15ms.4MHz	; Tempo 15ms @4MHz
    ;	call Tempo15ms.8MHz	; Tempo 15ms @8MHz
    	bsf     LCD_E
    ;	nop			; NOP 500ns en mode8MHz pour arriver a 1µs en tout
    	bcf     LCD_E		; validation valeur H'3'
    	movlw   d'252'
    	movwf   LCDt1
    	movlw   D'04'
    	call Tempo4ms.4MHz	; Tempo 4ms @4MHz
    ;	call Tempo4ms.8MHz	; Tempo 4ms @8MHz
    	bsf     LCD_E
    ;	nop			; NOP 500ns en mode8MHz pour arriver a 1µs en tout
    	bcf     LCD_E		; validation valeur H'3'
    	call 	TEST_BF		; tempo 100µs ou teste de Busy Flag
    	bsf     LCD_E
    ;	nop			; NOP 500ns en mode8MHz pour arriver a 1µs en tout
    	bcf     LCD_E		; validation valeur H'3'
    	call 	TEST_BF		; tempo 100µs ou teste de Busy Flag
    	bcf	LCD_pin_D4
    	bsf     LCD_E
    ;	nop			; NOP 500ns en mode8MHz pour arriver a 1µs en tout
    	bcf     LCD_E		; validation valeur H'2'
    	movlw   0x028		; Envoi de la commande Fonction 4-bit , Font, Nombre de lignes 0x028 original
    	call    LCDins
    	movlw   0x008		; display off
    	call    LCDins
    	movlw   0x00C		; display on / Curseur off 
    ;	movlw   0x00E		; display on / Cursor on
    ;	movlw   0x00F		; display on / curseur clignotant
    	call    LCDins
    	movlw   0x006
    	call LCDins
    	retlw 0
    
    
    
    ; *********************************
    ; *      ROUTINE ENVOI OCTET      *
    ; *********************************
    
    LCD_envoie_octet
    	bcf	LCD_pin_D7	; on met à 0 les sorties
    	bcf	LCD_pin_D6
    	bcf	LCD_pin_D5
    	bcf	LCD_pin_D4
    
    	btfsc	LCDtmp,7	; on teste le bit 7 du caractere
    	bsf	LCD_pin_D7	; il est à 1 donc sortie correspondante à 1
    	btfsc	LCDtmp,6
    	bsf	LCD_pin_D6
    	btfsc	LCDtmp,5
    	bsf	LCD_pin_D5
    	btfsc	LCDtmp,4
    	bsf	LCD_pin_D4
    	bsf	LCD_E
    ;	nop			; Nop pour 1µs de duree de validation pour 8MHz
    	bcf	LCD_E		; validation du premier quartet
    
    	bcf	LCD_pin_D7	; on remet à 0 les sorties
    	bcf	LCD_pin_D6
    	bcf	LCD_pin_D5
    	bcf	LCD_pin_D4
    
    	btfsc	LCDtmp,3
    	bsf	LCD_pin_D7
    	btfsc	LCDtmp,2
    	bsf	LCD_pin_D6
    	btfsc	LCDtmp,1
    	bsf	LCD_pin_D5
    	btfsc	LCDtmp,0
    	bsf	LCD_pin_D4
    	bsf	LCD_E
    ;	nop			; Nop pour 1µs de duree de validation pour 8MHz
    	bcf	LCD_E		; validation du second quartet
    	retLW 0
    
    
    
    ; *********************************
    ; *        TEMPORISATIONS         *
    ; *********************************
    
    Tempo100us.4MHz
    	movlw D'33'
    	movwf D0
    	decfsz D0, f
    	goto $-1
    	retlw 0
    
    Tempo100us.8MHz
    	movlw D'66'
    	movwf D0
    	decfsz D0, f
    	goto $-1
    	nop
    	retlw 0
    
    Tempo1.5ms.4MHz
    	movlw D'43'
    	movwf D0
    	movlw D'2'
    	movwf D1
    	decfsz D0, f
    	goto  $+2
    	decfsz D1, f
    	goto $-3
    	nop
    	nop
    	retlw 0
    
    Tempo1.5ms.8MHz
    	movlw D'87'
    	movwf D0
    	movlw D'3'
    	movwf D1
    	decfsz D0, f
    	goto  $+2
    	decfsz D1, f
    	goto $-3
    	nop
    	nop
    	retlw 0
    
    Tempo4ms.4MHz
    	movlw D'31'
    	movwf D0
    	movlw D'4'
    	movwf D1
    	decfsz D0, f
    	goto  $+2
    	decfsz D1, f
    	goto $-3
    	nop
    	nop
    	retlw 0
    
    Tempo4ms.8MHz
    	movlw D'63'
    	movwf D0
    	movlw D'7'
    	movwf D1
    	decfsz D0, f
    	goto  $+2
    	decfsz D1, f
    	goto $-3
    	nop
    	nop
    	retlw 0
    
    Tempo15ms.4MHz
    	movlw D'183'
    	movwf D0
    	movlw D'12'
    	movwf D1
    	decfsz D0, f
    	goto  $+2
    	decfsz D1, f
    	goto $-3
    	nop
    	nop
    	retlw 0
    
    Tempo15ms.8MHz
    	movlw D'111'
    	movwf D0
    	movlw D'24'
    	movwf D1
    	decfsz D0, f
    	goto  $+2
    	decfsz D1, f
    	goto $-3
    	nop
    	nop
    	retlw 0
    
    
    ; *********************************
    ; *       TEST BUSY FLAG          *
    ; *********************************
    
    TEST_BF				; sous routine de test de Busy Flag
    	IFDEF	LCD_RW
    	banksel	H'85'
    	bsf	LCD_pin_D7
    	bsf	LCD_pin_D6
    	bsf	LCD_pin_D5
    	bsf	LCD_pin_D4
    	banksel	H'05'
    	bcf	LCD_RS
    	bsf	LCD_RW
    	bsf	LCD_E		; pour lire BF et 3  bits MSB de l'adresse
    	nop 
    	btfsc	LCD_pin_D7
    	bcf	LCD_E
    	nop
    	bsf	LCD_E		; pour lire 4  bits LSB de l'adresse
    	nop
    	bcf	LCD_E		
    	goto	$-7
    	bcf	LCD_RW
    	banksel	H'85'
    	bcf	LCD_pin_D7
    	bcf	LCD_pin_D6
    	bcf	LCD_pin_D5
    	bcf	LCD_pin_D4
    	banksel	H'05'
    
    	ELSE
    	call Tempo100us.4MHz	; Tempo 100µs @4MHz
    ;	call Tempo100us.8MHz	; Tempo 100µs @8MHz
    
    	ENDIF
    	return
    Et ci dessous la routine pour convertir une chaine sur 16 bits vers 5 octets pour piloter un LCD
    Exemple, si tu as la chaine qui contient 15874, ca va te donner 5 caracteres qui seront 1 5 8 7 4

    Code:
    ; ==================================================================================
    ; Conversion d'un nombre binaire 16 bits -> BCD
    ; D'après une note de Microchip
    ; N nombre binaire 16 bits est constitué de deux octets.
    ; N1 octet de poids fort et N0 octet de poids faible
    ; BCD est le résultat en Binaire Codé Décimal. BCD est constitué de 3 octets,
    ; BCD2 poids fort, BCD1 poids médian et BCD0 poids faible.
    ; Un octet est formé de deux quartets. Chaque quartet est un chiffre BCD.
    ; Vérifier avant l'opération que N est différent de 0
    ; Le contenu de N est perdu lors de l'exécution du programme
    ; POLICE / Courier New modifiée avec 0 barré
    ; Doumai.Terret@Orange.fr
    ; ==================================================================================
                LIST      P=16F628, F=INHX8M, r=dec
                include "P16F628.inc"
                
    	__CONFIG	_BODEN_OFF  & _PWRTE_OFF & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC
    	
    	; Do not show warnings										
    	ERRORLEVEL      -224												
    			
    		cblock 0x20
    BIN1,BIN0 : 1				; Nombre binaire 16 bits à convertir
    BCD2,BCD1,BCD0 : 1			; Résultat BCD sur 5 digits ( Max = 65 535 )
    Nbits : 1					; Nombre de bits (16)
    Ajust : 1					; Variable pour ajustement
    		endc
    ;
    ;===================================================================================
    	ORG	0x0000	
    		goto	main
    	
    main:	bcf		STATUS,RP0		; Bank 0
    		movlw	0x07			; Désactivation du mode comparateur et
    		movwf	CMCON			; passe en mode Entrées / Sorties
    ;
    		bsf     STATUS,RP0		; Bank 1
    		movlw	B'00010000'		; 
    		clrf	TRISB			; PortB en sortie
    	 	clrf    TRISA			; PortA en sortie
    		bcf		STATUS,RP0		; Bank 0
    ;
    		clrf	PORTB
    		clrf	PORTA
    ;
    		movlw	0xFF		; Pour Exemple :
    		movwf	BIN1		; Nombre Binaire = B'FFFF'
    		movlw	0xFF
    		movwf	BIN0
    ;
    BCD16	movlw	16			; Pour 16 décalages
    		movwf	Nbits
    ;
    		clrf	BCD0		; RAZ du Nombre BCD
    		clrf	BCD1
    		clrf	BCD2
    ;
    Conv0	bcf		STATUS,C	; Retenue = 0
    		rlf		BIN0,F		; Décalage à gauche du Nombre Binaire
    		rlf		BIN1,F
    		rlf		BCD0,F		; Décalage à gauche du Nombre BCD
    		rlf		BCD1,F
    		rlf		BCD2,F
    ;
    		decf	Nbits,F		; Teste si les 16 décalages sont réalisés
    		btfsc	STATUS,Z	; Si NON, on Skip pour continuer le calcul
    		goto	Fin			; Si OUI, la conversion est terminée (return pour SP)
    ;
    		movlw	BCD0		; Adresse de BCD0 -> W
    		movwf	FSR			; Adresse de BCD0 -> FSR
    		call	PLUS3		; Si BCD0 >= 5 Alors BCD0 + 3 -> BCD0
    ;
    		movlw	BCD1
    		movwf	FSR
    		call	PLUS3		; Si BCD1 >= 5 Alors BCD1 + 3 -> BCD0
    ;
    		movlw	BCD2
    		movwf	FSR
    		call	PLUS3		; Si BCD2 >= 5 Alors BCD2 + 3 -> BCD0
    ;
    		goto	Conv0
    Fin		nop					; Résultat	H'FFFF' = D'65535'
    		goto	Fin
    ; -----------------------------------------------------------------------------
    ; Ajustement / Commentaires relatifs à BCDx - Adressage Indirect
    ; -----------------------------------------------------------------------------
    ; Ajustement du quartet de poids faible de BCDx
    ; Si ce quartet est supérieur ou égal à 5, on ajoute 3 à ce quartet
    ; Il est plus simple de recopier le quartet dans W, d'ajouter 3 à W,
    ; de recopier cette valeur dans une variable temporaire ( Adjust ), 
    ; de tester si cette valeur est supérieure ou égale à 8 ( 5 + 3 ),
    ; ( il suffit dans ce cas de tester le bit de poids fort du quartet )
    ; si c'est le cas le contenu de la variable temporaire est recopiée dans BCDx,
    ; si ce n'est pas le cas BCDx garde sa valeur initiale.
    ;
    PLUS3	movlw	0x03		; 3 -> W
    		addwf	INDF,W		; 3 + BCDx -> W
    		movwf	Ajust		; 3 + BCDx -> Ajust
    		btfsc	Ajust,3		; Si le quartet de poids faible est >= 8
    		movwf	INDF		; Alors Adjust -> BCDx
    ;
    ; Ajustement du quartet de poids fort de BCDx
    ; Si ce quartet est supérieur ou égal à 5, on ajoute 3 à ce quartet,
    ; donc 0x30 à l'octet
    ;
    		movlw	0x30		; 0x30 -> W
    		addwf	INDF,W		; 0x30 + BCDx -> W
    		movwf	Ajust		; 0x30 + BCDx -> Ajust
    		btfsc	Ajust,7		; Si le quartet de poids fort est >= 8
    		movwf	INDF		; Alors Adjust -> BCDx
    		return
    
    ;
    		end
    ;

  14. #13
    cougar73

    Re : Pic16f88 CAN

    merci franck je vais essayer de comprendre tous sa.
    dis moi pourquoi une tension de reference de 5.12V et pas 5V ???

    bon week
    Dernière modification par cougar73 ; 23/06/2012 à 18h59.

  15. #14
    invitefaaca50b

    Re : Pic16f88 CAN

    5.12V plutot que 5.00V a cause de tes 10 bits de ton CAN. Tu utilises les 9 bits forts de ton CAN (512 possibilité entre 0 et 5.11V) pour avoir un quantum de 10mV.
    Tu aurais pu mettre une ref de tension de 2.56V et un diviseur 1/20 en entree du CAN pour pouvoir avoir en entree 1V pour 20 volts en entree de mesure.
    La solution de la ref de 2.56V serait meme mieux et plus facile a trouver.

    donc pour resumer avec la ref 2.56V:
    tu as admettons 30V en entree de mesure
    Ca te donne sur l'entree du CAN (apres le diviseur 1/20) une tension de 1.5V
    Le quantum pour une reference de 2.56V et 1024 pas est de 2.5mV soit 50mV avant le pont diviseur 1/20
    Donc si tu as 1.5V en entree CAN, ton code binaire sera 600

    Tu vas garder les 9 bits a partir de la gauche, soit la valeur 300, le bit 9 (MSB) servira juste a afficher le 1/100eme de volt

    000000ab cdefghij va devenir par decalage a droit 0000000a bcdefghi, le j sera traité separement pour afficher le 100eme de volt

    Tu vas passer tes 9 bits obtenus a la moulinette pour obtenir la valeur 3 0 0 et selon l'etat du 9eme bit (0 ou 1), ton 4eme chiffre sera 0 ou 5. Dans ce cas, tu auras 4 octets qui seront 3 0 0 0, tu afficheras les deux premiers octets tu rajoute la virgule, et les deux derniers chiffres. Ton LCD pourra donc afficher ta tension.
    Nota bene: Il te faut configurer une justification a droite pour avoir deux octets lisibles avec le convertisseur apres traitement du dernier bit

    J'espere ne pas m'etre planté avec tous ces chiffres...

  16. #15
    invite092cb13c

    Re : Pic16f88 CAN

    Citation Envoyé par Franck-026 Voir le message
    Ci dessous la routine de gestion d'un afficheur LCD avec le HD77480, que j'ai un peu amelioré pour la lisibilité, et configurée en 4Mhz, reste a selectionner les bonnes tempo pour le 8MHz et enlever les ; pour activer les nop en plus...
    Bonjour Franck
    J'ai vu que tu as utilisé la routine LCD que j'ai ecrite, tu l'as modifiée pour plusieurs vitesses d'oscillateur, tu aurais peut être dû utiliser l'assemblage conditionnel en fonction de la vitesse, un #DEFINE au début et des IFDEF et ELSE pour selectionner une ligne ou une autre.
    De toute façon c'est une bonne idée la modif pour de plusieurs vitesses.

    Gilles

  17. #16
    invitefaaca50b

    Re : Pic16f88 CAN

    Oui Gilles, quand un programme est bon, pourquoi re inventer la roue... j'ai fais juste une ou deux modifs en effet concernant les tempos imbriquees pas evidentes a lire de prime abord.
    En tout cas, tes maquettes devraient etre utilisées plus souvent pour faire le squelette des projets. C'est nickel quand on s'en sert...

    J'avais oublié de preciser: La premiere routine, celle qui gere l'afficheur est en fait un fichier .INC, un include qui est appelé en inclusion par le programme .ASM...

  18. #17
    cougar73

    Re : Pic16f88 CAN

    bonjour Franck-026

    j'aimerais savoir quelle différence y a t'il en une conversion avec interruption et sans interruption

    merci pour vos réponses

  19. #18
    invitefaaca50b

    Re : Pic16f88 CAN

    Simple.
    Sans interruption, ta conversion fait partie du programme principal dans le fil du programme.
    Avec interruption, ta conversion se fera sur une info, a n'importe quel endroit du programme, sur une activation qui peut etre
    - interruption sur un changement d'etat d'une entree
    - Sortie de SLEEP
    etc...

    si tu n'as pas la necessité de partir sur des interruptions, evide te t'y engager...

  20. #19
    cougar73

    Re : Pic16f88 CAN

    merci Franck

    bon je le ferais dans le fil du programme

    merci bonne soirée

  21. #20
    cougar73

    Re : Pic16f88 CAN

    bonjour

    Je me serre de logipic pour programmer mon pic 16f88, qui va mesurer les tensions de mon alimentation "U+, U-, I+, I- et IConsigne.
    J'ai choisis can PA0 à PA2, PA3 va servir d entrer pour la tension de référence 2.56V et les deux derniers can PA4 et PA5.
    J'aimerais savoir si j'ai pas de fautes pour initialiser le can je vous joints les deux fichiers logipic.

    merci d avances pour vos réponses bon week
    Images attachées Images attachées
    Fichiers attachés Fichiers attachés

  22. #21
    cougar73

    Re : Pic16f88 CAN

    bonjour

    personne pour me dire si c'est bon

    merci

  23. #22
    cougar73

    Re : Pic16f88 CAN

    bonjour Franck-026

    le trisA et trisB je dois le configurer dans initCan ou dans star 16f88 ?

    merci d avance pour les réponses

    bonne journée

Discussions similaires

  1. Horloge interne PIC16f88
    Par invite61268a46 dans le forum Électronique
    Réponses: 13
    Dernier message: 16/07/2009, 09h11
  2. PIC16F88: sortie RB6
    Par invite61268a46 dans le forum Électronique
    Réponses: 21
    Dernier message: 16/07/2009, 08h20
  3. Module PWM integré PIC16F88
    Par invite23f1d15c dans le forum Électronique
    Réponses: 3
    Dernier message: 22/01/2008, 19h27
  4. Pic16F88 pour Compteur
    Par invite68e72f91 dans le forum Électronique
    Réponses: 1
    Dernier message: 27/02/2007, 00h16
  5. programmation Pic16F88
    Par invitee17aeca5 dans le forum Électronique
    Réponses: 9
    Dernier message: 19/11/2006, 21h30
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...