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

Soft de commande CNC en asm
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#221 Message par F6FCO » mer. 24 oct. 2018 08:56

L'avantage c'est que je n'aurai pas à me lever pour la changer la nuit :lol:

Je vous ai livré le programme brut comme çà mais après reflexion çà mérite quelques explications.
Pour l'instant il n'y a que quatre procédures pour assurer le fonctionnement de base, ces quatres procédures sont toutes appelées par le tronc de programme dans le main, ce tronc de programme assurant la gestion de découpage des trains de données et la vérification de la fin du gcode.
Ces quatre procédures sont appelées entre chaque train de données pour mouvoir les axes (juste le X pour l'instant).

1/ Procédure conversion_ascii_hexa:
En premier lieu on reçoit les données sous forme ascii sur 4 octets (j'ai finalement décidé de tout faire en 32bits), sous cette forme :
ex: 1234mm = 0x31 0x32 0X33 0x34, on voit que c'est inexploitable dans l'état et il faut convertir çà en une seule valeur hexa sur deux octets pour pouvoir l'utiliser.
Pour avoir une valeur hexa il faut multiplier les termes par leur poids et les ajouter les uns aux autres, multiplications lourdes à coder en assembleur, j'ai préféré utiliser une table pré-calculée

2/ procédure soustractX:
La machine gère tous ses déplacements par rapport à son origine 0 (ici X=0). Par exemple si on s'est déjà déplacé de 30mm et qu'il faut aller à 100mm il ne faudra parcourir que 100-30=70mm, donc on soustrait new_position-old_position. Mais si on est à 100mm et qu'il faut revenir à 30mm il faudra effectuer old_position-new_position pour ne pas se retrouver avec une valeur négative. Il faut donc choisir dans quel sens on va faire la soustraction. Cette procédure gère aussi le sens de rotation des moteurs pas à pas.

3/ procédure génération_pulses:
Les moteurs pas à pas fonctionneront en 1/4pas, c'est des moteurs qui font 200pas par tour en 1pas entier, donc il feront 800pas en 1/4pas. Il faut donc multiplier la valeur hexa à parcourir par 800 et appeler à chaque pas la sous-procédure de base de génération d'un pas (une alternance haute et une alternance basse dont les tempos ont été calculées pour avoir une fréquence idéale de 4,6khz déterminée d'après moults essais).

4/ procédure sauvegarde de la valeur actuelle:
Pour pouvoir effectuer la soustraction pour connaitre la distance réelle à parcourir il faut sauvegarder la distance actuelle en _old pour pouvoir l'utiliser dans le prochain train.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Soft de commande CNC en asm
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#222 Message par F6FCO » mer. 24 oct. 2018 23:45

Bonsoir tout le monde,
Mes trois axes X,Y et Z sont valides virtuellement, j'ai câblé les drivers et commencé à coder la routine de JOG (déplacement manuel).
Mais voilà, je suis coincé, je bloque sur cette routine toute simple depuis le début de la soirée:

Code : Tout sélectionner

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

    Errorlevel-302                         ; Supprime le message "Ensure that bank bits are correct" 

    list        p
=18f4525                ; processeur utilisé 
    
#include    <p18f4525.inc>            ; Définitions des constantes

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

 CONFIG    OSC = XT                        ; Oscillateur ext 4MHz 
 CONFIG    IESO 
= OFF                        ; Oscillateur secondaire refusé (ON/OFF)
 CONFIG PWRT = ON                        ; Délai au démarrage (ON/OFF)
 CONFIG BOREN = OFF                        ; Reset si chute de tension (ON/OFF)
 CONFIG BORV = 0                        ; Tension de reset en 1/10ème Volts 
 CONFIG WDT 
= OFF                        ; Mise hors service du watchdog (ON/OFF)
 CONFIG PBADEN = OFF                    ; PORTB<4:0> les broches sont configurées comme E/S numériques lors de la réinitialisation
 CONFIG LPT1OSC 
= OFF                    ; Timer1 configuré pour un fonctionnement plus puissant
 CONFIG MCLRE 
= ON                        ; Mclr 
 CONFIG STVREN 
= ON                        ; Reset sur débordement de pile (ON/OFF)
 CONFIG LVP = OFF                        ; Programmation basse tension autorisée (ON/OFF)
 CONFIG XINST = OFF                        ; L'extension du jeu d'instructions et le mode d'adressage indexé sont désactivés(mode hérité)
 CONFIG DEBUG = ON                        ; Debugger hors service
 CONFIG CP0 = OFF                        ; Code protection sur block 0 (ON/OFF)
 CONFIG CP1 = OFF                        ; Code protection sur block 1 (ON/OFF)
 CONFIG CP2 = OFF                        ; Code protection sur block 2 (ON/OFF)
 CONFIG CPB = OFF                        ; Code protection sur bootblock  (ON/OFF)
 CONFIG CPD = OFF                        ; Code protection sur eeprom (ON/OFF)
 CONFIG WRT0 = OFF                        ; Protection écriture block 0 (ON/OFF)
 CONFIG WRT1 = OFF                        ; Protection écriture block 1 (ON/OFF)
 CONFIG WRT2 = OFF                        ; Protection écriture block 2 (ON/OFF)
 CONFIG WRTB = OFF                        ; Protection écriture bootblock (ON/OFF)
 CONFIG WRTC = OFF                        ; Protection écriture configurations (ON/OFF)
 CONFIG WRTD = OFF                        ; Protection écriture zone eeprom (ON/OFF)
 CONFIG EBTR0 = OFF                        ; Protection lecture de table block 0 (ON/OFF)
 CONFIG EBTR1 = OFF                        ; Protection lecture de table block 1 (ON/OFF)
 CONFIG EBTR2 = OFF                        ; Protection lecture de table block 2 (ON/OFF)
 CONFIG EBTRB = OFF                        ; Protection lecture de table bootblock (ON/OFF)
            

                
;--------------------------------- adresse de depart après reset -----------------------------
                ORG     H'
0'
                bra        init      

;--------------------------------------- interruptions ---------------------------------------

            ORG        H'
08'
interrupt   btfss    PIR1,RCIF                ; registre plein ? si oui on saute à réception
            bra        int1                    ; sinon on sort de l'
interrupt                   
reception        
            nop
            movff    RCREG
,POSTINC0            ; lecture de RCREG  et mise en mem       
            incf    ptr_train_RCIF            
; on a reçu qq chose donc on incrémente le compteur de trains
            btfss    RCSTA
,OERR                ; test d'une erreur d'overrun
            goto    int1
            
; traitement de l'erreur d'overrun
            bcf        RCSTA
,CREN                ; on efface le bit OERR
            bsf        RCSTA
,CREN                ; on relance la réception
int1        
; traitement des autres interruptions
            retfie
            
         
;----------------------------------- Initialisations -------------------------------------------------
init
                bcf        ADCON0
,ADON                ; convertisseur a/n dévalidé
                movlw    0xFF
                movwf    ADCON1
,PCFG3            ; on passe tout en digital
                movlw    b
'11000000'                ; INTCON (activation des int GIE/GIEH=1, PEIE/GIEL=1)
                movwf    INTCON
                movlw    b
'10000000'                ; RCON (priorités int activées IPEN=1,)
                movwf    RCON
                movlw    b
'00100000'                ; IPR1 (Rx en haute priorité RCIP=1)
                movwf    IPR1
                movlw    b
'00100000'                ; PIE1 (int RX activée RCIE=1)
                movwf    PIE1
                movlw    b
'00100100'                ; TXSTA (Emission USART activée TXEN=1, et mode asynchrone haute vitesse BRGH=1)
                movwf    TXSTA
                movlw    b
'10010000'                ; RCSTA (Utilisation du port série activée SPEN=1, Réception USART activée CREN=1)
                movwf    RCSTA
                movlw    d
'25'                    ; 9600bauds avec sync=O, brgh=1, brg16=0, xtal=4Mhz
                movwf    SPBRG
                bcf        BAUDCON
,BRG16            ; réglé à 8bits        
                movlw     B
'11111111'                 
                movwf    TRISA
                movlw     B
'00000111'                 
                movwf    TRISB
                movlw     B
'11001100'                
                movwf    TRISC
                movlw     B
'10000011'                 
                movwf    TRISD
                movlw     B
'10000011'                 
                movwf    TRISE
                clrf    PORTB
                clrf    PORTC
                clrf    PORTD
                clrf    PORTE
            
                
; -------------------------------------- Programme principal --------------------------------------
main  

JogX        
            btfss     PORTA
,0    ; Bouton poussoir inerte=1, appuyé=0, si ra0=1 on saute
            bra        xmoins    
            btfss        PORTA
,1    ; Bouton poussoir inerte=1, appuyé=0, si ra1=1 on saute
            bra        xplus
            bra        JogX
                
xmoins        bcf        drv_dirX        
; on jog en arrière
            
;call        Xpulse_base
            bra        JogX
            
xplus            bsf        drv_dirX        
; on jog en avant
            
;call        Xpulse_base
            bra        JogX


Un poussoir relié sur RA0 et un autre sur RA1, resistance de pull-up sur chaque, état 1 au repos, état 0 poussé, vérifié par mesures.
Mesures faites directement sur les pins A0 et A1, elles sont bien reliées aux poussoirs, relevés à l'état haut, quand on appuie sur l'un ou l'autre poussoir les pins A0 ou A1 passent bien à l'état bas, donc les poussoirs sont bien câblés et font bien leur boulot.
Si je fais du pas à pas à la première ligne btfss PORTA,0 au lieu de skipper je passe directement à bra Xmoins.
Bouton appuyé ou relâché ne change rien.

En désespoir de cause j'ai essayé de changer les btfss par des btfsc 'pour voir'. Bien que les niveaux changent sur les pins concernées par appui des poussoirs, cette fois je saute d'un btfss à l'autre en boucle sans fin.

Le portA est bien en input. Je pensais à un mauvais réglage des registres de config mais je pense bien avoir désactivé le mode analogique et tout passé en digital et je ne vois rien d'autre à faire à mon niveau.
Une idée ?
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Soft de commande CNC en asm
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2596
Enregistré en : juillet 2016
Localisation : Terre

#223 Message par Temps-x » jeu. 25 oct. 2018 02:33

Bonsoir

:sifflotte: .... Tu viens d'inventer 2 nouveaux bits :lol: (page 224 du datasheet)

Code : Tout sélectionner


                movwf    ADCON1
,PCFG3            ; on passe tout en digital
                movlw    b
'11000000'                ; INTCON (activation des int GIE/GIEH=1, PEIE/GIEL=1)
 


Deux choses à savoir.

Code : Tout sélectionner


 bcf        ADCON0
,ADON                ; convertisseur a/n dévalidé


Désactiver ton convertisseur et une chose, mais le configurer pour que tes pattes soit en entrée analogique en est une autre.

Dans ta config, rien n'indique que tes pattes sont en analogique, si tu vois ce que je veux dire, pour résumé.

Code : Tout sélectionner


      movlw B
'00001111'                    ; mode entrée/sortie   
      movwf ADCON1 

      movlw B
'00000111'                      ; 
      movwf CMCON                          
; éteindre les comparateurs



A vérifier car il est très tard, et il faut que je me lève demain, mais je pense que sa doit fonctionner si tu rajoute ceci en début programme.

Toujours vérifier les pattes quand utilise dans le début du datasheet, pour voir si il y a pas des comparateur, ou autre chose
qui pourrais te nuire.

Bonne continuation :wink:

==> A+
Modifié en dernier par Temps-x le jeu. 25 oct. 2018 17:40, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Soft de commande CNC en asm
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#224 Message par F6FCO » jeu. 25 oct. 2018 14:35

Bonjour,
Dis-donc tu veilles tard avant d'aller au boulot :shock:
J'ai fais les modifs que tu préconises mais toujours pareil, le PIC ne réagit pas aux simulis du poussoir. J'ai essayé également sur ma platine école pour dédouaner le montage de la CNC mais les symptômes sont les mêmes, c'est donc bien un pbm de config.

J'ai essayé le code montré en exemple 9.1 page 91 du datasheet mais çà n'a rien changé.

D'ailleurs un truc m'interpelle dans ce code: la ligne "movwf 07h ; configure comparators" me perturbe (dit-il du haut de sa grande expérience :sifflotte: :sifflotte: )
J'ai donc essayé avec un movlw mais de toutes façons çà n'a rien changé.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Soft de commande CNC en asm
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2596
Enregistré en : juillet 2016
Localisation : Terre

#225 Message par Temps-x » ven. 26 oct. 2018 03:15

Bonsoir,

F6FCO a écrit :Source du message Dis-donc tu veilles tard avant d'aller au boulot :shock:


C'est vrai, mais je suis toujours à l'heure quand j'arrive au boulot, debout 6h30 du matin, à l'heure que je me couche,
il suffit de lire l'heure en haut du post.

Normalement par défaut le comparateur est éteint, mais par prudence c'est mieux de le refaire.

F6FCO a écrit :Source du message D'ailleurs un truc m'interpelle dans ce code: la ligne "movwf 07h ; configure comparators" me perturbe


C'est surement une copie dans une adresse, pas une valeur, les variables ne sont que des adresses.

Peux tu mettre tout le code avec la déclaration des variables, je regarde demain car le vendredi je suis chez moi plutôt.

==> A+
Modifié en dernier par Temps-x le ven. 26 oct. 2018 13:12, modifié 2 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Soft de commande CNC en asm
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#226 Message par F6FCO » ven. 26 oct. 2018 08:47

Une erreur de leur part je pense car l'adresse 0x07h en question est ABDOVF, le bit 7 du registre BAUDON, et remplacer movwf par un movlw ne sert à rien car le registre W est déjà chargé à 0x07 deux lignes plus haut. Bon, pas grave :wink:

En tout cas merci de te pencher sur mon cas car je suis bloqué dans le développement d'4L1C3 avec cette histoire de poussoirs inactifs.
Le code à bien été bidouillé hier pour arriver à faire marcher le truc, j'ai essayé plein de trucs, et l'anglais du datasheet ne m'aide pas trop :evil: . Voici la dernière version avec le bout de code du datasheet, poussoirs sur PORTA toujours aussi inactifs.
J'ai d'autres poussoirs sur les PORTC et PORTD qui fonctionnent parfaitement, seuls ceux sur le PORTA ne veulent rien savoir.

Code : Tout sélectionner

;----------------------------------------------------------------------------------------------
;
                                4L1C3 - F6FC0
; 24 octobre 2018  
; réception trains et stockage valeur en mem ok
; axes X, Y et Z fonctionnels en virtuel
; faire un reset du code, une déco/reco de teraterm avant de lancer chaque processus.
;----------------------------------------------------------------------------------------------

    Errorlevel-302                         ; Supprime le message "Ensure that bank bits are correct" 

    list        p
=18f4525                ; processeur utilisé 
    
#include    <p18f4525.inc>            ; Définitions des constantes

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

 CONFIG    OSC = XT                        ; Oscillateur ext 4MHz 
 CONFIG    IESO 
= OFF                        ; Oscillateur secondaire refusé (ON/OFF)
 CONFIG PWRT = ON                        ; Délai au démarrage (ON/OFF)
 CONFIG BOREN = OFF                        ; Reset si chute de tension (ON/OFF)
 CONFIG BORV = 0                        ; Tension de reset en 1/10ème Volts 
 CONFIG WDT 
= OFF                        ; Mise hors service du watchdog (ON/OFF)
 CONFIG PBADEN = OFF                    ; PORTB<4:0> les broches sont configurées comme E/S numériques lors de la réinitialisation
 CONFIG LPT1OSC 
= OFF                    ; Timer1 configuré pour un fonctionnement plus puissant
 CONFIG MCLRE 
= ON                        ; Mclr 
 CONFIG STVREN 
= ON                        ; Reset sur débordement de pile (ON/OFF)
 CONFIG LVP = OFF                        ; Programmation basse tension autorisée (ON/OFF)
 CONFIG XINST = OFF                        ; L'extension du jeu d'instructions et le mode d'adressage indexé sont désactivés(mode hérité)
 CONFIG DEBUG = ON                        ; Debugger hors service
 CONFIG CP0 = OFF                        ; Code protection sur block 0 (ON/OFF)
 CONFIG CP1 = OFF                        ; Code protection sur block 1 (ON/OFF)
 CONFIG CP2 = OFF                        ; Code protection sur block 2 (ON/OFF)
 CONFIG CPB = OFF                        ; Code protection sur bootblock  (ON/OFF)
 CONFIG CPD = OFF                        ; Code protection sur eeprom (ON/OFF)
 CONFIG WRT0 = OFF                        ; Protection écriture block 0 (ON/OFF)
 CONFIG WRT1 = OFF                        ; Protection écriture block 1 (ON/OFF)
 CONFIG WRT2 = OFF                        ; Protection écriture block 2 (ON/OFF)
 CONFIG WRTB = OFF                        ; Protection écriture bootblock (ON/OFF)
 CONFIG WRTC = OFF                        ; Protection écriture configurations (ON/OFF)
 CONFIG WRTD = OFF                        ; Protection écriture zone eeprom (ON/OFF)
 CONFIG EBTR0 = OFF                        ; Protection lecture de table block 0 (ON/OFF)
 CONFIG EBTR1 = OFF                        ; Protection lecture de table block 1 (ON/OFF)
 CONFIG EBTR2 = OFF                        ; Protection lecture de table block 2 (ON/OFF)
 CONFIG EBTRB = OFF                        ; Protection lecture de table bootblock (ON/OFF)
            
;-------------------------------------- assignations ------------------------------------------

#define    btn_jog_Xmoins    PORTA,0    ; 1
#define    btn_jog_Xplus    PORTA,1    ; 1
#define    btn_jog_Ymoins    PORTA,2    ; 1
#define    btn_jog_Yplus    PORTA,3    ; 1
#define    btn_jog_Zmoins    PORTA,4    ; 1
#define    btn_jog_Zplus    PORTA,5    ; 1

#define capteur_pomZ    PORTB,0    ; 1
#define capteur_pomX    PORTB,1    ; 1
#define capteur_pomY    PORTB,2    ; 1
#define led_pomZ        PORTB,3    ; 0
#define led_pomY        PORTB,4    ; 0
#define cts                PORTB,5    ; 0
#define nc0                PORTB,6 ; x
#define nc1                PORTB,7 ; x

#define    led_popY        PORTC,0 ; 0
#define    led_popZ        PORTC,1 ; 0
#define    btn_run            PORTC,2    ; 1
#define    btn_popX        PORTC,3    ; 1
#define drv_stepY        PORTC,4    ; 0            pulse Y
#define drv_dirY        PORTC,5 ; 0            direction Y
#define Tx                PORTC,6    ; 1
#define Rx                PORTC,7    ; 1 

#define btn_popY        PORTD,0    ; 1
#define btn_popZ        PORTD,1    ; 1
#define drv_stepX        PORTD,2    ; 0            pulse X
#define drv_dirX        PORTD,3    ; 0            direction X
#define drv_stepZ        PORTD,4 ; 0            pulse Z
#define drv_dirZ        PORTD,5 ; 0            direction Z
#define    led_pomX        PORTD,6 ; 0
#define btn_pom            PORTD,7    ; 1
#define    btn_ctrl        PORTE,0 ; 1
#define    btn_btn_fn        PORTE,1 ; 1
#define    led_popX        PORTE,2 ; 0

;------------------------------ déclaration des variables -------------------------------------

                 CBLOCK    H'
0'
                 ptr_train_RCIF
                 ENDC
                 
                 CBLOCK H'
80
                ENDC

; ---------------------------------------- macros --------------------------------------------
    
qrt            macro                            ; demande au PC d'
arreter l'émission 
                bsf        cts
            endm
            
qrv            macro                            ; demande au PC de relancer l'
émission
                bcf        cts            
            endm
                
;--------------------------------- adresse de depart après reset -----------------------------
                ORG     H'0'
                bra        init      

;--------------------------------------- interruptions ---------------------------------------

            ORG        H'08'
interrupt   btfss    PIR1,RCIF                ; registre plein ? si oui on saute à réception
            bra        int1                    
; sinon on sort de l'interrupt                   
reception        
            nop
            movff    RCREG,POSTINC0            ; lecture de RCREG  et mise en mem       
            incf    ptr_train_RCIF            ; on a reçu qq chose donc on incrémente le compteur de trains
            btfss    RCSTA,OERR                ; test d'
une erreur d'overrun
            goto    int1
            ; traitement de l'
erreur d'overrun
            bcf        RCSTA,CREN                ; on efface le bit OERR
            bsf        RCSTA,CREN                ; on relance la réception
int1        ; traitement des autres interruptions
            retfie
                     
;----------------------------------- Initialisations --------------------------------------------
init


                movlw    b'
11000000'                ; INTCON (activation des int GIE/GIEH=1, PEIE/GIEL=1)
                movwf    INTCON
                movlw    b'
10000000'                ; RCON (priorités int activées IPEN=1,)
                movwf    RCON
                movlw    b'
00100000'                ; IPR1 (Rx en haute priorité RCIP=1)
                movwf    IPR1
                movlw    b'
00100000'                ; PIE1 (int RX activée RCIE=1)
                movwf    PIE1
                movlw    b'
00100100'                ; TXSTA (Emission USART activée TXEN=1, et mode asynchrone haute vitesse BRGH=1)
                movwf    TXSTA
                movlw    b'
10010000'                ; RCSTA (Utilisation du port série activée SPEN=1, Réception USART activée CREN=1)
                movwf    RCSTA
                movlw    d'
25'                    ; 9600bauds avec sync=O, brgh=1, brg16=0, xtal=4Mhz
                movwf    SPBRG
                bcf        BAUDCON,BRG16            ; réglé à 8bits        
                movlw     B'
00000111'                 
                movwf    TRISB
                movlw     B'
11001100'                
                movwf    TRISC
                movlw     B'
10000011'                  
                movwf    TRISD
                movlw     B'
10000011'                 
                movwf    TRISE
                clrf    PORTB
                clrf    PORTC
                clrf    PORTD
                clrf    PORTE
                ; -----------------   initialisation du PORT A
                clrf    PORTA
                clrf    LATA
                movlw    0x07
                movwf    ADCON1
                movwf    CMCON            
                movlw     0xff                 
                movwf    TRISA
                ; -----------------
            
                
; -------------------------------------- Programme principal --------------------------------------
main  
; poussoirs sur Ra0 et Ra1, résistances pull-up 10kohm. Relevé=1, enfoncé=0
JogX        
            btfss    PORTA,0    ; Bouton poussoir inerte=1, appuyé=0, si ra0=1 on saute
            bra        xmoins    
            btfss    PORTA,1    ; Bouton poussoir inerte=1, appuyé=0, si ra1=1 on saute
            bra        xplus
            bra        JogX
                
xmoins        bcf        drv_dirX                        ; jog en arrière
            ;call    Xpulse_base
            bra        JogX
            
xplus        bsf        drv_dirX                        ; jog en avant
            ;call    Xpulse_base
            bra        JogX
            

          END
      



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

Soft de commande CNC en asm
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2596
Enregistré en : juillet 2016
Localisation : Terre

#227 Message par Temps-x » ven. 26 oct. 2018 13:27

Bonjour F6FCO, et tout le forum,

movlw 0x07 mets moi ça en binaire 8 bits avec les zéros, et après tu regardes la page 224 du datasheet :furieux:

:sifflotte: Faire une configuration en hexadécimal je conseille pas trop, car on se retrouve avec ce genre de problème

De toute façon je fais un essai en réelle avec le même pic que toi, mais je pense que tu as la solution maintenant

Microchip fait très souvent des erreurs sur des schémas ou du code, comme certain... exit dehors!!

Attention car l'erreur de Microchip est de taille, il y a pas que le movwf 07h




Regarde ce schéma, et trouve moi les 2 erreurs de Microchip, cherche pas la complication.

Moteur brushless(1).jpg


==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Soft de commande CNC en asm
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#228 Message par F6FCO » ven. 26 oct. 2018 15:01

Temps-x a écrit :Bonjour F6FCO, et tout le forum,
et après tu regardes la page 224 du datasheet :furieux:

Non, pas sur la tête :cry:

Pfffttt !! bloquer plusieurs jours sur une erreur aussi simple que çà :mur: J'ai mis 0xF (oopps, pardon b'00001111') et maintenant çà marche au poil. En plus j'avais déjà réglé çà sur le 877, aucune excuse.
Un grand merci, tu m'as tiré une fière chandelle du pied.

Pour ton schéma je ne suis pas trop expérimenté en brushless, pas de souci de compréhension pour C0 à C5 qui amènent les signaux de commande mais je ne sais pas trop ce qui doit arriver sur C6, je dirai que si A est relié à ce circuit, B et C devraient l'être aussi.
J'ai bon dis, j'ai bon ? :razz:
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Soft de commande CNC en asm
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2596
Enregistré en : juillet 2016
Localisation : Terre

#229 Message par Temps-x » ven. 26 oct. 2018 20:23

Bonsoir F6FCO, et tout le forum,

F6FCO a écrit :Source du message Non, pas sur la tête :cry:


Alors ou !!

F6FCO a écrit :Source du message J'ai mis 0xF

:furieux:

Et pourtant en psot 225 j'avais déjà fais.

Moi s'appelle cela une étourderie, mais tu es excusable, car entre ta rénovation qui j'espère avance, et ton robot ça fait
beaucoup.

Maintenant tu vas pourvoir avancé. :wink:

F6FCO a écrit :Source du message J'ai bon dis, j'ai bon ? :razz:


Non c'est pas ça pour le schéma, tu cherches beaucoup trop loin.

Ne t’inquiète pas, j'ai fait passé ce teste à des personnes comme : DAUDET78, Neptune qui étaient
ingénieur en électronique qui son à la retraite maintenant, et ils n'ont pas trouvés.

Pourtant c'est gros comme une maison, on va voir sur ce forum, si il en a qui trouve, je rappelle qu'il faut pas chercher loin.

==> A+
Modifié en dernier par Temps-x le ven. 26 oct. 2018 20:40, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Soft de commande CNC en asm
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#230 Message par F6FCO » ven. 26 oct. 2018 20:35

Temps-x a écrit :Bonsoir F6FCO, et tout le forum,

F6FCO a écrit :Source du message Non, pas sur la tête :cry:


Alors ou !!


Pas le droit de dire sur un forum non dédié.

Temps-x a écrit :
Et pourtant en psot 225 j'avais déjà fais.

Moi s'appelle cela une étourderie, mais tu es excusable, car entre ta rénovation qui j'espère avance, et ton robot ça fait
beaucoup.


Moi s'appelle Jean-Claude.

Les entrées 8 et 9, une normale et l'autre inverseuse reliées ensemble ? Ca peut être possible, il faudrait juste étudier ce qu'il y a derrière dans le chip.
Modifié en dernier par F6FCO le ven. 26 oct. 2018 20:53, modifié 1 fois.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 34 invités