www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Nepravilen prikaz AD vrednosti, C v CCS kompilerju

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Peter123
Član
Član



Pridružen-a: Tor 13 Jan 2009 15:34
Prispevkov: 1441
Aktiv.: 7.21
Kraj: Lj.

PrispevekObjavljeno: Sre Feb 22, 2012 2:28 pm    Naslov sporočila:  Nepravilen prikaz AD vrednosti, C v CCS kompilerju Odgovori s citatom

Naletel sem na težavo ki mi je ni uspelo rešiti (do zdaj).
Ko izpisujem vrednosti iz AD na LCD imajo meritve med A0 in A3 neko korelacijo, prav tako meritve med A1 in A2. Sami vhodi v PIC so OK oziroma kot pričakovani vrednost, ki jih izpisuje pa niso.

Če nastavim da imam samo setup_adc_ports(AN0) zadeva deluje OK. Čim vklopim še kakšen drug AD mi pa vrednost AD3 vpliva na vrednost AD0.

Sumim da se mi prekrivajo biti, ampak ne najdem kje. Lahko pa da je še kakšna napaka???

Še program v Cju skompilan v CCSu 4.088:
Koda:

#include <16F877A.h>
#fuses HS,NOWDT,NOPUT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP,NOCPD,NOWRT
#use delay(clock=4194304)

#include <LCD420.c>

//#define CCP_PWM

#define Tipka1 PIN_D6
#define Tipka2 PIN_D5
#define Tipka3 PIN_D4
#define Tipka4 PIN_D7
#define OsvLCD PIN_B3
#define PWM PIN_C2

void main()
{
   //SET_TRIS_A( 0xFF );   //Vhodi
   SET_TRIS_C( 0x00 );   //Izhodi
   SET_TRIS_D( 0xFF );   //Vhodi
   //SET_TRIS_B( 0x00 );

   //LCD zadeve
   lcd_init();
   lcd_putc("\fAvt. zalivalnik V0.0\n");
   delay_ms(1000);

   lcd_putc("\fSenzor vlage 1:\n");
   lcd_putc("Senzor vlage 2:\n");
   lcd_putc("Senzor vlage 3:\n");
   lcd_putc("Senzor vlage 4:\n");

   //AD zadeve
   SETUP_ADC_PORTS(AN0);//ALL_ANALOG);
   SETUP_ADC(ADC_CLOCK_DIV_64);

   while (TRUE)
      {
      unsigned int8 Upornost1, Upornost2, Upornost3, Upornost4;
      output_high(OsvLCD);

      delay_ms( 500 );
      output_low(OsvLCD);
      delay_ms( 500 );

//Vklopimo PWM da lahko merimo signale na AD.
      output_high(PWM);
      Delay_ms(25);   //zakasnitev, da se stabilizira merilna napetost

      set_adc_channel(0);
      Upornost1 = read_adc(ADC_START_AND_READ);
      lcd_gotoxy(17,1);
      printf(lcd_putc,"%03u",Upornost1);

      set_adc_channel(1);
      Upornost2 = read_adc(ADC_START_AND_READ);
      lcd_gotoxy(17,2);
      printf(lcd_putc,"%03u",Upornost2);

      set_adc_channel(2);
      Upornost3 = read_adc(ADC_START_AND_READ);
      lcd_gotoxy(17,3);
      printf(lcd_putc,"%03u",Upornost3);

      set_adc_channel(3);
      Upornost4 = read_adc(ADC_START_AND_READ);
      lcd_gotoxy(17,4);
      printf(lcd_putc,"%03u",Upornost4);
      output_LOW(PWM);

      if( !input(Tipka1) )
         {
            lcd_putc("1");
         }
      if( !input(Tipka2) )
         {
            lcd_putc("2");
         }
      if( !input(Tipka3) )
         {
            lcd_putc("3");
         }
      if( !input(Tipka4) )
         {
            lcd_putc("4");
         }


         }
}
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 18.42

PrispevekObjavljeno: Sre Feb 22, 2012 4:29 pm    Naslov sporočila:   Odgovori s citatom

Po spremembi kanala moraš malo počakat, da se napetost stabilizira. Poglej v datasheet, kaj in kako.
_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Peter123
Član
Član



Pridružen-a: Tor 13 Jan 2009 15:34
Prispevkov: 1441
Aktiv.: 7.21
Kraj: Lj.

PrispevekObjavljeno: Čet Feb 23, 2012 8:38 am    Naslov sporočila:   Odgovori s citatom

Super hvala, točno to je bilo: ACQUISITION TIME
popravljena koda:
set_adc_channel(0);
delay_us( 21 ); //ACQUISITION TIME, Tacq=19,72us
Upornost1 = read_adc(ADC_START_AND_READ);
lcd_gotoxy(17,1);
printf(lcd_putc,"%03u",Upornost1);

set_adc_channel(1);
delay_us( 21 ); //ACQUISITION TIME, Tacq=19,72us
Upornost2 = read_adc(ADC_START_AND_READ);
lcd_gotoxy(17,2);
printf(lcd_putc,"%03u",Upornost2);

set_adc_channel(2);
delay_us( 21 ); //ACQUISITION TIME, Tacq=19,72us
Upornost3 = read_adc(ADC_START_AND_READ);
lcd_gotoxy(17,3);
printf(lcd_putc,"%03u",Upornost3);

set_adc_channel(3);
delay_us( 21 ); //ACQUISITION TIME, Tacq=19,72us
Upornost4 = read_adc(ADC_START_AND_READ);
lcd_gotoxy(17,4);
printf(lcd_putc,"%03u",Upornost4);
output_LOW(PWM);
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 492 dni


Powered by phpBB © 2001, 2005 phpBB Group