Aller au contenu


Photo
- - - - -

probleme PIC 16F877A


  • Veuillez vous connecter pour répondre
9 réponses à ce sujet

#1 babylone_59

babylone_59

    Nouveau membre

  • Membres
  • 28 messages

Posté 14 avril 2008 - 10:17

Bonjour
J'aimerai programmer un PIC 16F877A.
Tout d'abord pour verifier si mon programmateur fonctionne correctement je veux essayer de programmerle pic pour faire clignotter des leds sur les ports B et D.
Donc j'ai fais mon programme, j'ai programmer mon pic.Jusque la pas de problemes.
Ensuite je mets mon PIC sur ma plaque d'essai et la rien ne se passe, on dirai que mon PIC n'est pas programmer.Pourtant mon programme est bien dessus.
Donc soit mon montage ou soit mon programme n'est pas bon .
Ou alors derniere solution je crois que mon PIC est programmer est ce n'est pas le cas.
Voici mon programme.Si quelqu'un peut l'essayer et me dire si sa fonctionne chez lui, ce serai un probleme de moin a verifier. Merci

;**********************************************************************
;   									  *
;	Test led sur un 16F877A - 20 Mhz					  *
;																	 *
;									  *
;										  *
;**********************************************************************
;																	 *
;	Filename:		led.asm										   *
;	Date:		  25/06/00										  *
;	File Version:  1												 *
;																	 *
;	Author:		Julien											*
;	Company:	   Fribotte										  *
;																	 * 
;																	 *
;**********************************************************************
;																	 *
;	Files required: rien											 *
;																	 *
;																	 *
;**********************************************************************
;																	 *
;	Notes: Quartz 20 Mhz											 *
;																	 *
;																	 *
;**********************************************************************


	list	  p=16F877A			; list directive to define processor
	#include <p16F877A.inc>		; processor specific variable definitions

	__CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
; Pas de code protege, pas de watch hdog timer, delai de demarrage, horloge HS.


;**********************************************************************
;																	 *
;	Variables														*
;																	 *
;																	 *
;**********************************************************************


; Variable de temporisation
tempo50µ	EQU	0x20	; Variable tempo 50 µs
tempo10ms	EQU	0x21	; Variable tempo 10 ms
tempo1s		EQU	0x22	; Variable tempo 1s

;**************************************************************** DEBUT
		ORG	 0x000		  ; processor reset vector
		  GOTO	main		   ; go to beginning of program


;**********************************************************************
;																	 *
;	Interruption Timer											   *
;																	 *
;																	 *
;**********************************************************************

		ORG	 0x0005		  ; interrupt vector location
				; Ici on s'en sert pas !
		RETFIE				 ; return from interrupt



;**********************************************************************
;																	 *
;	Programme Main												   *
;																	 *
;																	 *
;**********************************************************************


main

;***** initialisations
		CALL	InitIO	; On intialise les ports d'E/S (A et B)

;***** boncle infinie
boucle		MOVLW	D'255'
		MOVWF	PORTD
		MOVLW	D'255'
		MOVWF	PORTB
		CALL 	Wait1s		
		CLRF	PORTD
		CLRF	PORTB
		CALL 	Wait1s		
		GOTO	boucle


;***** Attente de 1 s (exactement 1.00204 s)
Wait1s
		MOVLW	D'99'	;	99 fois
		MOVWF	tempo1s	; stockage dans la variable tempo50µ
T1sboucle	CALL	Wait10ms
		DECFSZ	tempo1s,1; décremente et test
		GOTO	T1sboucle; on boucle tant que <>0  
		RETURN


;***** Attente de 10 ms (exactement 10.02 ms)
Wait10ms
		MOVLW	D'198'	;	198 fois
		MOVWF	tempo10ms; stockage dans la variable tempo50µ
T10msboucle	CALL	Wait50µs
		DECFSZ	tempo10ms,1; décremente et test
		GOTO	T10msboucle; on boucle tant que <>0
		RETURN


