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 ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

Rampe démarrage PAP
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#1 Message par F6FCO » mer. 11 avr. 2018 18:42

Bonsoir les gens,
Je me suis amusé à coder une routine de génération de rampe d'accélération PAP, pour l'instant juste sur l'accélération, je verrai la décélération ensuite, une chose à la fois et le problème est plus complexe car il faut gérer le moment ou elle doit démarrer. Le nombre de pas et le nombre de pulses de la rampe sont paramétrables en jouant sur la valeur des variables nb_pas et accel. Pour faire simple et compréhensible j'ai laissé les calculs de pas en 8bits, ce qui fait qu'on est limité pour l'instant à 255pas, valeurs choisies dans l'exemple nb_pas=0xFF, accel=0x9.
Je travaille sur un calcul en 16bits.

Le chronogramme vu par l'analyseur logique, les valeurs choisies ici ne sont pas réalistes, juste pour tout avoir sur l'écran. Nb_pas=nombre de pas à effectuer, accel contient le nombre d'espaces à mettre entre deux pulses, quand accel arrive à zéro on a atteint la vitesse maxi de travail.
Largeur d'un espace=largeur d'un pulse:
255_30.PNG


L'ordinogramme de la routine:
ordinogramme11042018.jpg


Le code:

Code : Tout sélectionner



;**********************************************************************
;                                                                     
;    
NOM:        rampe d'acceleration pour moteur PAP                                        
;    Date:       08/04/2018                                           
;    Auteur:     F6FCO  JC Buisson                                       
;     xtal:       4Mhz                                                 
;    
;    Commande de moteur PAP en PWM
;   
;
;                                                                     
;**********************************************************************
    
    
    List p=16F88    
    #include <p16F88.inc>

    __CONFIG    _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_OFF & _WDT_OFF & _XT_OSC
    __CONFIG    _CONFIG2, _IESO_OFF & _FCMEN_OFF
      
OPTIONVAL    EQU    H'
0008'            

; --------------------------------------------------------------------------------------------

#define clock PORTB,0              ; clock
#define dir PORTB,1              ; direction

BANK0    macro
        bcf    STATUS,RP0            ; passer banque0
        endm

BANK1    macro
        bsf    STATUS,RP0            ; passer banque1
        endm

pulse_haut macro
    bsf        clock
    call     tempo_base
    endm
    
pulse_bas macro
    bcf        clock
    call     tempo_base
    endm


;*********************************************************************

    CBLOCK 0x020                   
        nb_pas:2                ; nombre de pas à effectuer
        accel                    ; nombre de temps morts entre deux pulses_haut au départ de la rampe
        nb_pulses                ; variable tampon
        tampon                    ; variable tampon
        Reg_1
        Reg_2
        Reg_3
    ENDC                                                                                  

;**********************************************************************

    org     0x0000                 ; Adresse de départ après reset
init
    BANK1                        ; bank1
    clrf    ANSEL                ; broches du CAN en I/O
    movlw    OPTIONVAL            ; charger masque
    movwf    OPTION_REG            ; initialiser registre option
    clrf    TRISB                ; PORTB en sortie 
    BANK0                        ; bank0
    

;*********************************************************************
;                      PROGRAMME PRINCIPAL                           *
;*********************************************************************

main
    ;call tourne_en_continu       ; pour test du moteur
    ;goto    main
    
init_variables
    movlw    d'
255'
    movwf    nb_pas                ; nombre de pas à réaliser par le moteur pap
    movlw    d'
90'
    movwf    accel                ; nb temps morts par alternance au départ rampe
    clrf    nb_pulses

loop
    pulse_haut
    pulse_bas
    ;test de accel, pour le tester sans le déformer on le transfère et on travaille dans la variable tampon
    movf    accel,W
    movwf    tampon
    movlw    1
    subwf    tampon
    btfsc    STATUS,Z
    goto     test_pas        ; si accel=1 la rampe est terminée et on saute directement à test1 pour continuer à vitesse normale
    decf    accel            ; sinon on rentre dans la routine d'
