Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

MIKROC :Conversione AD non ottimale

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: MIKROC :Conversione AD non ottimale

Messaggioda Foto Utenteivanpascolo » 10 nov 2014, 21:18

Riesci a postare il codice completo?
Avatar utente
Foto Utenteivanpascolo
20 3
New entry
New entry
 
Messaggi: 71
Iscritto il: 29 set 2014, 20:44

0
voti

[12] Re: MIKROC :Conversione AD non ottimale

Messaggioda Foto Utentekf00115 » 10 nov 2014, 21:25

Certo

3 potenziometri collegato in RA0,RA1,RA3; Altri PIN porta A sono input digitali
Codice: Seleziona tutto
// Lcd module connections
sbit LCD_RS at PORTB.B2;
sbit LCD_EN at PORTB.B3;
sbit LCD_D4 at PORTB.B4;
sbit LCD_D5 at PORTB.B5;
sbit LCD_D6 at PORTB.B6;
sbit LCD_D7 at PORTB.B7;

sbit LCD_RS_Direction at TRISB2_bit;
sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
// End Lcd module connections

unsigned long potSX;
unsigned long potDX;
unsigned long potCN;

unsigned long conta;

char testo1[7];
char testo2[7];
char testo3[7];

void main() {

 
  CCP1CON = 0b00000000;
  CCP2CON = 0b00000000;
 
//ADCON1=0b10000100;
  ADCON1=132;
  TRISA = 255;

  ADC_Init();
  delay_ms(500);

  while (1) {

    potSX = ADC_Read(0);               // get ADC value from 0 channel
    // potSX = ADC_Get_Sample(0);       // get ADC value from 0 channel
    delay_ms(10);

    potCN = ADC_Read(1);               // get ADC value from 0 channel
    // potCN = ADC_Get_Sample(1);       // get ADC value from 1 channel
    delay_ms(10);

    potDX = ADC_Read(3);                // get ADC value from 0 channel
    // potDX  = ADC_Get_Sample(3);       // get ADC value from 2 channel
    delay_ms(10);

    IntToStr(potSX ,testo1);
    IntToStr(potCN ,testo2);
    IntToStr(potDX  ,testo3);

    conta=conta+1;

    if (conta>=50)
      {
        Lcd_Init();                                         // Initialize Lcd
        Lcd_Cmd(_LCD_CLEAR);                    // Clear display              7
        Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off
        Lcd_Out(1,1,"X");
        Lcd_Out_Cp("=");
        Lcd_Out_Cp(rtrim(ltrim(testo1)));
        Lcd_Out_Cp("-");
        Lcd_Out_Cp(rtrim(ltrim(testo2)));
        Lcd_Out_Cp("-");
        Lcd_Out_Cp(rtrim(ltrim(testo3)));
        Delay_ms(200);
        conta=0;
      }

  }
}
Ultima modifica di Foto UtenteWALTERmwp il 10 nov 2014, 22:23, modificato 1 volta in totale.
Motivazione: Aggiunto i delimitatori per dare leggibilità al Post
Avatar utente
Foto Utentekf00115
50 4
New entry
New entry
 
Messaggi: 64
Iscritto il: 17 feb 2007, 18:16
Località: perugia

0
voti

[13] Re: MIKROC :Conversione AD non ottimale

Messaggioda Foto UtenteStefDrums » 10 nov 2014, 22:08

kf00115 ha scritto:Non so se MikroC prepara l'ambiente ADC da solo o devo pensarcio io , nel dubbio
ho provato anche ad aggiungere per disabilitare i comparatori

CCP1CON = 0b00000000;
CCP2CON = 0b00000000;

ma stesso problema

poi ho visto su internet un esempio che a differenza degli altri usava anche

ADC_Init();

ho provato ma niente, problema rimane.

A proposito per quanto riguarda l'hardware sto usando una scheda da me sviluppata per un controllo di un termo camino a pellet (sonda T caldaia, sonda T boiler, sonda T esterna), quindi che gira in (non so quanti camini) dal 2007.

Il problema è solo software.


Ciao, anche io avevo iniziato un progetto con il MikroC, ma proprio come ha detto Foto Utenteivanpascolo, il MikroC (con le sue librerie) pretende di fare tutto e non lascia molte possibilità all'ottimizzazione del codice e allo sfruttamento completo delle periferiche nel PIC.
Le librerie del MikroC sono blindate, inaccessibili, e presto di capiterà di dover implementare delle cose non previste dalle librerie, e l'unica soluzione sarà quella di scriverne delle tue.
il MikroC (per me) si è proprio arenato a questo punto, con 3/4 del codice del progetto ultimato, ho migrato tutto in MPLAB con il compilatore della Hi-Tech C, ed ho fatto tutto.

Ti consiglierei di provare il tuo circuito con un SW che sai che sicuramente funziona, così da escludere qualsiasi baco HW, magari anche poche routines. Vedrai che poi comicnierai ad aggiungerci tutto il resto!

Ciao!
Avatar utente
Foto UtenteStefDrums
240 1 6 9
Stabilizzato
Stabilizzato
 
Messaggi: 367
Iscritto il: 20 feb 2013, 14:15

0
voti

[14] Re: MIKROC :Conversione AD non ottimale

