fotoresistenza freedom II

  • Walter 10
  • Autore della discussione
  • Visitatori
  • Visitatori
11 Anni 10 Mesi fa - 11 Anni 9 Mesi fa #1 da Walter 10
fotoresistenza freedom II è stato creato da Walter 10
Ciao a tutti,

vorrei visualizzare il valore dell'uscita dalla fotoresistenza presente sulla freedom II sull'LCD.
La conversione A/D vorrei gestirla con gli interrupt sul TMR0 e l'nterrupt di fine conversione ADIF.
Il compilatore mi da il seguente errore:

Error [314] C:\Users\ORONERO\Desktop\Programmare PICmicro\Programmi vari\programmazione_picmicro_08\termostato con LM35\delay.c; 12.1 ";" expected
Error [192] C:\Users\ORONERO\Desktop\Programmare PICmicro\Programmi vari\programmazione_picmicro_08\termostato con LM35\delay.c; 22.1 undefined identifier "i"
Error [192] C:\Users\ORONERO\Desktop\Programmare PICmicro\Programmi vari\programmazione_picmicro_08\termostato con LM35\delay.c; 26.11 undefined identifier "cnt"
Warning [361] C:\Users\ORONERO\Desktop\Programmare PICmicro\Programmi vari\programmazione_picmicro_08\termostato con LM35\lcd.c; 163.1 function declared implicit int

non credo dipenda dai fie dellalibreria delay o lcd che funzionano correttamente. Probabilmente ho fatto qualche errore nella compilazione dell'interrupt, vi posto il codice main e setting:

Code:
#define XTAL_FREQ 20MHZ #include <pic.h> __CONFIG (HS & WDTDIS & PWRTEN & BORDIS & LVPDIS & DUNPROT & WRTEN & DEBUGDIS & UNPROTECT); #include "settings.h" #include "delay.c" #include "lcd.c" void main(void) { settings(); LCD_INIT(); DelayMs(100); // piccolo ritardo iniziale LCD_CLEAR(); // ripulisco il display // preparo le scritte sul display LCD_GOTO(1,1); LCD_PUTS("Fotoresistenza"); calcola=0; BL=1; // backlight LCD ON while(1) { if (calcola) { valore=ADRESL + (ADRESH<<8); media+=valore; // sommo il valore contavalori++; if (contavalori==(MEANVALUES-1)) { fotoresistenza=(media/MEANVALUES); media=0; // azzero la media contavalori=0; // azzero il contatore dei valori sommati LCD_GOTO(2,1); LCD_PUTS(" "); LCD_GOTO(2,1); LCD_PUTUN((fotoresistenza*5)/10); LCD_PUTS("."); LCD_PUTUN((fotoresistenza*5)%10); // parte decimale. Varrà sempre 0 o 5 per quanto detto sopra } calcola=0; // resetto il flag } // fine routine di calcolo } //chiudi ciclo while } //fine main void interrupt ISR(void) { if (T0IF) { TMR0=102; count_ph--; if (count_ph==0) { ADGO=1; count_ph=200; } T0IF=0; } if (ADIF) { calcola=1; ADIF=0; } }

E questo è il settings:
Code:
#define BL RC1 // backlight LCD #define MEANVALUES 20 bit calcola; unsigned char count_ph=200; unsigned char contavalori=0; unsigned int valore=0; unsigned int fotoresistenza=0; unsigned int media=0; extern void main(void); extern void interrupt ISR(void); void settings(void) { TRISA=0b00101111; TRISE=0b00000111; TRISB=0b11100000; TRISC=0b00000000; TRISD=0b00000000; OPTION=0b01000100; INTCON=0b10100000; ADIE=1; TMR0=102; ADCON0=0b10000001; ADCON1=0b10001110;


Grazie Ragazzi...
Ultima Modifica 11 Anni 9 Mesi fa da StefA.

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

  • Pinna
  • Moderatore
  • Moderatore
Di più
11 Anni 10 Mesi fa #2 da Pinna
Risposta da Pinna al topic fotoresistenza freedom II
Ciao Walter, credo di poterti aiutare; conosco molto bene quelle routine e ringrazio ancora Giovanni Bernardo perchè anch'io ho utilizzato i suoi esempi per creare il firmware per il mio alimentatore stabilizzato, dove sul display lcd leggo sia la tensione che la corrente utilizzando appunto gli interrupt. Presumo tu uso un 16F876 o 16F877A per cui ti allego molto volentieri la cartella del "mio" firmware, che potrai modificare a piacimento per i tuoi scopi

Marcello

File allegato:

Nome del file: Voltmetro-...etro.rar
Dimensione del file:14 KB

Chi vola vale, chi vale vola, chi non vola è un vile
Allegati:

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

  • StefA
  • Moderatore
  • Moderatore
Di più
11 Anni 10 Mesi fa #3 da StefA
Risposta da StefA al topic fotoresistenza freedom II
gli errori sembrerebbero indicare un ";" mancante...una non dichiarazione di "i" e una non dichiarazione di "cnt".
Prova a clickarci sopra e vedi dove ti da l'errore.

Il file delay.h viene incluso da qualche altra parte?
Che librerie stai usando e che compilatore?

Ste

..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]

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

  • Walter 10
  • Autore della discussione
  • Visitatori
  • Visitatori
11 Anni 9 Mesi fa #4 da Walter 10
Risposta da Walter 10 al topic fotoresistenza freedom II
Grazie ragazzi,

ci proverò. Ma il codice secondo voi è corretto?? c'è qualche errore??

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

  • Walter 10
  • Autore della discussione
  • Visitatori
  • Visitatori
11 Anni 9 Mesi fa #5 da Walter 10
Risposta da Walter 10 al topic fotoresistenza freedom II
Scusate ragazzi una cosa che non c'entra nulla.
Sapete dove trovare la libreria pwm.h per il controllo di questo modulo?

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

Moderatori: Mauro LaurentiStefA

Registrati al sito

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

Registrati al sito LaurTec.

Forum - Ultimi messaggi