acceleration pour ajouter des pulses bas entre deux pulses haut
    movf    accel
,W
    movwf    nb_pulses
loop_ecart
    pulse_bas
    decf    nb_pulses
    btfss    STATUS
,Z
    
goto    loop_ecart
    
goto    loop
    
test du nombre de pas parcouruspour tester nb_pas sans déformer on transfère et travaille dans tampon    
test_pas
    movf    nb_pas
,W
    movwf    tampon
    movlw    1
    subwf    tampon
    btfss    STATUS
,Z
    
goto    loop1
    call     tempo_fin_de_programme    
juste pour séparer chaque éxécution du programme
    
goto     main
loop1
    decf    nb_pas
    
goto    loop
    
    
    

    
tourne_en_continu   
routine pour tester le moteur en continu
    pulse_haut
    pulse_bas
    
return
    
tempo_base        temps de base d'un pulse (demi_alternance)
; Délai 350 Cycles de la machine
; Durée du délai 350 microsecond
; Fréquence de l'
oscillateur 4 MHZ

            movlw       .116
            movwf       Reg_1
            decfsz      Reg_1
,F
            
goto        $-1
            nop
            
return
            
 
tempo_fin_de_programme
Délai 200 000 Cycles de la machine
Durée du délai 200 millisecond
Fréquence de l'oscillateur 4 MHZ
            movlw       .186
            movwf       Reg_1
            movlw       .4
            movwf       Reg_2
            movlw       .2
            movwf       Reg_3
            decfsz      Reg_1,F
            goto        $-1
            decfsz      Reg_2,F
            goto        $-3
            decfsz      Reg_3,F
            goto        $-5
            nop
            return
            
 tempo1s
; Délai 1 000 000 Cycles de la machine
; Durée du délai 1 seconde
; Fréquence de l'
oscillateur 4 MHZ
            movlw       .173
            movwf       Reg_1
            movlw       .19
            movwf       Reg_2
            movlw       .6
            movwf       Reg_3
            decfsz      Reg_1
,F
            
goto        $-1
            decfsz      Reg_2
,F
            
goto        $-3
            decfsz      Reg_3
,F
            
goto        $-5
            nop
            nop
            
return
            

    
END             

             



Petite vidéo en fonctionnement, on voit bien les pulses sur la led du driver:
https://www.youtube.com/watch?v=A9xCDQ7RGCY&feature=youtu.be
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par F6FCO le jeu. 12 avr. 2018 14:41, modifié 6 fois.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Rampe démarrage PAP
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#2 Message par Temps-x » jeu. 12 avr. 2018 02:15

Bonsoir F6FCO, et tout le forum,

Déjà je te remercie pour l'aide que tu m'apportes, mais je vais te gronder :mad: combien de fois il va falloir le dire :roll:
toujours regarder le fichier d'extension *.err, et ne pas oublier de mettre Errorlevel-302 au début de la configuration du Pic.

Mais bon comme le dit Jérémy : C'est en faisant des erreurs, que l'on apprend le mieux !!!

Regarde ton fichier d'erreur.

------------------------------------------------------------------------------------------------------------------------------------

F6FCO a écrit :
Source du message Tu es sur de ton schéma ?


Trouver sur un site, mais pour les passionnés voici une explication simple, et qu'il faut lire Alimentation des moteurs pas à pas

Tout est expliquer dans le lien, mais ducran lapoigne souléve un problème, qui est la variation linéaire de la fréquence.

C'est important si l'on veut avoir un réglage avec PWM, je parle pas de l'avance du moteur, je parle du PWM qui contrôle la tension
et l'intensité par rapport à la vitesse du moteur pas à pas.


==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Rampe démarrage PAP
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#3 Message par F6FCO » jeu. 12 avr. 2018 10:24

