Frequenzimetro con pic18

  • paoletto
  • Autore della discussione
  • Elit Utente
  • Elit Utente
Di più
12 Anni 6 Mesi fa #16 da paoletto
Risposta da paoletto al topic Frequenzimetro con pic18
Ho provato a riportare il codice scritto per c18 in xc8, compaiono un sacco di errori strani, ma posso anche aver sbagliato io.

Cosa sbaglio?
Code:
/* * File: main.c * Author: Paolo * * Created on 9 marzo 2014, 18.21 */ #define LCD_DEFAULT #include <xc.h> #include <stdio.h> #include <stdlib.h> #include "delay.c" #include "delay.h" #include "LCD_44780.h" #include "LCD_44780.c" #include <capture.h> #include<timers.h> #include "PIC18F4550_config.h" volatile unsigned int Lettura_Timer1=0; // per la ISR volatile unsigned char stato=1; //per la ISR void interrupt high_isr (void); int main(void) { RCONbits.IPEN=0; //modalità compatibile interruzioni INTCONbits.GIE=1; //abilita interrupt globale INTCONbits.PEIE=1; //abilita interrupt periferiche TRISD=0; initialize_LCD(); clear_LCD(); OpenCapture1( CAPTURE_INT_ON & C1_EVERY_RISE_EDGE ); OpenTimer1( TIMER_INT_OFF & T1_16BIT_RW & T1_SOURCE_INT & T1_PS_1_1 & T1_OSC1EN_OFF & T1_SYNC_EXT_OFF & T1_SOURCE_CCP ); while(1){ write_string_LCD("Frequenza"); goto_line_LCD(2); write_integer_LCD(Lettura_Timer1,5); //dovrei leggere il numero di conteggi di Timer1 home_LCD(); } } void interrupt high_isr (void) { if(PIR1bits.CCP1IF==1){ //ho avuto un evento su ccp1? PIR1bits.CCP1IF==0; //resetta il flag per permettere nuove interruzioni if(stato==1){ // se ho avuto il primo fronte di salita WriteTimer1(0); //scrivi zero nel Timer0 e comincia a contare stato=0;} //poichè si è già verificato il primo fronte di salita //poni a zero lo stato in modo che possa intercettare //il secondo fronte di salita else {//nel frattempo Timer1 conta e tiene memoria dei cicli macchina. Lettura_Timer1=ReadCapture1(); //stato è ancora pari a zero e quando si verifica un nuovo evento su ccp1 //viene eseguito il codice in else ovvero legge il valore attuale di Timer1 stato=1; //ripone lo stato ad 1 in modo che possa ricatturare un nuovo primo fronte di salita } } //Fine ISR } CLEAN SUCCESSFUL (total time: 50ms) make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf make[1]: Entering directory `C:/Users/Paolo/Desktop/MPLABX/Progetti_Paolo_PIC/Frequenzimetro/Frequenzimetro.X' make -f nbproject/Makefile-default.mk dist/default/production/Frequenzimetro.X.production.hex make[2]: Entering directory `C:/Users/Paolo/Desktop/MPLABX/Progetti_Paolo_PIC/Frequenzimetro/Frequenzimetro.X' "C:\Program Files (x86)\Microchip\xc8\v1.30\bin\xc8.exe" --pass1 --chip=18F4550 -Q -G --double=32 --float=32 --emi=wordwrite --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 -I"C:/Program Files (x86)/Microchip/xc8/v1.30/include/plib" -I"C:/Users/Paolo/Desktop/MPLABX/Progetti_Paolo_PIC/librerie" --strict --warn=0 --cci --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%%f:%%l: error: (%%n) %%s" "--warnformat=%%f:%%l: warning: (%%n) %%s" "--msgformat=%%f:%%l: advisory: (%%n) %%s" -obuild/default/production/main.p1 main.c :: warning: (913) "--strict" option may cause compiler errors in some standard header files (908) exit status = 1 make[2]: *** [build/default/production/main.p1] Error 1 make[1]: *** [.build-conf] Error 2 make: *** [.build-impl] Error 2 main.c:24: error: (288) only functions may be void main.c:24: error: (372) "," expected main.c:53: warning: (359) illegal conversion between pointer types pointer to const unsigned char -> pointer to unsigned char main.c:64: error: (288) only functions may be void main.c:64: error: (372) "," expected main.c:65: error: (314) ";" expected main.c:71: error: (285) no identifier in declaration main.c:71: warning: (374) missing basic type; int assumed main.c:71: error: (314) ";" expected main.c:75: warning: (374) missing basic type; int assumed main.c:75: error: (984) type redeclared main.c:75: error: (1098) conflicting declarations for variable "stato" (main.c:22) make[2]: Leaving directory `C:/Users/Paolo/Desktop/MPLABX/Progetti_Paolo_PIC/Frequenzimetro/Frequenzimetro.X' make[1]: Leaving directory `C:/Users/Paolo/Desktop/MPLABX/Progetti_Paolo_PIC/Frequenzimetro/Frequenzimetro.X' BUILD FAILED (exit value 2, total time: 903ms)

Saluti
Paoletto.

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Moderatore
  • Moderatore
Di più
12 Anni 6 Mesi fa #17 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Frequenzimetro con pic18
hai abilitato l´opzione CCI nelle proprietà del progetto?

Saluti,

Mauro

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • Skyrunner65
  • Premium Utente
  • Premium Utente
Di più
12 Anni 6 Mesi fa #18 da Skyrunner65
Risposta da Skyrunner65 al topic Frequenzimetro con pic18
Salve, forse questa nota Microchip vi può essere di aiuto!

ww1.microchip.com/downloads/en/DeviceDoc/41214a.pdf

Saluti, Mauro.

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • paoletto
  • Autore della discussione
  • Elit Utente
  • Elit Utente
Di più
12 Anni 6 Mesi fa #19 da paoletto
Risposta da paoletto al topic Frequenzimetro con pic18
Salve a tutti ;)

@ Mauro: certo l'ho abilitata, ma non c'è verso! Mi sfugge qualcosa e sto impazzendo.

@ Skyrunner65: Grazie mille, la conosco questa guida ma devo leggerla con più attenzione.

L'algoritmo mi sembra corretto, ma non funziona nulla. Però leggevo che questo modulo ha qualcosa che non va, in particolare i timer ad esso dedicati. C'è scritto nella silicon errata da qualche parte.

Saluti
Paoletto

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Moderatore
  • Moderatore
Di più
12 Anni 6 Mesi fa #20 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Frequenzimetro con pic18
prova a fare questo:

togli il prototipo di funzione e metti la dichiarazione dell'interrupt direttamente sopra il main.

Saluti,

Mauro

P.S.
Il documento tips and triks e' interessante.
Una volta mi era capitata sotto gli occhi ma non l'ho ancora letta.
...credo che prima o poi dovrò farlo...

Si prega Accesso o Crea un account a partecipare alla conversazione.

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.