Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    162

    syntax error before '>' token

    Ciao non riesco a capire come mai mi da

    main.c: In function '_ADCInterrupt':
    main.c:40: error: syntax error before '>' token

    e la riga 40 è evidenziata in rosso

    codice:
    void _ISR _ADCInterrupt() 
    { //Sintassi della routine di interrupt dell’ADC
    int dc, errorIi;
    _RD0=1; //Flag per la misura dei tempi di esecuzione. Può essere omesso.
    /***************************************************
    REGOLATORE DI CORRENTE: metodo dei trapezi
    ***************************************************/
    correnteIp=((CORRENTEP-OFFSET_I))<<3; //riporto la corrente a 12bit
    errorI=(riferimentoIp-correnteIp); //calcolo l’errore
    //INTEGRALE:
    errorIi=errorI_1+errorI; //errore x l’integrale=errore attuale + errore precedente
    
    if((errorIi>=0)) integraleIp+=INTEGRALEI((errorIi));
    
    else integraleIp-=INTEGRALEI((-errorIi));
    //PROPORZIONALE:
    vd_out=PROPORZIONALEI((errorI))+(int)(integraleIp >> 12);
    if (vd_out > VDUP) vd_out=VDUP;
    else {
    if(vd_out < VDDW) vd_out=VDDW;
    }
    /***************************************************
    USCITA riportata sul DC
    ***************************************************/
    vd_out+=V_OFFSET; //porto il valore da 0 a 8191 (->13bit)
    dc=GET_DC(vd_out);
    if(dc>DCUP) dc=DCUP; //Controllo precauzionale sul DC
    else if(dc<DCDW) dc=DCDW;
    PDC2=dc;
    PDC1=DUTYCYM-dc;
    /***********************************************
    TRATTAMENTO FINALE DELLE VARIABILI
    ***********************************************/
    if(integraleIp>TKIUPI) integraleIp=TKIUPI;
    else if(integraleIp<TKIDWI) integraleIp=TKIDWI;
    errorI_1=errorI;
    _ADIF=0;
    _RD0=0;
    _RD0=0; //Flag per la misura dei tempi di esecuzione. Può essere omesso.
    }
    grazie
    Cencia

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    A che servono le doppie parentesi?

    if(errorIi>=0) integraleIp+=INTEGRALEI(errorIi);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    162
    ho tolto le parentesi ma l'output non cambia....


  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma di quale compilatore si tratta?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    162
    C30 della Microchip....

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Ma ci sono due variabili "errorI" ed "errorIi" ? La prima dove è dichiarata?
    Inoltre, com'è definita INTEGRALEI (supponendo che si tratti di una macro) ?
    every day above ground is a good one

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    C30 della Microchip....
    Lo avevo pensato ... ho scritto questo codice di test

    codice:
    #include <p30F6014.h>
    
    void _ISR _ADCInterrupt()
    {
    	int errorIi, x=0;
    	
    	errorIi=1;
    	
    	if(errorIi>=0) x++;
    	else x--;
    }
    
    int main()
    {
    	while(1);
    
        return 0;
    }
    e l'ho compilato correttamente.

    Se non ci sono problemi nella versione del compilatore (bug conosciuti), un'altra spiegazione potrebbe essere che hai il sorgente "sporco" con caratteri che non vedi. Puoi provare ad eliminare la riga della if e a riscriverla (senza copia-incolla ma riscrivendo il codice).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    162
    Caspita, avevo definito male le Macro INTEGRALEI.....

    grazie per le dritte

    Condividere da sempre i suoi frutti

    Ciaooooooooooo



Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.