Temps-x a écrit :Bonsoir F6FCO, et tout le forum,
Déjà je te remercie pour l'aide que tu m'apportes, mais je vais te gronder :mad: combien de fois il va falloir le dire :roll:
toujours regarder le fichier d'extension *.err, et ne pas oublier de mettre Errorlevel-302 au début de la configuration du Pic.

Sans vouloir te froisser hein :wink: , d'après ce' que j'ai pu remarquer le fichier .err est une recopie de la fenêtre d'assemblage, s'il n'y a pas d'erreur et que tout s'est bien passé pourquoi aller ouvrir un fichier supplémentaire à chaque assemblage pour revoir ce qu'on a déjà vu dans la fenêtre, surtout quand on fait des modifs dans le programme et qu'on n'arrete pas de faire des build c'est lourd.


F6FCO a écrit :Trouver sur un site, mais pour les passionnés voici une explication simple, et qu'il faut lire Alimentation des moteurs pas à pas

Tout est expliquer dans le lien, mais ducran lapoigne souléve un problème, qui est la variation linéaire de la fréquence.

C'est important si l'on veut avoir un réglage avec PWM, je parle pas de l'avance du moteur, je parle du PWM qui contrôle la tension
et l'intensité par rapport à la vitesse du moteur pas à pas.
A+


Encore une fois sans vouloir te froisser je suis dubitatif, après l'intervention d'Antoine dans mon sujet sur la rampe PWM viewtopic.php?p=9073#p9073, j'ai fais des mesures à l'oscillo sur la sortie de LinuxCNC et c'est bien du PFM (Pulses Frequency Modulation) qui sort et non du PWM (Pulse Widht Modulation), c'est à dire des créneaux égaux en largeur mais dont la fréquence change suivant la progression de la rampe.
Ceci dit je travaille avec des bipolaires pilotés par des drivers, il est possible que ce soit les drivers qui gèrent cette étape.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Rampe démarrage PAP
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#4 Message par Temps-x » jeu. 12 avr. 2018 12:39

Bonsoir F6FCO, et tout le forum,

Dans ton fichier ASM il y a des erreurs. :wink:

Exemple :

Code : Tout sélectionner



init_variables
      movlw D
'400'
      


Code : Tout sélectionner


     decf nb_pulses
     


il y en a d'autre.

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Rampe démarrage PAP
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#5 Message par F6FCO » jeu. 12 avr. 2018 14:40

Oups, je n'avais pas fourni le bon fichier, celui plus haut est un fichier test, (voilà, j'ai édité pour le remplacer :wink: ). Le movlw D'400' servait à voir comment le programme se comportait avec une valeur plus grande que 0xff.
Par contre je ne vois pas ou est l'erreur avec decf nb_pulses, le programme fait bien son job et nb_pulses est bien décrémenté, si tu peux m'expliquer.

Je n'aime pas affirmer des choses sur les forums sans être sur de ce que j'avance, alors ce matin je suis retourné faire des mesures à l'oscillo sur ma CNC. Il s'avère que tout le monde à raison :-), enfin tu as presque raison car ce n'est pas du vrai PWM, mais les largeurs d'impulsions varient bien.
Donc pour être précis:
- J'avais fais des mesures en sortie de LinuxCNC, avant les drivers et on a bien du PFM, pulses de largeur égale, seuls les espaces varient en fonction de la rampe. Arrivé au stade fin de rampe les créneaux haut=creneaux bas.
- ce matin j'ai fais des mesures en sortie de driver, donc sur le moteur et là les pulses varient toujours en PFM (espacés mais se rapprochant de plus en plus en fonction de la montée en rampe). Mais également variables en largeur, larges en début de rampe et se rétrécissant au fur et a mesure de la montée. C'est donc bien le driver qui gère cela.
Je dis que ce n'est pas du vrai PWM car en PWM la fréquence est fixe, seul le rapport cyclique change, après intégration on obtient ainsi une tension variable entre le zéro et la tension max des pulses. Par exemple sur le PWM arduino la fréquence est d'environ 490hz et ne change jamais.
A la sortie de mes drivers le rapport cyclique est de 1/1 en permanence, quand les pulses sont larges les niveaux bas sont toujours égaux aux niveaux haut, donc pas du PWM mais bien du PFM.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Rampe démarrage PAP
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#6 Message par Temps-x » jeu. 12 avr. 2018 19:19

