memorisation etat entrée pic
Répondre à la discussion
Affichage des résultats 1 à 20 sur 20

memorisation etat entrée pic



  1. #1
    alainav1

    memorisation etat entrée pic


    ------

    Bonjour,
    Je sais lire les implusions d'une entrée sur un PIC 16F88 et memoriser cette information dans une memoire I2C quand la durée de l'implustion est longue. ,cependant quand la durée est rapide (inferieur à 1ms ) cela marche mal car le temps d'enregistement est trop long et je rate les impulsions qui sont générées pendant que stocke.
    je souhaiterai donc lire l'etat de l'entrée ,la stocker dans un fichier tampon sous (forme de bit) puis reconstituer sous forme de byte (8 bit)afin de memoriser un peu plus tard dans une 24CXX. (ensuite je sais relire la valeur ).
    ma difficulté est donc le stockage tampon .
    pouvez vous m'aider ,me mettre sur une piste ?
    pour info je programme en basic mais je peux inclure du code assembleur car c'est je pense le seul langage assez rapide pour résoudre ce problème .
    Cordialement
    Alain

    -----

  2. #2
    Seb.26

    Re : memorisation etat entrée pic

    Citation Envoyé par alainav1 Voir le message
    ma difficulté est donc le stockage tampon .
    pouvez vous m'aider ,me mettre sur une piste ?
    Fais un automate d'etats pour "constituer" un octet au fur et à mesure ( ça tu dois déjà l'avoir ), et à chaque fois que l'octet est "terminé", place le place dans une FIFO.

    En parrallèle à tout cela, tu enregistre le contenu de la FIFO dans ton EEPROM ...

  3. #3
    Seb.26

    Re : memorisation etat entrée pic

    Citation Envoyé par alainav1 Voir le message
    pour info je programme en basic mais je peux inclure du code assembleur car c'est je pense le seul langage assez rapide pour résoudre ce problème .
    L'assembleur ne te fera rien gagné : tes octets ne seront pas enregistrés plus vite dans ton EEPROM ... c'est comme souvent un problème de conception, et pas de vitesse de traitement ...

  4. #4
    alainav1

    Re : memorisation etat entrée pic

    bonjour,
    Si j'ai bien compris le temps d'ecriture est incompressible il faut faire avec ce que je ne sais pas faire c'est constuire la pile (constituer des etat de l'entrée ) pour ensuite la relire
    cordialement
    Alain

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

    Re : memorisation etat entrée pic

    Ben les temps d'accès à une epprom type 24cxx est de toutes façons égale à 10ms, et je ne pense pas que ça vienne de la vitesse d'adressage du bit mais plutot de la structure interne de l'eeprom.
    Maintenant ce qu'il faudrai voir pour enregistrer plus vite ce serai soit une compression (tendu), soit voir une autre eeprom plus rapide.

    Enfin la solution serai valable si c'est bien l'eeprom qui limite la vitesse et pas le pic...

  7. #6
    alainav1

    Re : memorisation etat entrée pic

    bonjour,
    ce que je veux memoriser c'est une suite d'etats qui dure 10 microsecondes (environ)l'engristrement durera pendant quelques millisecondes .Je ne peux donc envisager que du stockage
    cordialement
    alain

  8. #7
    Seb.26

    Re : memorisation etat entrée pic

    Citation Envoyé par alainav1 Voir le message
    bonjour,
    Si j'ai bien compris le temps d'ecriture est incompressible il faut faire avec ce que je ne sais pas faire c'est constuire la pile (constituer des etat de l'entrée ) pour ensuite la relire
    cordialement
    Alain
    Oui, la durée d'un cycle d'ecriture est determiné par le hard ... maintenant c'est à toi de gerer ce que tu fais pendant que le composant enregistre ... tu attends "betement" ou tu continu à enregistrer les données qui arrivent ?

    Si je comprends bien ton souci, tu souhaite echantillonner un signal tous les 10uS, le toute durant "quelques" ms ? ... soit 100 echantillons/ms ... soit 13 octets ...

    J'ai bon dans le calcul ? ... si ton "quelques" reste raisonnable, ça donne une FIFO de taille également raisonable ( 13 octets/ms ) ...

    A ta place, je n'essayerais même pas d'enregistrer au fur et à mesure ... l'ecart de vitesse est trop elevé pour se prendre le choux avec ... mets toutes tes données dans une FIFO et enregistre ensuite ...

  9. #8
    alainav1

    Re : memorisation etat entrée pic

    bonjour,
    tu peux m'expliquer comment mettre dans une FIFO?
    cordialement
    Alain

  10. #9
    Seb.26

    Re : memorisation etat entrée pic

    Citation Envoyé par alainav1 Voir le message
    tu peux m'expliquer comment mettre dans une FIFO?
    http://fr.wikipedia.org/wiki/First_in%2C_first_out



    Tout codeur doit savoir ce qu'est une FIFO !!!

  11. #10
    alainav1

    Re : memorisation etat entrée pic

    bonjour,
    ce que je souhaitai connaitre c'est comment la mettre en application dans ce cas precis.puisque tu sembles maitiser cette technique cela ne doit pas te posser trop de probléme pour me faire un bout de code en assembleur dont l'analyse me permettra de maitriser cet aspect (c'est en analysant des bout de code que j'ai ameliorer mes connaissance en programmation (même si j'ai encore des difficultés avec les piles (FIFO ..)
    merci de ton aide .
    Alain

  12. #11
    Seb.26

    Re : memorisation etat entrée pic

    Citation Envoyé par alainav1 Voir le message
    bonjour,
    ce que je souhaitai connaitre c'est comment la mettre en application dans ce cas precis.puisque tu sembles maitiser cette technique cela ne doit pas te posser trop de probléme pour me faire un bout de code en assembleur dont l'analyse me permettra de maitriser cet aspect (c'est en analysant des bout de code que j'ai ameliorer mes connaissance en programmation (même si j'ai encore des difficultés avec les piles (FIFO ..)
    merci de ton aide .
    Alain
    Désolé, mais je parle pas l'ASM ... mon dada à moi, c'est le C ...

    Mais en 2 mots :

    Pour stocker tes bits : utilise un int8 qui va compter de 0 à 7, et un autre int8 pour stocker les données ( initialisé à 0x00 ) ... à chaque bit, tu fait un ou avec la valeur, et tu incremente le compteur de bit, quand le compteur à compté les 8bits, tu ajoute ton octet à ta FIFO ...

    Pour faire une FIFO ... y'a plein de code partout sur le net ... mais c'est simplissime : un buffer, un pointeur de lecteur, et un autre d'ecriture ... << That's all folks ! >>

    @++
    Seb

  13. #12
    alainav1

    Re : memorisation etat entrée pic

    bonjour,
    je regarde tout ça !

    mais pour c'est pas simplissime "
    pour moi ce qui est facile c'est ce qu l'on maitrise
    ce qui est difficile c'est ce qu'on ignore .
    la preuve tu peux faire ça en quelques lignes de code C et pas an assembleur .
    au fait même en C ça m'interresse !
    Cordialement
    Alain

  14. #13
    invitef26bdcba

    Re : memorisation etat entrée pic

    Salut,

    Un bout de code pour faire une FIFO circulaire soft sur 18F :

    Charger une donnée dans la FIFO :

    Code:
    CBLOCK	0x200
    	bufferRX : .256		; buffer circulaire de réception de 256 octets
    	ENDC
    
    FifoUART:	btfss	PIR1, RCIF		; interruption de l'UART ?
    	retfie	FAST		; non, alors retour
    	movff	RCREG, POSTINC0	; oui, alors lecture de la donnée reçue par l'UART et stocker dans buffer réception
    	bcf	PIR1, RCIF		; effacer flag d'int UART
    	movlw	H'00'		;   Vérification de la position du pointeur
    	cpfseq	FSR0L		; si FSR0L est a la fin du buffer, retourner au début du buffer
    				; soit FSR0L = 0 ?
    	
    	bra	loin		; non, alors continuer
    	lfsr	FSR0, bufferRX	; oui, alors repositionner pointeur au début du buffer circulaire de réception
    	
    loin:	retfie	FAST		; retour

    Sortir une donnée de la FIFO et la mettre dans la variable "donnee" :

    Code:
    CBLOCK	0x000
    	ptrRX : 1			; pointeur du buffer de réception de la derniere donnée traitée	
    	ENDC
    
    
    TestBuffRX:	movf	ptrRX, w		; vérifier si toutes les données sont traitée
    	cpfseq	FSR0L		; derniere donnée traitée = pointeur FSR0 ?
    	bra	TrtBuffRX		; non, pas identique, donc donnée a traiter
    	return			; oui, identique, alors retour
    		;sortir la donnée du buffer
    TrtBuffRX:	bcf	PIE1, RCIE		; interdire interruption de réception pour éviter tout conflit
    	movff	FSR0L, FSR0Ltemp	; sauvegarde de FSR0L avant manipulation car FSR0L est manipulé par l'interruption
    	movff	ptrRX, FSR0L	; copier adresse du pointeur dans FSR0L pour pointer la bonne donnée
    	movff	INDF0, donnee	; donnée pointée dans donnee pour interprétation de la trame
    	incf	ptrRX, f		; + 1 dans le pointeur des données a traiter, car octet traité
    	movff	FSR0Ltemp, FSR0L	; restauration de FSR1L pour que l'interruption pointe au bonne endroit
    	bsf	PIE1, RCIE		; autoriser a nouveau interruption de réception car plus de conflit possible

    Mais bon, je ne suis pas certain que cela soit la solution, car si tu reçois plus vite les données que tu ne sais les écrire en EEPROM, l'écrasement des données est fatalement inévitable (à moins que tu puisses écrire par page entière l'EEPROM vu que le temps d'écriture est identique par page ou par donnée)...

    David.

  15. #14
    Gérard

    Re : memorisation etat entrée pic

    Bonjour,
    Je viens de prendre le train en vol.

    Quel est exactement ton souhait ?
    Compter des impulsions rapides (--> toujours des "1") ou lire une entrée à intervalles réguliers (des 0 et des 1) ?

  16. #15
    alainav1

    Re : memorisation etat entrée pic

    bonjour,
    je souhaite lire un etat (etat de portB.0 etat 0 ou 1) a intervalle regulier (toutes les 20 micro secondes ) pendant quelques millisecondes et memorise tout ça pour ensuite l'exploiter .
    cordialement
    Alain

  17. #16
    Seb.26

    Re : memorisation etat entrée pic

    Citation Envoyé par alainav1 Voir le message
    je souhaite lire un etat (etat de portB.0 etat 0 ou 1) a intervalle regulier (toutes les 20 micro secondes ) pendant quelques millisecondes et memorise tout ça pour ensuite l'exploiter .
    Combien de ms ??? ... pour 20us tu es à 6.25 octets/ms ...

  18. #17
    alainav1

    Re : memorisation etat entrée pic

    bonjour,
    le temps d'enregistrement serait de 10 ms minimum ou 20 ms si c'est possible

    cordialement
    Alain

  19. #18
    Seb.26

    Re : memorisation etat entrée pic

    Citation Envoyé par alainav1 Voir le message
    bonjour,
    le temps d'enregistrement serait de 10 ms minimum ou 20 ms si c'est possible
    cordialement
    Alain
    10ms = 63octets de données + 1 pointeur = 64 octets pour 10ms
    ... le double pour 20ms ... Donc ça roule ...

    NB: Pour ton besoin, ne fait pas une vraie FIFO, utilise juste un buffer et un pointeur d'ecriture ... tu le videra depuis [0] quand tu auras fini de stocker les data ...

    Bon codage !

  20. #19
    Gérard

    Re : memorisation etat entrée pic

    Citation Envoyé par Seb.26 Voir le message
    Combien de ms ??? ... pour 20us tu es à 6.25 octets/ms ...
    Bonjour,
    Je ne comprends pas bien ton calcul.
    Pour lire 1 bit toutes les 20µs pendant 20ms, je trouve 1000 échantillons soit 125 octet.

    Qui a vu juste ?

    EDIT : nous avons raison tous les 2 : 6,25 octet/ms = 125 octet pour 20ms.

  21. #20
    invite_P89
    Invité

    Re : memorisation etat entrée pic

    LU alainav1 et CO

    Attention pour le pointeur, (IRP sur 2 pages) car tu vas te balader sur les 4 banques pour la RAM .

    A bientôt

Discussions similaires

  1. Microcontroleur Pic(entrée sortie)
    Par invitee2a2ed9a dans le forum TPE / TIPE et autres travaux
    Réponses: 1
    Dernier message: 06/10/2007, 09h56
  2. Entrée sortie Microncontroleur Pic
    Par invitee2a2ed9a dans le forum Électronique
    Réponses: 6
    Dernier message: 03/04/2007, 16h08
  3. [PIC]PORTA en entrée?
    Par inviteb05ed73e dans le forum Électronique
    Réponses: 11
    Dernier message: 06/01/2007, 15h10
  4. mise à 5V des entrée d'un pic
    Par alainav1 dans le forum Électronique
    Réponses: 7
    Dernier message: 16/01/2006, 10h15
  5. entree pic
    Par invite8860b0b3 dans le forum Électronique
    Réponses: 1
    Dernier message: 05/01/2005, 18h08
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...