Utilisation du compilateur C18 sur Mac OS X

Scott

Utilisation du compilateur C18 sur Mac OS X


Je suis actuellement dans une classe de microcontrôleurs, où nous utilisons le PIC18F4550 et devons utiliser le compilateur C18 (quelque chose orienté Windows et utilisé pour le classement). J’essaie d’installer cela sur Mac OS X et je rencontre des difficultés.

Je ne trouve pas de compilateur C18 valide qui fonctionne sur Mac OS X. Au lieu de cela, je trouve un compilateur XC8, qui, selon Microchip, est un remplacement complet. Mais, lorsque j’essaie de compiler le code ci-dessous, cela me donne une erreur, et ce code est largement utilisé dans ma classe.

 #pragma  interrupt low_isr // both lines generate errors _asm goto  low_isr _endasm 

Oui, j’ai trouvé un compilateur C18, mais ce n’est que pour Windows. Malgré mes efforts de recherche, je ne trouve que le compilateur XC8. Les forums en ligne indiquent que le compilateur C18 pour Mac OSX a été mis hors ligne.

dext0rb

Publiez les erreurs.

Joan

Vous ne pouvez pas installer une machine virtuelle?

Scott

Ce ne sont que de simples erreurs de syntaxe. C’est #pragma foo , l’erreur est foo unexpected .

Réponses


 m.Alin

Dans le nouveau compilateur XC8, vous pouvez définir une routine d’interruption de faible priorité comme celle-ci:

 void  interrupt low_priority ISR ( void ) 
 { 
  ... 
 } 

Pour en savoir plus: MPLAB® XC8 C Compiler User’s Guide

Scott

Je le ferais et je voudrais simplement exécuter mon programme. Je ne peux pas à cause du classement.


 superkittens

Ohhhh C18 … comme je t’aime! Même si je n’ai rien à redire sur xc8 non plus.

Vous auriez du mal à trouver un moyen simple d’installer le compilateur C18 sur OSX, mais cela PEUT être fait. Je viens de l’installer sur une machine Windows et de transférer les fichiers sur mon mac: P Oui, c’est une option louche mais ça a marché!

D’accord, donc à propos de votre problème d’interruption. Nous n’avons pas vos messages d’erreur mais en regardant votre code, je pense que je vois ce qui ne va pas. Vous semblez manquer certaines choses, mais JE FAIS des hypothèses ici.

Lorsque vous souhaitez ajouter une interruption à votre image, vous devez vous rappeler qu’il existe deux types d’interruptions: priorité faible et priorité élevée. C’est à vous de décider où appartiennent vos interruptions périphériques (comme les broches d’E / S externes). Je suis sûr que vous le savez déjà à en juger par le fait que vous utilisez une interruption de faible priorité. Je voulais juste le répéter.

Maintenant, pour le pic18f4550, le vecteur de faible priorité se trouve à l’adresse 0x18 en mémoire. Par conséquent, vous devez écrire une ligne de pragma qui ressemble à ceci:

 #pragma  code low_vector = 0x18 

Maintenant, vous devez définir un prototype de fonction qui gère vos demandes d’interruption. Appelons cela « low_int_fcn () »

 void  low_int_fcn (); 

Ensuite, nous mettons dans les instructions d’assemblage qui pointent vers la fonction d’interruption que vous avez faite à l’étape précédente:

 void  low_interrupt (){ _asm GOTO low_int_fcn _endasm } 

Ensuite, nous écrivons

 #pragma  code #pragma  interruptlow low_int_fcn 

Enfin, dans votre fonction d’interruption, écrivez le code qui doit être exécuté lorsque votre interruption se déclenche. Par exemple:

 void  low_int_fcn (){ 
   if ( INTCON3bits . INT2IF ==   1 ){ 
      //do stuff INTCON3bits . INT2IF =   0 ;    // Clear the interrupt flag 
   } 
 } 

N’oubliez pas d’activer les interruptions dans votre configuration, c’est-à-dire:

 #pragma  config IESO = ON 

et vous devriez être prêt à partir! Je sais que c’était une réponse de longue haleine et vous saviez probablement un tas de ce que j’ai déjà dit, mais j’ai eu beaucoup de mal à ce sujet par le passé et je voulais m’assurer que vous en avez au moins une assez bonne compréhension.

BTW si vous ne le savez pas déjà, dans MPLabX, allez dans Aide> Contenu de l’aide et vous pouvez trouver une multitude de documentation sur les compilateurs C18 / xc8 … et même des exemples! Vous pouvez trouver un exemple d’interruption sous Outils linguistiques> Chaîne d’outils C18> Compilateur MPLab C pour PIC18> Spécificités linguistiques> Pragmas> #pragma interruptlow.

Il vaut donc la peine de lire la documentation! J’espère que cela a aidé!

Scott

Ce fichier C m’a été donné par le professeur, et d’autres étudiants ont pu le compiler, donc il ne manque rien. J’installe Windows en tant que machine virtuelle pour faciliter les choses.

 

C18, Compilateur, du, Mac, OS, sur, utilisation, X

 

google

Laisser un commentaire

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