​ ​ ​ ​ Harware interrupt problem with 20X2 and other X2
Results 1 to 7 of 7

Thread: Harware interrupt problem with 20X2 and other X2

  1. #1
    New Member
    Join Date
    Oct 2017
    Location
    voirn
    Posts
    6

    Default Harware interrupt problem with 20X2 and other X2

    bonjour,

    je n'arrive pas à utiliser les interruptions hardware (hint1 ou hint2) avec le 20X2.
    Le défaut parait-etre l'mpossibilité de désactiver la routine d'Irq apres
    etre passe une fois dedans.

    Pour affiner mon test j'ai écrit une séquence simple qui comprend:
    l'initialisation avec les setup basiques et hintsetup (%00100010) pour hint1 sur B.0 et setintflags %0001010,
    la boucle principale avec high B.7/ low B.7 comme marqueur à l'oscilloscope
    la routine d'irq avec high B.6/Low B.6 comme marqueur et return, sans hintsetup ni setintflags.
    Les Interruptions sont rétablies dans la boucle principale grace à un flag mis à un dans la routine d'irq!
    J'ai fait le test avec hintsetup et setintflags en sortie d'irq aussi, ça ne marche pas non plus.

    Je démarre la séquence sans le signal d'irq, elle tourne dans la boucle principale;
    Je branche le signal (une impulsion calibrée à 1ms à 20Hz pour être tranquille, vu que Hint1 est en front montant)
    J'ai testé front descendant = même problème!

    Le marqueur B.6 n'est pas synchrone du signal et, lorsque je le débranche, B.6 continue !
    J'ai cherché ce qui pouvait forcer le retour continuel en interruption sans trouver.

    Pouvez vous m'indiquer une piste à tester?

    J'ai utilisé les irq standard, ça marche, mais je voudrais utiliser les choix sur front montant et descendant.

    Merci / Topor

  2. #2
    Technical Support
    Join Date
    Jan 1970
    Location
    Bath,UK
    Posts
    6,413
    Blog Entries
    1

    Default

    interrupt:

    ;
    ; other code
    ;

    flags = 0 ; clear all flags so ready for next interrupt

    ;setintflags off; or turn off any new flags completely

    ;hintsetup off; or turn off hardware interrupts completely

    return
    PICAXE Technical Support

  3. #3
    New Member
    Join Date
    Oct 2017
    Location
    voirn
    Posts
    6

    Default

    Hello,

    j'ai essayé à nouveau, sans résultat.

    Je peux vous envoyer le texte du programme de test (100lignes avec les commentaires) mais je ne trouve pas comment
    joindre un fichier à cette ré^ponse!
    Sinon CTRL V.... Merci/Topor

  4. #4
    Senior Member
    Join Date
    Jan 2010
    Location
    34 France
    Posts
    3,853

    Default

    Bonjour,
    mettre le forum en mode avancé (en bas à droite) et le fichier .bas en PJ.

    Si le programme n'est pas trop long (<1000 caractères) :
    sur PE6,
    CTRL A dans la fenêtre pour tout sélectionner.
    Cliquer Forum (onglet Principal)
    Puis CTRL V dans la fenêtre du forum.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème . (Les Shadoks)

  5. #5
    New Member
    Join Date
    Oct 2017
    Location
    voirn
    Posts
    6

    Default

    Bonjour,
    ma réponse d'hier n'apparaît plus, je suppose avoir fait une fausse manip.
    Je la renvoie.
    Ci-dessous le texte du bout de prog test:
    ----------------------------
    ; essais des interruptions hint sur 20X2
    ; le 22 nov 2017 file Hint171122-3
    ;
    ; boucle principale avec marqueur sur pinB.7 (4 short pulses/marqueur 1-0
    ; puis 2 long pulses/marqueur 1-1)
    ;
    ; routine d'interruption avec marqueur sur pin B.5 en entree (2 pulses / marqueur 2,
    ; puis en sortie (2 pulses/marqueur 3)
    ;
    ; les lignes en commentaire ont ete essayees, les masques ne fonctionnent pas,
    ; il y a bien prise en compte de la 1ere impulsion mais les interruptions
    ; suivantes ne sont pas dues a la pin B.0: le signal est d?sactiv?!
    ;
    ; aucune pause ni timer ne sont activ?s (a ma connaissance)
    ; tout se passe comme si une interruption etait generee en interne.
    ;
    symbol drapout = bit0 ; flag
    symbol drapword = w0
    ;

    init:
    drapout = 0
    let dirsC = %00000000 ; port C en input
    let dirsB = %11110000 ; B0, B1, B2 B3 inputs
    let outpinsB = 0
    setintflags off ; bit0=hint0, b1=hint1, b2=hint2, b3=hints
    ; b4=hintcomp, b5=hintserin, b6=hinti2c, b7=hintTimr
    ;
    hintsetup %00000000 ; b0=hint0(reserved), b1=hint1, b2=hint2, b3(reserved)
    ; b4=hint0edge(reserved), b5=hint1edge, b6=hint2edge, b7 (reserved)
    main:
    high B.7 ; marqueur 1-0
    low B.7
    high B.7
    low B.7
    high B.7
    low B.7
    high B.7
    low B.7
    setint off
    ;hintsetup %00100010 ; hint1(B.0), rising edge
    ;setintflags %00000010, %00000010 ; hint1 only => Same ProBleme
    ;setintflags %00001000, %00001000 ; hint0-1-2 only => SPB
    ;setintflags %00001010, %00001000 ; hint0-1-2, hint1 masqu?e => SPB
    ;setintflags %00001010, %00000010 ;hint0-1-2 masqu?es, hint1 => SPB
    ;setintflags %00001010, %00001010 ;hint0-1-2, hint1 => SPB
    hintsetup %00000010 ; hint1(B.0), falling edge
    ;setintflags %00000010, %00000010 ; hint1 = Same ProBleme
    ;setintflags %00001000, %00001000 ; hint0-1-2 = SPB
    ;setintflags %00001010, %00001000 ; hint0-1-2, hint1 masqu?e = SPB
    ;setintflags %00001010, %00000010 ;hint0-1-2 masqu?es, hint1 = SPB
    setintflags %00001010, %00001010 ;hint0-1-2, hint1 = SPB
    boucle:
    if drapout = 1 then
    drapout = 0
    goto main
    else endif
    high B.7 ; marqueur 1-1
    high B.7
    high B.7
    high B.7
    low B.7
    low B.7
    low B.7
    high B.7
    high B.7
    high B.7
    high B.7
    low B.7
    low B.7
    low B.7
    goto boucle

    Interrupt:
    high B.5 ; marqueur 2
    high B.5
    low B.5
    low B.5
    high B.5
    high B.5
    low B.5
    low B.5
    Irq01:
    ;
    drapout = 1
    high B.6 ; marqueur 3
    low B.6
    high B.6
    low B.6
    ;hintsetup %00000000 ; disable hint1(B.0)
    ;setintflags %00001010, %00000000 ;Hint1, mask all
    ;setintflags %00000000, %00001010 ;Hint1 off
    setintflags off
    setint off
    return
    ------------------------------------------------------------------
    J'ai lue la doc sur les interrupts dans la datasheet du PIC18F1XK22.
    les questions portaient sur les moyens et les instructions en Basic pour gérer
    les niveaux de priorite qui existe dans le PIC18F1XK22
    quel est le vecteur d'IT utilisé: 0008h ou 0018h?
    -Concernant hint1 et hint2 il y a 3 bits de control, INTxIP, INTxIE, INTxIF dans INTCON3
    et INTEDGx dans INTCON2 comment sont gérés ces bits et ces registres?
    Merci pouR votre support / Topor

  6. #6
    Technical Support
    Join Date
    Jan 1970
    Location
    Bath,UK
    Posts
    6,413
    Blog Entries
    1

    Default

    You have not used what we suggested:

    ....
    flags = 0
    hintsetup off
    return

    PICAXE Technical Support

  7. #7
    New Member
    Join Date
    Oct 2017
    Location
    voirn
    Posts
    6

    Default

    hi,
    editor reject hintsetup off, i have replaced with %00000000
    and with flags = 0 it works!
    thanks a lot /toppor

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •