Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Méthode de codage :o



  1. #1
    Tix

    Méthode de codage :o


    ------

    Salut

    je compte bricoler avec des servomoteurs sur le port parallele d'un vieux PC (DOS)

    j'aimerai faire de petits soft pour commander tout ca, or, je ne sait pas comment architechturer mon code.
    je pense faire ca en C, sous turboC.

    voila cedont je pense avoir besoin :

    Calculer puis génerer des fréquences individuellement sur plusieurs entrées ... c'est a peu pres tout

    auriez vous une idée du "comment faire ?" (l'architechture, la générarion de fréquences en continu)


    [PS; c'est pas urgent, mais le plu svite sera le mieux ^^]
    merci, ++ Tix.

    -----

  2. Publicité
  3. #2
    freepicbasic

    Re : Méthode de codage :o

    les I/O sous turboc fonctionne sur 95 98 et Me pas sur xp
    A+, pat

  4. #3
    Tix

    Re : Méthode de codage :o

    Salut

    ouioui, chui au courant merci , mais dans mon cas pas de PB, je fait ca sous DOS. c'est vraiment la génération de la "PWM " qui me pose probleme je n'ais aucune idée de comment faire !

    ++ Tix.

  5. #4
    Jack
    Modérateur

    Re : Méthode de codage :o

    le problème, avec les PC, c'est la récupération d'une horloge "rapide" et fiable.

    Or, sous dos, la seule que je connaisse est l'interruption timer qui, de mémoire, doit tourner autour de 18ms, ce qui est un peu long pour fabriquer une pwm.

    Sinon, tu peux utiliser la fonction delay() qui peut descendre à 1ms, mais cette fonction est bloquante (le processeur est monopolisé par cette boucle de temporisation) et la fréquence obtenue n'est pas vraiment fiable car elle dépend du temps d'exécution du code.

    Peut_être la reprogrammation du timer du PC est-elle possible. A creuser.

    A+

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

    Re : Méthode de codage :o

    hm... un peu trop compliqué pour le temps que j'ai a y consacrer. je pense a l'instant a ceci :

    faire une horlog eexterne qui pulserait sur une entrée du port // ... est-ce une solution d'apres vous ?

    merci, ++ Tix.

  8. #6
    freepicbasic

    Re : Méthode de codage :o

    je fait ca sous DOS.
    Evidemment c'est un prog DOS. Mais pas sous XP.

    Sinon, tu peux utiliser la fonction delay() qui peut descendre à 1ms, mais cette fonction est bloquante (le processeur est monopolisé par cette boucle de temporisation) et la fréquence obtenue n'est pas vraiment fiable car elle dépend du temps d'exécution du code.
    1ms Pas suffisant , ilfaut des µS selectionner les paramètres de fenètre DOS priorité Max , et fonctionnement en avant.
    Attention, avec cette config, un bug bloquant , bloquera le PC, Tester avec le Debogueur pour avoir une chance de debloquer en cas de plantage.

    Une ébauche pour démarrer;
    Ajuster la Tempo , j'ai mis * 1000 , mais il faudra ajuster selon la vitesse PC , voir passer sur un float si c'est trop court.
    Vérifier l'adresse du port parrallele 0x378 ici.
    Ajouter une touche de sortie de prog après inkey()
    Code:
    #include "stdio.h"
    #include "dos.h"
    void MyDelay(int tm);
    
    
    
    main()
    {
    int pwmL, pwmH;
    int i;
    
    	/* pwmL varie entre 12 et 25 soit 13 positions de servo */
    	pwmL = 18; /* position centrale */
    	pwmH = 255 - pwmL;
    	while(1) {
    		outp(0x378,0);
    		MyDelay(pwmH);
    		outp(0x378,255);
    		MyDelay(pwmL);
    
    		if ( (i =_inkey()) != -1) {
    			if (i=='+') pwmL++;
    			if (i=='-') pwmL--;
    			if (pwmL<12) pwmL=12;
    			if (pwmL>25) pwmL=25;
    			pwmH = 255 - pwmL;
    		}
    	}
    
    }
    
    void MyDelay(int tm)
    {
    long var;
    	for (var=0 ; var< tm*1000; var++) {
    		/* Annule le Prefetch */
    		goto NextProg;
    		NextProg:;
    		}
    
    }
    
    
    
    
    /* ------------------------------_inkey----------------------------- */
    /*
    	Lecture direct de la console (le clavier).
    	Si DL est diff‚rent de FFh le caractŠre contenu dans DL est affich‚.
    
    	Si Dl = FFh
    	La fonction 06h scrute la console et positionne le flag de retenue
    	(carry) si un caractŠre est lu et le renvoie dans AL.
    	Sinon le flag de retenu n'est pas positionn‚ et AL est ‚gal … 0.
    
    	Cette fonction ne v‚rifie pas le Control-C.
    */
    /* ------------------------------------------------------------------- */
    int _inkey()
    {
    union REGS reg;
    
    	reg.h.ah = 0x06;
    	reg.h.dl = 0xFF;
    	int86 (0x21,&reg,&reg);
    	/* si flag de zero */
    	if ((reg.x.flags & 0x40)==0) /* carry flag */
    		return( (unsigned int) reg.h.al & 0xff);
    	return(-1);
    }
    A+, pat

  9. Publicité
  10. #7
    Tix

    Re : Méthode de codage :o

    Evidemment c'est un prog DOS. Mais pas sous XP.
    je parle du Dos DOS, sans windows (donc pas de réglages, ca sera su réél)

    merci pour le code, je l'étudie

    ++ Tix.

  11. #8
    freepicbasic

    Re : Méthode de codage :o

    DOS 6.22 , un vrai pur et dur !
    Qui connait pas plus de 2 go de disk .

    C'est une ancienne machine ?
    Avec un µp à 3ghz ça serait fulgurant ...
    A+, pat

  12. #9
    Tix

    Re : Méthode de codage :o

    héhé, non, ce sont de vieux 386
    (serveurs HP vecrta RS25 ... 40Kg)
    photo :

Discussions similaires

  1. Arithmétique et codage
    Par raptor77 dans le forum Mathématiques du collège et du lycée
    Réponses: 10
    Dernier message: 03/07/2007, 21h19
  2. codage
    Par winlight dans le forum Électronique
    Réponses: 0
    Dernier message: 02/04/2007, 17h18
  3. Méthode de Newton/Méthode de Bairstow
    Par indian58 dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 11/11/2005, 08h47
  4. Codage
    Par Zavata dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 23/10/2005, 23h09
  5. codage video
    Par clad89 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 30/12/2004, 00h30
Découvrez nos comparatifs produits sur l'informatique et les technologies.