Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : mazertoc
Challenge Temps-X
- F6FCO
Expert- Messages : 1420
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
La programmation avec le pickit se passe très bien... à l'écran. Ensuite sur le PIC ce n'est plus la même histoire, je suis sujet à des perturbations, dés que j'approche la main du 16F876 les ports changent d'état, et mieux... le PIC réagit avec la lampe de bureau. La lumière du bureau allumée tous les ports sont à 0 et les leds éteintes, lumière du bureau éteinte les ports passent à 1 et les leds s'allument. J'ai codé un programme magique.
Bref je pense que ma bidouille pour adapter un 28pins sur le 40pins est en fait une très belle antenne ultra performante , et toutes les connections pour relier le PIC à la matrice associées à la fréquence d'horloge de 20Mhz n'arrangent pas les choses.
Pas la peine de bosser comme çà, je vais attendre de recevoir mes 877 pour continuer sur une base propre, ils ne devraient plus tarder.
Voici mon programme, je n'ai pas mis toutes les init. Il ne gère pour l'instant que le PORTB mais je l'étendrai ensuite au PORTC.
Bref je pense que ma bidouille pour adapter un 28pins sur le 40pins est en fait une très belle antenne ultra performante , et toutes les connections pour relier le PIC à la matrice associées à la fréquence d'horloge de 20Mhz n'arrangent pas les choses.
Pas la peine de bosser comme çà, je vais attendre de recevoir mes 877 pour continuer sur une base propre, ils ne devraient plus tarder.
Voici mon programme, je n'ai pas mis toutes les init. Il ne gère pour l'instant que le PORTB mais je l'étendrai ensuite au PORTC.
Code : Tout sélectionner
;*****************************************************************************
; PROGRAMME PRINCIPAL *
;*****************************************************************************
start
movlw b'00010000'
movwf PORTB ; anodes des LED
movlw b'00000000'
movwf PORTC ; cathodes des LED
boucle
; test pressions sur pouss1 ou pouss2
btfsc PORTA,0 ; test si poussoir passe à 0 sur Ra0
call avance
btfsc PORTA,1 ; test si poussoir passe à 0 sur Ra1
call recule
goto boucle
avance
rlf PORTB ; décalage à gauche PORTB
return
recule
rrf PORTB ; décalage à droite PORTB
return
END
Modifié en dernier par F6FCO le lun. 8 janv. 2018 16:53, modifié 1 fois.
Challenge Temps-X
Challenge Temps-X
Challenge Temps-X
Challenge Temps-X
-
cyril13110
Confirmé- Messages : 742
- Âge : 41
- Enregistré en : avril 2016
- Localisation : 13
Challenge Temps-X
Challenge Temps-X
F6FCO a écrit :Bonsoir,
D'après mon expérience sur les AVR, les condos n’empêchent pas vraiment les rebonds, du moins avec mes petits poussoirs de récup sur de vieilles imprimantes. Pour limiter je met une tempo de 10ms qui en absorbe le maximum.
Ben alors ça ne peut pas fonctionner
Nous aimerons bien voir l’init aussi
Challenge Temps-X
- F6FCO
Expert- Messages : 1420
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Ce n'est pas à cause du code que çà ne fonctionne pas, çà marche très bien sur le simulateur. C'est un problème HF, ce qu'en radio on appelle des "accrochages".
J'ai changé le quartz de 8Mhz pour un 20Mhz et çà a été une erreur avec tous ces fils qui font antenne. Je vais remettre le 8Mhz pour voir ce que çà donne et même ce serait mieux avec un 4Mhz. Sinon je referai une autre carte avec des commutateurs haute impédance pour les liaisons entre les différents éléments mais elle sera moins souple d'emploi.
Voici le code complet:
J'ai changé le quartz de 8Mhz pour un 20Mhz et çà a été une erreur avec tous ces fils qui font antenne. Je vais remettre le 8Mhz pour voir ce que çà donne et même ce serait mieux avec un 4Mhz. Sinon je referai une autre carte avec des commutateurs haute impédance pour les liaisons entre les différents éléments mais elle sera moins souple d'emploi.
Voici le code complet:
Code : Tout sélectionner
;*****************************************************************************
LIST p=16F876A ; Définition de processeur
#include <p16F876A.inc> ; fichier include
radix dec ; on travaille en décimal par défaut
__CONFIG _CP_OFF & _DEBUG_ON & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC
;*****************************************************************************
OPTIONVAL EQU B'00000000'
INTCONVAL EQU B'00000000'
ADCON1VAL EQU B'00000110' ; PORTA en mode digital
DIRPORTA EQU B'00111100'
DIRPORTB EQU B'11000000'
DIRPORTC EQU B'00000000'
;*****************************************************************************
MASQUE EQU H'00FF'
#DEFINE LED1 PORTB,1 ; LED de sortie 1
BANK0 macro ; passer en banque0
bcf STATUS,RP0
bcf STATUS,RP1
endm
BANK1 macro ; passer en banque1
bsf STATUS,RP0
bcf STATUS,RP1
endm
BANK2 macro ; passer en banque2
bcf STATUS,RP0
bsf STATUS,RP1
endm
BANK3 macro ; passer en banque3
bsf STATUS,RP0
bsf STATUS,RP1
endm
;*****************************************************************************
CBLOCK 0x20 ; Début de la zone (0x20 à 0x6F)
Reg_1
Reg_2
Reg_3
ENDC ; Fin de la zone
PORTA EQU H'05'
PORTB EQU H'06' ; adr PORTB
PORTC EQU H'07'
;*****************************************************************************
org 0x000 ; Adresse de départ après reset
goto init ; Initialiser
;*****************************************************************************
init
; initialisation PORTS (banque 0 et 1)
; ------------------------------------
BANK0 ; sélectionner banque0
clrf PORTA ; Sorties PORTA à 0
clrf PORTB ; sorties PORTB à 0
clrf PORTC ; sorties PORTC à 0
bsf STATUS,RP0 ; passer en banque1
movlw ADCON1VAL ; PORTA en mode digital/analogique
movwf ADCON1 ; écriture dans contrôle A/D
movlw DIRPORTA ; Direction PORTA
movwf TRISA ; écriture dans registre direction
movlw DIRPORTB ; Direction PORTB
movwf TRISB ; écriture dans registre direction
movlw DIRPORTC ; Direction PORTC
movwf TRISC ; écriture dans registre direction
; Registre d'options (banque 1)
; -----------------------------
movlw OPTIONVAL ; charger masque
movwf OPTION_REG ; initialiser registre option
; registres interruptions (banque 1)
; ----------------------------------
movlw INTCONVAL ; charger valeur registre interruption
movwf INTCON ; initialiser interruptions
; Effacer RAM banque 0
; ---------------------
bcf STATUS,RP0 ; sélectionner banque 0
movlw 0x20 ; initialisation pointeur
movwf FSR ; d'adressage indirect
init1
clrf INDF ; effacer ram
incf FSR,f ; pointer sur suivant
btfss FSR,7 ; tester si fin zone atteinte (>7F)
goto init1 ; non, boucler
;*****************************************************************************
; PROGRAMME PRINCIPAL *
;*****************************************************************************
start
movlw b'00010000'
movwf PORTB ; anodes des LED
movlw b'00000000'
movwf PORTC ; cathodes des LED
boucle
; test pressions sur pouss1 ou pouss2
btfsc PORTA,0 ; test si poussoir passe à 0 sur Ra0
call avance
btfsc PORTA,1 ; test si poussoir passe à 0 sur Ra1
call recule
goto boucle
avance
rlf PORTB ; décalage à gauche PORTB
return
recule
rrf PORTB ; décalage à droite PORTB
return
END
Challenge Temps-X
Bonjour F6FCO, JMarc, cyril13110, Gérard, et tout le forum,
JMarc, tu copieras 100 fois : je dois pas cafeter
C'est bien ce qu'il fallait faire sur ADCON1
ADCON0 n'a pas besoin d'être configurer, c'est la seule façon de se le rappeler.
Oui exact, pas besoin d'activer le mode Debug, qui fera perdre du temps pour le démarrage du Pic.
Cette config pour Pic16F876 doit fonctionner, ou alors tu as un problème.
Chez moi elle se compile très bien, et ce programme très bien dans le Pic, bon c'est vrai j'utilise pas un PicKit3.
_WRT_ENABLE_OFF est valable pour les Pic16F876, mais pas pour les Pic16F876A.
Si tu as des perturbations, surement un mauvais contact, à vérifier avec un multimètre chaque broche.
D'après le code qui au dessus, ça doit fonctionner sur une rangé de 1 x 8 LED, mais n’oublie pas c'est tous les LED 8 x 8 = 64 LED
qui doivent fonctionner une par une.
Ne pas oublier de faire une confirmation de bouton relâché, avec tempo, 10ms c'est ok.
Bon pour les 64 LED, il y a une petite astuce, mais il faut la connaître, je te laisse chercher.
Devoirs à rentre avant l'année 2019
A+
Ps : j'ai commandé des Matrix 8 x 8 en couleur ICI elle comporte 12 pattes de chaque coté
écrit par JMarc :
Ton nouveau pic possède des entrées analogiques. Pour l’instant rajoute juste
Code : Tout sélectionner
movlw B'00000110' ;PORTA digitale
movwf ADCON1 ;
Dans ton initialisation pour avoir tes entrées de PORTA en numérique
JMarc, tu copieras 100 fois : je dois pas cafeter
C'est bien ce qu'il fallait faire sur ADCON1
ADCON0 n'a pas besoin d'être configurer, c'est la seule façon de se le rappeler.
écrit par Gérard :
Fais un essai sans debug pour voir si déjà la programmation se passe bien.
Faudra mettre DEBUG_OFF dans le mot de config.
Oui exact, pas besoin d'activer le mode Debug, qui fera perdre du temps pour le démarrage du Pic.
Cette config pour Pic16F876 doit fonctionner, ou alors tu as un problème.
Chez moi elle se compile très bien, et ce programme très bien dans le Pic, bon c'est vrai j'utilise pas un PicKit3.
Code : Tout sélectionner
__CONFIG _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC
_WRT_ENABLE_OFF est valable pour les Pic16F876, mais pas pour les Pic16F876A.
Si tu as des perturbations, surement un mauvais contact, à vérifier avec un multimètre chaque broche.
D'après le code qui au dessus, ça doit fonctionner sur une rangé de 1 x 8 LED, mais n’oublie pas c'est tous les LED 8 x 8 = 64 LED
qui doivent fonctionner une par une.
Ne pas oublier de faire une confirmation de bouton relâché, avec tempo, 10ms c'est ok.
Bon pour les 64 LED, il y a une petite astuce, mais il faut la connaître, je te laisse chercher.
Devoirs à rentre avant l'année 2019
A+
Ps : j'ai commandé des Matrix 8 x 8 en couleur ICI elle comporte 12 pattes de chaque coté
Modifié en dernier par Temps-x le mar. 9 janv. 2018 17:58, modifié 1 fois.
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 139 invités