Messaggioda Foto Utenteivanpascolo » 10 nov 2014, 22:14

Ho fatto alcune prove con la mia scheda EasyPIC5 e con un 16F874A.
Ho dovuto solo rimappare i pin del display e tutto ha funzionato al primo colpo.
Ho solo due trimmer (collegati a RA0 ed RA1), mentre RA3 l'ho collegato ad un pulsante (quindi leggeva "0" oppure 1023).
Per me funziona tutto.
Avatar utente
Foto Utenteivanpascolo
20 3
New entry
New entry
 
Messaggi: 71
Iscritto il: 29 set 2014, 20:44

0
voti

[15] Re: MIKROC :Conversione AD non ottimale

Messaggioda Foto Utenteivanpascolo » 10 nov 2014, 22:18

Ho provato anche con i trimmer su RA1 ed RA3, mentre ho collegato un pulsante su RA0.
Funziona tutto
Avatar utente
Foto Utenteivanpascolo
20 3
New entry
New entry
 
Messaggi: 71
Iscritto il: 29 set 2014, 20:44

0
voti

[16] Re: MIKROC :Conversione AD non ottimale

Messaggioda Foto UtenteWALTERmwp » 10 nov 2014, 22:34

kf00115 ha scritto:Grazie delle informazioni , ora mi aggiorno
... prego, figurati; però ti suggerisco ancora di dare una lettura al documento che ti ho prima indicato.
Ti ho riordinato il Post [12], niente di che ma lo puoi fare anche tu.

Un altro suggerimento: quando devi inserire un nuovo Post utilizza il "tasto" "Rispondi", e non il "tasto" "Cita" presente all'interno degli altri Post(s).
Se poi vuoi riportare nel tuo nuovo Post una parte di quanto scritto in un altro, puoi semplicemente selezionare (evidenziandolo) le parole di tuo interesse e, solo dopo, selezionare "tasto" "Cita".
E' tutto mirato ad ottimizzare un minimo i contenuti e rendere più leggibili i contributi.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8986
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[17] Re: MIKROC :Conversione AD non ottimale

Messaggioda Foto Utentekf00115 » 12 nov 2014, 9:54

Purtroppo il problema permane. Ho anche provato a montare su bread board un circuito al volo senza usare la scheda del camino. Ricordo che la scheda camino è stata sviluppata circa 7 anni fa e ancora sono funzionanti in diverse installazioni (camino mio compreso) E li leggo tre analogiche che risultano perfettamente indipendenti.

Durante le mie prove attuali un potenziometro lo vario a 0 a fondo scala, l'altro lo metto a un valore intermedio
------------------ Situazione 1 ----------------------------
RA0 al potA
RA1 al potB
Ra3 ad un filo che posso mettere a 0 o a 5V
PotA influenza potB e non viceversa
------------------ Situazione 2 ----------------------------
RA0 al potA
Ra1 ad un filo che posso mettere a 0 o a 5V
RA3 al potB
PotB influenza potAB e non viceversa
------------------ Situazione 3 ----------------------------
Ra0 ad un filo che posso mettere a 0 o a 5V
RA1 al potA
RA3 al potB
PotA influenza potB e non viceversa

Sulla scheda camino ho tre ingressi collegati tramite inseguitore di tensione (LM358) mentre sulla bread bord ho fatto un collegamento diretto potenziometro PIC
Lo strano comportamento si equivale

:?:

c'è sempre una spiegazione
Avatar utente
Foto Utentekf00115
50 4
New entry
New entry
 
Messaggi: 64
Iscritto il: 17 feb 2007, 18:16
Località: perugia

1
voti

[18] Re: MIKROC :Conversione AD non ottimale

Messaggioda Foto Utentekf00115 » 12 nov 2014, 12:41

funziona tutto e molto bene anche
Dove stava l'arcano mistero ?

La scheda camino che uso è il mio muletto dove taglio cucio saldo fili al volo per fare esperimenti. Almeno parto da un hardware testato, collaudato, che ha bordo led, pulsanti e un display LDC quindi metto meno variabili in gioco.
Però guardando bene, a forza di manipolare etc,, si è rotto fisicamente il piedino del condensatore in uscita al 7805 da 330 uF. E' bastato sistemarlo e il sistema funziona.

E la bread board? Ho messo al volo un condensatore da 100uF 63V (piccola capacità e elevata tensione ma avevo questo al volo) Ma la bread board ha due file di contatti verticali sul bordo esterno proprio per l'alimentazione Ma queste piste , in mezzo sono interrotte e vanno fatti due ponticelli. Forse perché puoi inserire diverse alimentazioni? Più di due. Non lo so. le altre che ho a disposizione non sono così.Da poco ne ho comprate un po nuove che presentato tutte questa particolarità Quindi stesso problema. la capacità da 100uF infilata in due buchi più in basso era scollegata da tutto, Faceva solo bella figura.
Possibile stessa tipologia di problemi ? Quando ci si mette il caso. Ringrazio comunque chi mi ha prestato attenzione dedicandomi del tempo. A ricambiare.
Avatar utente
Foto Utentekf00115
50 4
New entry
New entry
 
Messaggi: 64
Iscritto il: 17 feb 2007, 18:16
Località: perugia

Precedente

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti