- Messaggi: 186
- Ringraziamenti ricevuti 3
Frequenzimetro con pic18
- paoletto
-
Autore della discussione
- Elit Utente
-
Less
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?
Saluti
Paoletto.
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.
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
Saluti,
Mauro
Si prega Accesso o Crea un account a partecipare alla conversazione.
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.
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
-
Less
Di più
- Messaggi: 186
- Ringraziamenti ricevuti 3
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
@ 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.
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...
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.
