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 le langage C !

Modérateur : Jérémy

Mplab ne trouve aucun compilateurs
Obelix
Membre
Membre
Messages : 10
Enregistré en : juillet 2018

#1 Message par Obelix » sam. 25 août 2018 18:45

Bonjour, j'ai installé MPLAB X V5 ainsi que le compilateur XC8 mais j'ai beau les désinstaller et les réinstaller MPLAB ne trouve pas XC8 :( .
Voici ce qu'il me marque:
mplab.PNG


J'ai essayé ce qu'il était écrit mais cela n'a pas marché.
J'ai enregistré les fichiers ici:
Capture.PNG


Quelqu'un aurait une idée ?
Merci d'avance pour votre aide :)
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Mplab ne trouve aucun compilateurs
satinas
Passioné
Passioné
Messages : 301
Enregistré en : novembre 2015

#2 Message par satinas » sam. 25 août 2018 19:28

Bonjour,
Est-ce que le compilateur XC8 figure bien dans la liste des "Build Tools" (voir image) ?
S'il n'y est pas, il faut l'ajouter avec "add"
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Mplab ne trouve aucun compilateurs
Obelix
Membre
Membre
Messages : 10
Enregistré en : juillet 2018

#3 Message par Obelix » sam. 25 août 2018 23:53

Bonjour,
Non il n'y figurait pas, mais j'ai réussit à résoudre le problème en désinstallant une nouvelle fois MPLAB et en supprimant les dossiers restants dans APPDATA.
Cependant, j'ai un nouveau problème, je souhaite en effet compiler un code qui ne me posait pas de problèmes avant:

Code : Tout sélectionner

// Configuration Registers
#pragma config FOSC=INTIO7, FCMEN=OFF, IESO=OFF, PWRT=OFF, BOREN=OFF
#pragma config BORV=30, WDTEN=OFF, WDTPS=1, MCLRE=ON, HFOFST=ON
#pragma config LPT1OSC=OFF, PBADEN=OFF, CCP2MX=PORTBE, STVREN=OFF
#pragma config LVP=OFF, XINST=OFF, CP0=OFF, CP1=OFF, CP2=OFF
#pragma config CP3=OFF, CPB=OFF, CPD=OFF, WRT0=OFF, WRT1=OFF
#pragma config WRT2=OFF, WRT3=OFF, WRTB=OFF, WRTC=OFF, WRTD=OFF
#pragma config EBTR0=OFF, EBTR1=OFF, EBTR2=OFF, EBTR3=OFF
#pragma config EBTRB=OFF
// Libraries
#include <xc.h>
//#include "p18f45K20.h"
#include <stdio.h>
#include <stdlib.h>
// Global Variables
unsigned char data_H; // ADC result (MSB)
unsigned char data_L; // ADC result (LSB)
volatile near struct {
unsigned refresh:1;
unsigned eor:1;
unsigned bit2:1;
unsigned bit3:1;
unsigned bit4:1;
unsigned bit5:1;
unsigned bit6:1;
unsigned bit7:1;
}
 flag;
// High-Priority Interrupt service routine
void interrupt high_isr (void)
{
 if (INTCONbits.TMR0IF==1) // Test for Timer0 interrupt
 {
 TMR0H = 0xFC; // Sampling frequency
 TMR0L = 0x17;
 INTCONbits.TMR0IF = 0; // Resets Timer0 Interrupt Flag
 LATCbits.LATC1 = ~ LATCbits.LATC1; // Toggle RC1
 if (ADCON0bits.GO_NOT_DONE==0) // A/D Conversion available
 {
 data_H = ADRESH; // Saves the conversion result
 data_L = ADRESL;
 ADCON0bits.GO_NOT_DONE = 1; // Start a New Conversion
 flag.refresh = 1; // Enable the refresh Flag
 }
 }
}
// Main Program
int main(int argc, char** argv) {

 // Variables
unsigned int sample;
unsigned char temp;
 // Setup IOs
 // ---------
 TRISD = 0b00000000; // Sets PORTD to 8 outputs
 TRISC = 0b11111100; // RC0 to RC1 are digital output
// RC2 is used for PWM output

 // Setup Clock for 1MHz operating frequency
 // ----------------------------------------
 OSCCON = 0b01010010; // <1:0> = 00 Clock depends on CONFIGH
 //OSCTUNE = 0b01000000; // <6> = 1 -> Enable PLL
 // Timer0 Setup
 // -------------------------------------------------------------------
 INTCONbits.TMR0IF = 0; // Resets the Timer0 flag bit
 T0CON = 0b00001000; // Timer0 is stopped
 // Timer0 is set as 16 bits counter
// Uses internal clock
// Increments on low-to-high edge
 // Disables the use of prescaler
// Prescaler is set to 1:2 (but not used)
 TMR0H = 0; // Always write H byte first !
 TMR0L = 0;
 T0CONbits.TMR0ON = 1; // Starts Timer0 !
 // ADC Setup
 // --------------------------------------------------------------------
 ADCON0 = 0b00000000; // Selects AN0 as ADC input
// ADC not started
 ADCON1 = 0b00001110; // Sets VDD & VSS as voltage references
 // Only AN0 is set as Analog Input
 ADCON2 = 0b00111010; // Result is Left Justified
 // Acquisition Time is 20 TAD
 // Conversion Clock if fosc/32
 ADCON0bits.ADON = 1; // Starts ADC Module
 ADCON0bits.GO_NOT_DONE = 1; // Starts Conversion
 // PWM output setup (CCP2 on RB3)
 // --------------------------------------------------------------------
 CCP2CON = 0b00001111; // CCP2 as PWM mode, LSB's set to 0
 PR2 = 0xFF; // Initial Period
 CCPR2L = 0x1F; // Initial duty cycle (MSB's)
 PIR1bits.TMR2IF = 0; // Clears Timer 2 interrupt flag
 T2CON = 0b00000000; // Timer 2 prescaler is 1
 T2CONbits.TMR2ON = 1; // Launch Timer 2
 while (PIR1bits.TMR2IF==0);
 TRISBbits.RB3 = 0; // Enable RB3 output
 // Interrupts Setup
 // --------------------------------------------------------------------
 RCONbits.IPEN = 1; // Enable the Interrupt Priority feature
 // INTCONbits.GIEL = 1; // Low Priority Interrupt are allowed
 INTCONbits.GIEH = 1; // High Priority Interrupt are allowed
 INTCONbits.GIE = 1; // Global Enable Interrupts
 INTCONbits.TMR0IE = 1; // Enable Interrupt from Timer0
 INTCON2bits.TMR0IP = 1; // Timer0 Interrupt is High Priority
 PIE1bits.ADIE = 0; // Disable interrupts from ADC
 // Loops forever...
 // ----------------

 while(1)
 {
 // Waiting loop
 while(flag.refresh==0) // do nothing while refresh = 0
 {
 }
 // ********************
 // Process a new sample
 // ********************
 // Format ADC result (10 bits) as an unsigned int
 sample = (unsigned int)data_H << 8;
 sample = sample + data_L;
 sample = sample >> 6;

 // Transfert sample to the PWM output
 CCPR2L = sample >> 2; // 8 MSB's
 temp = (sample << 4) & 0b00110000; // 2 LSB's
 CCP2CON = (CCP2CON & 0b11001111) | temp;
 // Display Value on LEDS and go to waiting loop
 LATD = data_H;
 flag.refresh = 0;
 }
 return (EXIT_SUCCESS);
}

mais maintenant il y a plusieurs erreurs, déjà la ligne #include "p18f45K20.h" n'est plus reconnue, mais d'autres erreurs comme le fait que le compilateur ne reconnaisse pas le mot clé near ou encore ce message d'erreur pour ma fonction d'interruption: error: expected ';' after top level declarator sont également apparus, sauriez vous la raison de toutes ces erreurs ?

EDIT: je pense que j'ai trouvé la solution, si cela vous arrive, vérifiez que le standard C du compilateur soit C90 et non C99

Mplab ne trouve aucun compilateurs
satinas
Passioné
Passioné
Messages : 301
Enregistré en : novembre 2015

#4 Message par satinas » dim. 26 août 2018 08:14

Bonjour,
l'include et le near sont à enlever et il y a juste à modifier l'interrupt depuis les dernières versions.
void __interrupt(high_priority) high_isr (void)


Retourner vers « Langage C »

Qui est en ligne

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