;***** Attente de 50 µs (exactement, en comptant le temps d'appel)
Wait50µs	NOP
		NOP
		MOVLW	D'81'	;	81 fois
		MOVWF	tempo50µ; stockage dans la variable tempo50µ
T50µsboucle	DECFSZ	tempo50µ,1; décremente et test
		GOTO	T50µsboucle; on boucle tant que <>0  0.2*3=0.6 µs en tout
		RETURN


;**********************************************************************
;																	 *
;	Initialisation des ports d'E/S						   		  *
;																	 *
;																	 *
;**********************************************************************


InitIO
	CLRF	PORTD	; Initialise le port D
	CLRF	PORTB	; Initialise le port B
	BSF	STATUS, RP0; Bank 1 selectonnee
	MOVLW	0x0	; Port RD7-RD0 en sortie
	MOVWF	TRISD	;	/
	MOVLW	0x0	; Port RB7-RB0 en sortie
	MOVWF	TRISB	;	/
	BCF 	STATUS,	RP0; Bank 0 selectonnee
	RETURN


;**********************************************************************
;																	 *
;	Fin											  *
;																	 *
;																	 *
;**********************************************************************


	END					; directive 'end of program'


et voici le code HEX

0000: 2806 3FFF 3FFF 3FFF 3FFF 0009 2023 30FF  .ÿÿÿÿ.#ÿ
0008: 0088 30FF 0086 2010 0188 0186 2010 2807  ˆÿ†.ˆ†..
0010: 3063 00A2 2016 0BA2 2812 0008 30C6 00A1  c¢.¢..Æ¡
0018: 201C 0BA1 2818 0008 0000 0000 3051 00A0  .¡....Q 
0020: 0BA0 2820 0008 0188 0186 1683 3000 0088   ..ˆ†ƒ.ˆ
0028: 3000 0086 1283 0008 3400 3400 3FFF 3FFF  .†ƒ...ÿÿ
0030: 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF  ÿÿÿÿÿÿÿÿ

J'espere que vous pourez me donner un petit coup de main
Merci d'avance
Julien

#2 Matthieu

Matthieu

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 604 messages
  • Gender:Male

Posté 14 avril 2008 - 10:29

Regarde les fusibles , parfois on les oublie : HS = quartz 20 M

Vérifie que tu as placer 2 condensateur pour ton quartz ...
Si tu utilise un régulateur n'oublie pas le condensateur de filtrage et le condensateur de découplage .....

Voila , s'est des erreurs que j'ai déjà faite / et que j'ai déjà rencontré ...

#3 babylone_59

babylone_59

    Nouveau membre

  • Membres
  • 28 messages

Posté 14 avril 2008 - 11:22

Je n'est pas placer de fusible donc pas de probleme a ce niveau!lol
Par contre j'ai bien mon quartz de 20Mhtz avec ses condo de 33pF.
Et j'ai bien mes 2 condo pour mon régulateur.
Comment verifier si mon quartz fonctionne correctement?Normalement il est neuf donc il doit etre bon mais bon on ne sais jamais.
Merci

#4 Matthieu

Matthieu

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 604 messages
  • Gender:Male

Posté 14 avril 2008 - 11:45

Ta un oscilo a 60 Mhz ?

Si oui , tu peux le tester , mais bon j'ai jamais vu de quartz HS ,

Sinon , tu n'as pas placer de fusible cherche pas plus loins , il les met souvent par défaut en RC , donc s'est ton probléme .

Tu as quoi comme programateur ?

#5 JEF

JEF

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 810 messages
  • Gender:Male
  • Location:St Cannat (13)

Posté 14 avril 2008 - 06:12

Je crois que 33pF c'est un peu trop. je mettrai plutot 12 ou 22pF.

Chaque jour est le premier du reste de ta vie.


#6 babylone_59

babylone_59

    Nouveau membre

  • Membres
  • 28 messages

Posté 14 avril 2008 - 06:44

J'ai un programmateur JDM.
Pourquoi l'absence de fusible peut creer un probleme?
voici mon montage:

Image IPB

Seule les valeurs des resistances change un petit peu.

#7 Matthieu

Matthieu

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 604 messages
  • Gender:Male

Posté 14 avril 2008 - 07:00

Condensateur de filtrage TRÈS IMPORTANT et moi , je met toujours des 22pF

#8 babylone_59

babylone_59

    Nouveau membre

  • Membres
  • 28 messages

Posté 14 avril 2008 - 07:58

Je n'ai pas de 22pF sous la main pour le moment.
Mais des que j'en ai j'essai. Vous pensez que c'est a cause de sa??
Sinon qu'es ce que ça pourré etre d'autre?
Le PIC ne possede pas une horloge interne?
Que faire pour la mettre en oeuvre ( au niveau programme et au niveau montage)?
Merci

#9 Matthieu

Matthieu

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 604 messages
  • Gender:Male

Posté 15 avril 2008 - 09:03

Mais des que j'en ai j'essai. Vous pensez que c'est a cause de sa??

On le pense mais sa peux être du a autre chose .

Sinon qu'es ce que ça pourré etre d'autre?

Condensateur de filtrage TRÈS IMPORTANT




Le PIC ne possede pas une horloge interne?

Certains mais pas le pic 16F87X

Que faire pour la mettre en oeuvre ( au niveau programme et au niveau montage)?

Place les condensateurs ( très important , sinon , sa feras des reset tout le temps ( j'ai déjà fait la bêtise . ) )

Vérifie tes fusibles .

#10 babylone_59

babylone_59

    Nouveau membre

  • Membres
  • 28 messages

Posté 15 avril 2008 - 09:48

ok je vais tester avec des 22pF pour le quartz au lieu de 33 et je vous dis quoi.
En tout cas merci de votre aide.
A bientot
Julien




0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users