Pourquoi l’interruption de changement de broche Atmega324pb ne se déclenche-t-elle pas alors que l’entrée change?

Scampbell

Pourquoi l’interruption de changement de broche Atmega324pb ne se déclenche-t-elle pas alors que l’entrée change?


Pour une raison quelconque, mes interruptions de changement de broche ne sont pas déclenchées sur mon Atmega324PB. Pour tester, j’utilise une carte d’évaluation et connecte une broche de sortie à une broche configurée pour déclencher une interruption de changement de broche. Y a-t-il quelque chose qui me manque?

 volatile   uint16_t  motorCount =   0 ; 

 // Configuring pin change interrupt on A7. 
 // A7 pin change interrupts are handled in 
 // "pin change interrupt request 3" PCICR |=   ( 1   <<  PCIE3 ); PCMSK3 |=   ( 1 << PCINT31 ); 

 // Interrupt routine ISR ( PCINT3_vect ) 
 { motorCount ++; 
 } 

Pour tester, je l’ai câblé à une broche de sortie, A2. J’ai vérifié avec un multimètre que les broches A2 et A7 passent de faible (0 V) à élevé (~ 3,6 V). Ce changement ne déclenche pas l’interruption. Il ne se déclenche pas non plus lors du retour à l’état bas.

 // main.c 
 ... __enable_interrupt (); 
 uint8_t  test =   0 ; DDRA |=   ( 1   <<  DDRA2 );     // A2 as output 

 while   ( 1 )   {      
     if ( kbhit ())    // Wait's for serial input character (configured separately) 
     { 
         if (( 'n'   ==  tmp )   ||   ( 'r' ==  tmp )) 
         { test ^=   1 ;   // Toggle first bit. test &=   1 ;   // Mask to only first bit. 
             if   ( test ==   1 )   { 
                 // output high on A2 PORTA |=   ( 1   <<  PORTA2 ); 
             } 
             else   { 
                 // output low on A2 PORTA &=   ~( 1   <<  PORTA2 ); 
             } 
         } 
     } 
 } 
 ... 

Réponses


 Scampbell

Il s’avère que j’ai mal interprété la fiche technique!

Dans cette ligne de la section 15.1 …

« La demande d’interruption de changement de broche 3 (PCI3) se déclenchera si une broche PCINT [31:24] activée bascule. »

Je pensais que « PCINT [31:24] » faisait référence aux broches 31 à 24. J’ai raté le fait qu’il y avait des broches définies comme PCINT31, PCINT30, PCINT29, …, PCINT24. Pour l’atmega324pb, PCINT31 est la même broche que D7, comme indiqué dans les commentaires.

Bruce Abbott

« Il s’avère qu’il y a une erreur dans la fiche technique Atmega324pb! » – où est l’erreur? ww1.microchip.com/downloads/en/DeviceDoc/40001908A.pdf Tableau 16-12. broche de port PD7 fonction alternative PCINT31

Scampbell

Je viens de réaliser que l’erreur était dans mon interprétation. J’ai interprété le « PCINT [31:24] » comme les broches 31 à 24. Merci! Je mettrai à jour la réponse pour signaler ma mauvaise interprétation, au cas où quelqu’un d’autre serait aussi précipité que moi et manquerait ce détail flagrant.

 

#de, #pas, alors, Atmega324pb, broche, change, changement, déclenche-t-elle, l’entrée, l’interruption, ne, Pourquoi, que, se

 

google

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *