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 

lpc2148 - adc
Pojdi na stran 1, 2  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
trot
Član
Član



Pridružen-a: Čet 18 Jan 2007 20:25
Prispevkov: 1282
Aktiv.: 5.70
Kraj: glej fogl

PrispevekObjavljeno: Sre Nov 05, 2008 9:37 pm    Naslov sporočila:  lpc2148 - adc Odgovori s citatom

Lomim se z adc pretvorbo na lpc2148. Stestiral sem adc primerček, ki sem ga našel poleg instalacije winarm (WinARM\examples\lpc213x_lpc214x_examples\ADC), in zadeva ne deluje. Vse kar dobi/izmerim je 0, če je pin v zraku ali na zemlji, ali 1023, če je pin na na napajanju ali delilniku napetosti, ne glede na to kakšen delilnik izberem, vedno dobim maksimalen izhod. Enako je če zamenjam kanal. Ima kdo mogoče kak delujoč primer (hex) ki na rs232 vrže meritev, ki bi ga lahko stestiral da vidim, če je hardver ok?
_________________
lp, Klemen
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
SimonS
Član
Član



Pridružen-a: Čet 01 Jul 2004 11:18
Prispevkov: 4770
Aktiv.: 20.08
Kraj: Kobarid

PrispevekObjavljeno: Sre Nov 05, 2008 10:25 pm    Naslov sporočila:   Odgovori s citatom

Jaz imam za keila, če ti kaj pomaga
Koda:
unsigned int meri (void)
{
   unsigned val=0;
   AD0CR |= 0x01000000;                  /* Start A/D Conversion           */
   do
   {
        val = AD0DR;                   // Read A/D Data Register
   } while ((val & 0x80000000) == 0);  //Wait for the conversion to complete
   val = (val >> 6) & 0x03FF;
    AD0CR &= ~0x01000000;                 /* Stop A/D Conversion            */
   return val;
}

Seveda ga je treba prej inicializirati
Koda:
AD0CR   = 0x00200400;                         // ADC1: 10-bit AIN3 @ 3MHz      P0.27

ter seveda nastaviti GPIO !

Drugače pa preveri HW, če imaš vse napetosti in mase od ADC...

_________________
Lep dan
Simon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
trot
Član
Član



Pridružen-a: Čet 18 Jan 2007 20:25
Prispevkov: 1282
Aktiv.: 5.70
Kraj: glej fogl

PrispevekObjavljeno: Sre Nov 05, 2008 11:03 pm    Naslov sporočila:   Odgovori s citatom

SimonS je napisal/a:
Drugače pa preveri HW, če imaš vse napetosti in mase od ADC...

Misliš s tem če imam priključena pina Vssa in Vdda priključena na zemljo in napajanje?

_________________
lp, Klemen
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
SimonS
Član
Član



Pridružen-a: Čet 01 Jul 2004 11:18
Prispevkov: 4770
Aktiv.: 20.08
Kraj: Kobarid

PrispevekObjavljeno: Čet Nov 06, 2008 4:56 pm    Naslov sporočila:   Odgovori s citatom

Da
_________________
Lep dan
Simon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
trot
Član
Član



Pridružen-a: Čet 18 Jan 2007 20:25
Prispevkov: 1282
Aktiv.: 5.70
Kraj: glej fogl

PrispevekObjavljeno: Čet Nov 06, 2008 6:40 pm    Naslov sporočila:   Odgovori s citatom

Napajanje in zemljo imam priključeno.

Zdej sem preizkusil tole kodo (tvoja malo spremenjena, ker lpc2148 nima P0.27)
Koda:

unsigned int meri (void)
{
   unsigned val=0;
   AD0CR |= 0x01000000;                  /* Start A/D Conversion           */
   do
   {
        val = AD0GDR;                   // Read A/D Data Register   (spremenil na AD0GDR)
   } while ((val & 0x80000000) == 0);  //Wait for the conversion to complete
   val = (val >> 6) & 0x03FF;
    AD0CR &= ~0x01000000;                 /* Stop A/D Conversion            */
   return val;
}


 PINSEL0=PINSEL0|(1<<24);            // P0.28 -> AD0.1

    AD0CR=(1<<1)|                      // select channel 1 on ADC0 (P0.28)
   ((60000000/1000000-1)<<8)|           // CLKDIV = Fpclk / 1000000 - 1
   (1<<21);                          // The A/D converter is operational
   

while (1)
   {
   curtime = timer_counter;
   while(timer_counter-curtime<100) {}
   rprintf("10-bit:% 4lu \n", meri());
   }

Zadeva ne deluje. Vedno dobim 1023.

_________________
lp, Klemen
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
commander29
Član
Član



Pridružen-a: Pon 20 Nov 2006 15:24
Prispevkov: 47
Aktiv.: 0.21

PrispevekObjavljeno: Čet Nov 06, 2008 8:49 pm    Naslov sporočila:   Odgovori s citatom

trot je napisal/a:
Napajanje in zemljo imam priključeno.

Zdej sem preizkusil tole kodo (tvoja malo spremenjena, ker lpc2148 nima P0.27)
Koda:

unsigned int meri (void)
{
   unsigned val=0;
   AD0CR |= 0x01000000;                  /* Start A/D Conversion           */
   do
   {
        val = AD0GDR;                   // Read A/D Data Register   (spremenil na AD0GDR)
   } while ((val & 0x80000000) == 0);  //Wait for the conversion to complete
   val = (val >> 6) & 0x03FF;
    AD0CR &= ~0x01000000;                 /* Stop A/D Conversion            */
   return val;
}


 PINSEL0=PINSEL0|(1<<24);            // P0.28 -> AD0.1

    AD0CR=(1<<1)|                      // select channel 1 on ADC0 (P0.28)
   ((60000000/1000000-1)<<8)|           // CLKDIV = Fpclk / 1000000 - 1
   (1<<21);                          // The A/D converter is operational
   

while (1)
   {
   curtime = timer_counter;
   while(timer_counter-curtime<100) {}
   rprintf("10-bit:% 4lu \n", meri());
   }

Zadeva ne deluje. Vedno dobim 1023.


Koda:
 PINSEL0=PINSEL0|(1<<24);            // P0.28 -> AD0.1


Tole pa verjetno ne bo ravno pravilno. AD0.1, se nahaja na P0.28 zato je nastavitev funkcije tega pina PINSEL1 (25:24).


Koda:
PINSEL1 &= ~0x03000000;
PINSEL1 |= 0x01000000;
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
trot
Član
Član



Pridružen-a: Čet 18 Jan 2007 20:25
Prispevkov: 1282
Aktiv.: 5.70
Kraj: glej fogl

PrispevekObjavljeno: Čet Nov 06, 2008 9:25 pm    Naslov sporočila:   Odgovori s citatom

Imaš prav, sem zamenjal vrstico z
Koda:
PINSEL1=PINSEL1|(1<<24); PINSEL1=PINSEL1&~(1<<25);            // P0.28 -> AD0.1

vendar pa je rezultat še vedno isti ne glede na to katero napetost dam na pin. Vedno 1023.

Zgleda da je nekaj narobe s hardverom. Imam narejeno ploščico, kot je ta lpc2138 v sedmem prispevku. Enako sem naredil tudi lpc 2148. V obeh primerih pa mi adc pretvornik ne dela. Nimam pojma kaj bi bilo narobe.

A ima kdo hex fajl (mi ga prosim naredi), ki meritev na tem pinu (p0.28-) izpiše na rs232, in preverjeno deluje, tako da bi lahko eliminiral možnost softverske napake. Druge ideje nimam.

_________________
lp, Klemen
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
alessio
Član
Član



Pridružen-a: Pon 04 Dec 2006 8:39
Prispevkov: 363
Aktiv.: 1.60
Kraj: Ljubljana

PrispevekObjavljeno: Pet Nov 07, 2008 8:52 am    Naslov sporočila:   Odgovori s citatom

Če prej ne rešiš, ti pošljem željen .hex filet in source med vikendom.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
trot
Član
Član



