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


Pridružen-a: Čet 31 Jul 2003 13:45 Prispevkov: 2008 Aktiv.: 8.46 Kraj: Krško
|
Objavljeno: Pet Okt 07, 2011 11:34 am Naslov sporočila: problem LPC2148 in ADC |
|
|
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 |
|
 |
S53DZ Član



Pridružen-a: Čet 28 Apr 2011 9:27 Prispevkov: 951 Aktiv.: 5.51 Kraj: Ljubljana
|
Objavljeno: Pet Okt 07, 2011 2:32 pm Naslov sporočila: |
|
|
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 |
|
 |
damo Član


Pridružen-a: Čet 31 Jul 2003 13:45 Prispevkov: 2008 Aktiv.: 8.46 Kraj: Krško
|
Objavljeno: Pon Okt 10, 2011 9:06 am Naslov sporočila: |
|
|
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 |
|
 |
. Neznanec

Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Pon Okt 10, 2011 9:14 am Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika.
Nazadnje urejal/a . Pon Okt 10, 2011 9:33 am; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
 |
jvolk Član



Pridružen-a: Ned 05 Mar 2006 1:14 Prispevkov: 737 Aktiv.: 3.13 Kraj: okolica Divače
|
Objavljeno: Pon Okt 10, 2011 9:25 am Naslov sporočila: |
|
|
Pa še en oklepaj je na začetku preveč. |
|
Nazaj na vrh |
|
 |
damo Član


Pridružen-a: Čet 31 Jul 2003 13:45 Prispevkov: 2008 Aktiv.: 8.46 Kraj: Krško
|
Objavljeno: Pon Okt 10, 2011 9:56 am Naslov sporočila: |
|
|
Ja, po pomoti sem izbrisal zaklepaj, zato je oklepaj preveč.
Uh,
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 |
|
 |
|
|
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
|