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 

problem LPC2148 in ADC

 
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
damo
Član
Član



Pridružen-a: Čet 31 Jul 2003 13:45
Prispevkov: 2008
Aktiv.: 8.46
Kraj: Krško

PrispevekObjavljeno: Pet Okt 07, 2011 11:34 am    Naslov sporočila:  problem LPC2148 in ADC Odgovori s citatom

Ojla,


poskušam oživeti AD pretvornik na LPC2148, vendar mi nekako ne gre. Uporabiti hočem AD1.7. Program se ustavi pri branju ADC-ja, ko čaka konec pretvorbe.

Koda:

void ADC_Init(void)
{
  PINSEL1 &= ~(1U<13); PINSEL1 |= (1U<<12); // P0.22 function is AD1.7 (bit13=0, bit12=1)

  PCONP |= (1U<<20);      // Enable power for ADC1 - set bit PCAD1 (20) in PCONP register

 
  // exit power down mode, select A1.7, set clock divider to 3

  AD1CR |= ((1U<<21) || (1U<<7) || (1U<<8) || (1U<<9));
}




// Read the current value of ADC1.7
unsigned int ADC_Read (void)
{
  int dummy;

  AD1CR &= (0xFFFFFF00);               // Deselects all channels and

  AD1CR &= ~((1U<<24)||(1U<<25)||(1U<<26));   // stops all conversions
 
   
  dummy = AD1DR7;
 
  AD1CR |= (1U<<7);                     // Select channel 7
   
  AD1CR |= (1U<<24);                     // Manually start conversions             

   
  while (!(AD1DR7 && (1U<<31)));    // Wait for the conversion to complete

 return ((AD1DR7 >>5) && 0x00003FF);      // return 10 bits
 
}



Gledal sem datasheet in druge primere na internetu, pa mi nikakor ne gre skupaj.

Nastavitve pll so po defaultu 5 (mul) in 2 (div), osc. je 12MHz.


Prosim za pomoč ali pa za delček delujoče kode.


lp

_________________
Dobrga štromarja samo slab šnops strese!
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
S53DZ
Član
Član



Pridružen-a: Čet 28 Apr 2011 9:27
Prispevkov: 951
Aktiv.: 5.51
Kraj: Ljubljana

PrispevekObjavljeno: Pet Okt 07, 2011 2:32 pm    Naslov sporočila:   Odgovori s citatom

Imam napisano kodo v asemblerju in deluje ok.

Sicer pa tile osnovni napotki:
1. postavitev PLL za ARMa, da dobiš željeno clock frekvenco ARMA in PCLK za periferijo
2. postavitev pinov za ADC
3. inicializacija in eno dummy branje ADCja
4. uporaba ADCja
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
damo
Član
Član



Pridružen-a: Čet 31 Jul 2003 13:45
Prispevkov: 2008
Aktiv.: 8.46
Kraj: Krško

PrispevekObjavljeno: Pon Okt 10, 2011 9:06 am    Naslov sporočila:   Odgovori s citatom

Nadaljujem raziskovanje problema in sem (v uVision simulatorju) opazil, da ukaz:

AD1CR |= ((1U<<21) || (1U<<7) || (1U<<8) || (1U<<9);

nima efekta, saj nič ne vpiše v AD1CR.


Nadomestil sem z :

AD1CR |= (1U<<21);
AD1CR |= (1U<<7);
AD1CR |= (1U<<8);
AD1CR |= (1U<<9);


in to deluje (dejansko vpiše v register).

Mi lahko kdo pojasni zakaj ne dela zgornji ukaz?

_________________
Dobrga štromarja samo slab šnops strese!
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Neznanec
Neznanec



Pridružen-a: Pet 01 Okt 2004 1:17
Prispevkov: 1
Aktiv.: 0.00

PrispevekObjavljeno: Pon Okt 10, 2011 9:14 am    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.

Nazadnje urejal/a . Pon Okt 10, 2011 9:33 am; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jvolk
Član
Član



Pridružen-a: Ned 05 Mar 2006 1:14
Prispevkov: 737
Aktiv.: 3.13
Kraj: okolica Divače

PrispevekObjavljeno: Pon Okt 10, 2011 9:25 am    Naslov sporočila:   Odgovori s citatom

Pa še en oklepaj je na začetku preveč.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
damo
Član
Član



Pridružen-a: Čet 31 Jul 2003 13:45
Prispevkov: 2008
Aktiv.: 8.46
Kraj: Krško

PrispevekObjavljeno: Pon Okt 10, 2011 9:56 am    Naslov sporočila:   Odgovori s citatom

Ja, po pomoti sem izbrisal zaklepaj, zato je oklepaj preveč.


Uh, Brick wall Brick wall Brick wall Brick wall


Sem vedel da je neka malenkost. Tele bitne/logične operatorje včasih malo pozabim in zamešam.

P.S. Sem "nedeljski" programer.


Aja, hvala za (hitro) pomoč!

_________________
Dobrga štromarja samo slab šnops strese!
Nazaj na vrh
Skrit 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 -> ARM arhitektura Č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: 6 dni


Powered by phpBB © 2001, 2005 phpBB Group