Pridružen-a: Čet 18 Jan 2007 20:25
Prispevkov: 1282
Aktiv.: 5.70
Kraj: glej fogl

PrispevekObjavljeno: Pet Nov 07, 2008 11:38 am    Naslov sporočila:   Odgovori s citatom

Hvala, mi lahko prosim narediš tako da izpisuje meritev na uart0 pri hitrosti 9600.

Na vezju imam en kondenzator od kvarca priključen na Vssa. Je možno da bi to kaj motilo?

_________________
lp, Klemen
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
alessio
Član
Član



Pridružen-a: Pon 04 Dec 2006 8:39
Prispevkov: 363
Aktiv.: 1.60
Kraj: Ljubljana

PrispevekObjavljeno: Sob Nov 08, 2008 9:06 pm    Naslov sporočila:   Odgovori s citatom

Vzel sem tvoj začetni primer in spremenil na baud rate 9600.
V priponki imaš .hex filet in source. Uporabljen je 12 MHz kristal.
Program preverjeno deluje.

~ Aleš



lpc2148_ADC.rar
 Opis:

Download
 Ime datoteke:  lpc2148_ADC.rar
 Velikost datoteke:  71.3 KB
 Downloadano:  12 krat

Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
trot
Član
Član



Pridružen-a: Čet 18 Jan 2007 20:25
Prispevkov: 1282
Aktiv.: 5.70
Kraj: glej fogl

PrispevekObjavljeno: Ned Nov 09, 2008 1:53 pm    Naslov sporočila:   Odgovori s citatom

Hvala, sem sprobal zadevo, vendar je rezultat še vedno isti. Jest nimam več ideje kaj bi lahko bilo narobe. Najbrž v čipu samem ne more biti napaka?

Tile je moj pcb. Osvetlen kontakt je napajanje, vsi ostali (okrogli) pa so spodaj povezani na zemljo. Ostali kontakti v liniji pa so samo povezave do pinov. Mogoče kdo vidi če sem kaj narobe naredil na tiskanem vezju. Jaz ne najdem napake.



pcb.JPG
 Opis:
 Velikost datoteke:  174.36 KB
 Pogledana:  29 krat

pcb.JPG



_________________
lp, Klemen
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
alessio
Član
Član



Pridružen-a: Pon 04 Dec 2006 8:39
Prispevkov: 363
Aktiv.: 1.60
Kraj: Ljubljana

PrispevekObjavljeno: Ned Nov 09, 2008 2:38 pm    Naslov sporočila:   Odgovori s citatom

Če pripneš shematiko, bo bolj razvidno.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
trot
Član
Član



Pridružen-a: Čet 18 Jan 2007 20:25
Prispevkov: 1282
Aktiv.: 5.70
Kraj: glej fogl

PrispevekObjavljeno: Ned Nov 09, 2008 6:03 pm    Naslov sporočila:   Odgovori s citatom

Sheme sploh nisem risal za tole. Saj so itak priključeni samo zemlja, napajanje in kvarc. Vse ostalo je pa zvezno na pine, ki so v zraku.
_________________
lp, Klemen
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2752
Aktiv.: 11.59
Kraj: Trzic

PrispevekObjavljeno: Ned Nov 09, 2008 6:45 pm    Naslov sporočila:   Odgovori s citatom

Pa si prepričan, da CPU sploh dela tako kot mora? Kaj si naredil z MCLR pinom? Na P0.14 imaš pull-up?
_________________
Lp,
Matevž


Nazadnje urejal/a NeoTO Ned Nov 09, 2008 6:58 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Glitch
Član
Član



Pridružen-a: Pet 07 Apr 2006 11:40
Prispevkov: 1477
Aktiv.: 6.30

PrispevekObjavljeno: Ned Nov 09, 2008 6:51 pm    Naslov sporočila:   Odgovori s citatom

Kam si vezal Vref?
_________________
Answers: $1, Short: $5, Correct: $25, dumb looks are still free.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2  Naslednja
Stran 1 od 2

 
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: 7 dni


Powered by phpBB © 2001, 2005 phpBB Group