Attention ! Fermeture imminente du forum d’Elektor (pour en savoir plus, cliquer ici). À partir du vendredi 1er mars il ne sera plus possible de s’identifier sur ce forum, mais son contenu restera disponible en lecture seule jusqu’à la fin du mois. Le 1er avril, il sera fermé définitivement.

INTERRUPTION

Postby pilote » Wed May 30, 2007 12:00 am

Bonsoir,

Pour entrer dans le fonctionnement des interruptions, j'ai repris le programme "timer_interrupt" que j'ai décortiqué avec la doc : rien ne w'a choqué, je suis donc passé aux essais.

-> Compilation OK
-> Chargement OK
-> Exécution : mpression de blocage

-> Exécution avec KD30 : plantage avec le message d'erreur " communcation error can't accept data error 16014".
-> Exécution avec KD30 en mode pas à pas : Bloocage à l'adresse E2E6 du programme "NCRT0" : je n'exécute aucune instruction du programme chargé.

Merci de votre aide

Cordialement
pilote
 
Posts: 10
Joined: Fri Jan 17, 2014 4:36 pm

Postby pbarre » Wed May 30, 2007 12:00 am

Bonjour,
J'ai trouvé qquechose : J'ai créé ds HEW un nouveau projet que j'ai appelé timer2. Ds ce projet, j'ai recopié timer_interrupt.c on compile, on flashe et ça ne marche pas ! Si maintenant on remplace notre fichier sect30.inc par celui qui se trouve ds le projet original timer_interrupt et qu'on recompile et qu'on reflashe, ça marche. Bizarre !!!
pbarre
 
Posts: 6
Joined: Fri Jan 17, 2014 4:37 pm

Postby pilote » Wed May 30, 2007 12:00 am

Bonsoir,

Suite à ta remarque, j'ai comparé les deux fichiers : il existe un difference au niveau des vecteurs.
.glb _timer_x ;
.lword _timer_x ; vector 22
timer_x correspont au nom du s/p d('interruption. atention à la syntaxe.

Par contre je n'ai toujours pas réussi à faire fonctionner les interruptions "int0 et k0" en applicant la même procédure.

Après avoir consulté pas mal d'exemplzs, je n'ai toujours pas de solution.

Toute suggestion sera la bienvenue

Crdialement
pilote
 
Posts: 10
Joined: Fri Jan 17, 2014 4:36 pm

Postby ymasquel » Wed May 30, 2007 12:00 am

Bonsoir "pbarre" et "pilote",
Une piste en fonction de l'information fournie par "pbarre" :
Dans le fichier d'includes "sect30.inc" la liste des vecteurs (section vector,ROMDATA) prenant en compte les différentes interruptions et autres évènements est totalement affectée avec "dummy" (fantôme, c'est à dire non utilisé) y compris VECTOR22 qui concerne l'interruption sur TIMER X.
Dans une version qui utilise les interruptions sur TIMER X ce vecteur est affecté par les lignes :
.glb _Timer_X_int
.lword _Timer_X_int ; vector 22
C'est probablement la solution mais je n'ai pas le temps de réaliser les tests.
Amicalement, Yves.
P.S. tenez nous au courant de ces recherches. Merci.
Amicalement,
Yves.
ymasquel
Site Admin
 
Posts: 3392
Joined: Thu Jan 02, 2014 10:44 am
Location: Oise (60)

Postby ymasquel » Wed May 30, 2007 12:00 am

Bonsoir "pilote",
Je devais répondre en même temps que toi et nous arrivons à la même conclusion.
Pour les interruptions concernant les Int0 à Int3 ainsi que les Key0 à Key3 il faut que le bit Interrupt Enable Flag du Flag Register soit positionné à 1 ET qu'il soit repositionné à 1 en fin de routine de traitement de l'interruption car la prise en compte d'une interruption bascule le falg à 0. C'est ce que j'ai lu dans le PDF "OVERVIEW".
Amicalement, Yves.
Amicalement,
Yves.
ymasquel
Site Admin
 
Posts: 3392
Joined: Thu Jan 02, 2014 10:44 am
Location: Oise (60)


Return to R8C/13 (01-2006)

Who is online

Users browsing this forum: No registered users and 1 guest