Bonsoir F6FCO, et tout le forum,

F6FCO a écrit :
Source du message Par contre je ne vois pas ou est l'erreur avec decf nb_pulses


Voilà l'explication elle est toute simple, mais pas facile à comprendre

Décrémente d'une unité le contenu de F et met le résultat dans W ou F

Exemple 1: Avant l'instruction, peu importe le contenu de W la variable Casemem contient D'123'

decf Casemem,W ==> ==> ; après l'instruction W contient D'122', Casemem contient toujours D'123'

Exemple 2: Avant l'instruction peu importe le contenu de W , la variable Casemem contient D'123'

decf Casemem,F ==> ==> ; après l'instruction le contenu de W n'a pas changé et Casemem contient D'122'

Le compilateur ne sais pas ou il faut déposer le résultat, sois dans ta variable, ou dans le registre de travail (W), donc le compilateur
va t'avertir qu'il y a risque d'erreur, mais le programme va se compilé a ton désavantage.

C'est comme ça quand passe des heures, voir des jours à chercher d’où vient l'erreur, c'est de l'assembleur, c'est pas du C++ :sifflotte:

D'autre part quand tu déclares un label, écrit le bien sur le bord de ton éditeur.

Exemple :

Code : Tout sélectionner



  mauvais_label


bon_label




Sinon l'assembleur va croire à une macro.

:+1: pour ta déduction, effectivement on ne peu pas appeler PWM, mais pour éviter les ennuies c'est celui-ci que je vais utiliser. :wink:

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Rampe démarrage PAP
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#7 Message par F6FCO » jeu. 12 avr. 2018 23:03

Bonsoir,
D'accord, donc dans mon cas j'aurai du écrire decf nb_pulses,f. Je n'avais pas trop compris cette affaire de f avant ce soir merci.

Pour les labels ils sont bien écrits tous à gauche, c'est quand je fais un copier/coller dans la balise code du forum que çà part dans tous les sens, je suis un fanatique de la belle mise en page, même les commentaires sont bien alignés :lol: . Voici à quoi ressemble mon éditeur:
Capture.JPG


J'ai terminé la version 16bits opérationnelle de mon programme mais avant de la poster je vais vérifier tous les "f" manquant :wink:
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par F6FCO le jeu. 12 avr. 2018 23:14, modifié 3 fois.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Rampe démarrage PAP
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#8 Message par F6FCO » jeu. 12 avr. 2018 23:12

Voilà. nombre de pas max=65535 ce qui devrait suffire pour une petite cnc d'amateur.

Code : Tout sélectionner

;**********************************************************************
;                                                                     
;    
NOM:        rampe d'acceleration pour moteur PAP                                        
;    Date:       08/04/2018                                           
;    Auteur:     F6FCO  JC Buisson                                       
;     xtal:       4Mhz                                                 
;    
;    Commande de moteur PAP en PWM
;   
;
;                                                                     
;**********************************************************************
    
    
    List p=16F88    
    #include <p16F88.inc>

    __CONFIG    _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_OFF & _WDT_OFF & _XT_OSC
    __CONFIG    _CONFIG2, _IESO_OFF & _FCMEN_OFF
      
OPTIONVAL    EQU    H'
0008'            

; --------------------------------------------------------------------------------------------

#define clock PORTB,0              ; clock
#define dir PORTB,1              ; direction

BANK0    macro
        bcf    STATUS,RP0            ; passer banque0
        endm

BANK1    macro
        bsf    STATUS,RP0            ; passer banque1
        endm

pulse_haut macro
    bsf        clock
    call     tempo_base
    endm
    
pulse_bas macro
    bcf        clock
    call     tempo_base
    endm


;*********************************************************************

    CBLOCK 0x020                   
        nb_pas:2                ; nombre de pas à effectuer sur 16 bits
        accel                    ; nombre de temps morts entre deux pulses_haut au départ de la rampe
        nb_pulses                ; variable tampon
        tampon:2                ; variable tampon
        valeur1:2                 ; pour la soustraction 16 bits
        valeur2:2                ; pour la soustraction 16 bits
        Reg_1
        Reg_2
        Reg_3
    ENDC                                                                                  

;**********************************************************************

    org     0x0000                 ; Adresse de départ après reset
init;
    BANK1                        ; bank1
    clrf    ANSEL                ; broches du CAN en I/O
    movlw    OPTIONVAL            ; charger masque
    movwf    OPTION_REG            ; initialiser registre option
    clrf    TRISB                ; PORTB en sortie 
    BANK0                        ; bank0
    

;*********************************************************************
;                      PROGRAMME PRINCIPAL                           *
;*********************************************************************

main
    ;call tourne_en_continu       ; pour test du moteur
    ;goto    main
    
init_variables
    ; ------------------- ; initialisation du nombre de pas à réaliser par le moteur pap
    movlw    0xff
    movwf    nb_pas            ; poids faible        
    movlw    0x5
    movwf    nb_pas+1        ; poids fort
    ; ------------------- ; initialisation du nb temps morts par alternance au départ rampe 
    movlw    d'
30'
    movwf    accel                
    clrf    nb_pulses

loop
    pulse_haut
    pulse_bas
    ;test de accel, pour le tester sans le déformer on le transfère et on travaille dans la variable tampon
    movf    accel,W
    movwf    tampon
    movlw    1
    subwf    tampon
    btfsc    STATUS,Z
    goto     test_pas        ; si accel=1 la rampe est terminée et on saute directement à test1 pour continuer à vitesse normale
    decf    accel,f            ; sinon on rentre dans la routine d'
acceleration pour ajouter des pulses bas entre deux pulses haut
    movf    accel
,W
    movwf    nb_pulses
loop_ecart
    pulse_bas
    decf    nb_pulses
,f
    btfss    STATUS
,Z
    
goto    loop_ecart
    
goto    loop
    
test du nombre de pas parcouruspour tester nb_pas sans déformer on transfère et travaille dans tampon    
test_pas
    
test si nb_pas et nb_pas+1 sont à 0 (il faut tester les 16 bits). si oui programme finisinon goto loop1
    movf    nb_pas
,W
    btfss    STATUS
,Z
    
goto     test_pas2
    
goto    loop1
test_pas2
    movf    nb_pas
+1,W
    btfss    STATUS
,Z
    
goto    loop1
    
    
    call     tempo_fin_de_programme    
juste pour séparer chaque éxécution du programme et pouvoir les différencier sur l'analyseur logique
    goto     main
loop1
    ;decf    nb_pas
    ;goto loop
    ;--------------------- ici on va effectuer la décrémentation de nb_pas sur 16 bits
    movf    nb_pas,W        ; on transfère nb_pas dans valeur1
    movwf    valeur1
    movf    nb_pas+1,W
    movwf    valeur1+1
    movlw    1                ; on charge d'
1' dans valeur2
    movwf    valeur2            
    clrf    valeur2+1
    call    soustraction16
    ;--------------------
    movf    valeur2,W        ; on stocke le résultat (nb_pas-1) dans nb_pas
    movwf    nb_pas
    movf    valeur2+1,w
    movwf    nb_pas+1
    goto    loop
    
soustraction16
    ; on fait le complément à 2 de valeur2 et valeur2+1
    movf    valeur2,W
    xorlw    0xFF
    addlw    0x1
    movwf    valeur2
    movf    valeur2+1,w
    xorlw    0xFF
    movwf    valeur2+1
    ; addition des poids faibles
    movf    valeur1,W
    addwf    valeur2
    ; addition du carry
    movf    STATUS,W
    andlw    0x1
    addwf    valeur2+1,f
    ; addition des poids forts, résultat dans valeur2/valeur2+1
    movf     valeur1+1,W
    addwf    valeur2+1
    return
    
