 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Peter123 Član


Pridružen-a: Tor 13 Jan 2009 15:34 Prispevkov: 1441 Aktiv.: 7.21 Kraj: Lj.
|
Objavljeno: Sre Feb 22, 2012 2:28 pm Naslov sporočila: Nepravilen prikaz AD vrednosti, C v CCS kompilerju |
|
|
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 |
|
 |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 18.42
|
Objavljeno: Sre Feb 22, 2012 4:29 pm Naslov sporočila: |
|
|
Po spremembi kanala moraš malo počakat, da se napetost stabilizira. Poglej v datasheet, kaj in kako. _________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
 |
Peter123 Član


Pridružen-a: Tor 13 Jan 2009 15:34 Prispevkov: 1441 Aktiv.: 7.21 Kraj: Lj.
|
Objavljeno: Čet Feb 23, 2012 8:38 am Naslov sporočila: |
|
|
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 |
|
 |
|
|
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: 491 dni
Powered by phpBB © 2001, 2005 phpBB Group
|