tourne_en_continu   ; routine pour tester le moteur en continu
    pulse_haut
    pulse_bas
    return
    
tempo_base        ; temps de base d'
un pulse (demi_alternance)
Délai 400 Cycles de la machine
Durée du délai 400 microsecond
Fréquence de l'oscillateur 4 MHZ

            movlw       .133
            movwf       Reg_1
            decfsz      Reg_1,F
            goto        $-1
          return
            
 tempo_fin_de_programme
; Délai 200 000 Cycles de la machine
; Durée du délai 200 millisecond
; Fréquence de l'
oscillateur 4 MHZ
            movlw       .186
            movwf       Reg_1
            movlw       .4
            movwf       Reg_2
            movlw       .2
            movwf       Reg_3
            decfsz      Reg_1
,F
            
goto        $-1
            decfsz      Reg_2
,F
            
goto        $-3
            decfsz      Reg_3
,F
            
goto        $-5
            nop
            
return
            
 
tempo1s
Délai 1 000 000 Cycles de la machine
Durée du délai 1 seconde
Fréquence de l'oscillateur 4 MHZ
            movlw       .173
            movwf       Reg_1
            movlw       .19
            movwf       Reg_2
            movlw       .6
            movwf       Reg_3
            decfsz      Reg_1,F
            goto        $-1
            decfsz      Reg_2,F
            goto        $-3
            decfsz      Reg_3,F
            goto        $-5
            nop
            nop
            return
            

    END             

Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Rampe démarrage PAP
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#9 Message par Temps-x » ven. 13 avr. 2018 00:53

Bonsoir F6FCO, et tout le forum,

F6FCO a écrit :
Source du message D'accord, donc dans mon cas j'aurai du écrire decf nb_pulses,f


Oui c'est exactement ça, j'avais bien compris ce que tu voulais faire, mais le compilateur n'avais pas compris......

Je sais je t'embête :-D mais il y encore des erreurs dans ton nouveau code, à voir les lignes ci dessous.

Message[305] D:\DATAPIC\PICSOUR\16F88\DIVERS\DIVERS-2.ASM 99 : Using default destination of 1 (file).
Message[305] D:\DATAPIC\PICSOUR\16F88\DIVERS\DIVERS-2.ASM 156 : Using default destination of 1 (file).
Message[305] D:\DATAPIC\PICSOUR\16F88\DIVERS\DIVERS-2.ASM 163 : Using default destination of 1 (file).

ça prouve que je regarde ton code, et je trouve que tu as beaucoup d'idée.

Bon je monte un Pic16F88 sur Breadboard, et je teste ton code, si j'ai le temps je tourne une petite vidéo.

Merci ! pour ta participation :wink:

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Rampe démarrage PAP
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#10 Message par F6FCO » ven. 13 avr. 2018 10:01

Temps-x a écrit : mais le compilateur n'avais pas compris......

Ben je pense que si puisque malgré l'erreur d'écriture nb_pulses est bien décrémenté.

Temps-x a écrit :Je sais je t'embête :-D

Non, continue comme çà, çà me fait progresser :-)

Temps-x a écrit :Bon je monte un Pic16F88 sur Breadboard, et je teste ton code, si j'ai le temps je tourne une petite vidéo.

Une bonne occasion d'essayer ton analyseur logique. Le code fonctionne au poil chez moi (bipolaire+driver) mais je ne sais pas ce que çà donnera sur ton unipolaire avec pont en H qui ne gère pas le pseudo PWM.

Bon maintenant il faut s’intéresser à la décélération, coder des pulses qui s'espacent çà devrait le faire mais il y a un joli problème qui se pose: à quel moment la commencer suivant le nombre de pas à effectuer ? Par exemple si on dit qu'on va faire une accélération sur 90 pulses et pareil pour la décélération, ok si on a au moins 180 pas ou plus à effectuer, mais si on en a moins ?
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 48 invités