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 

_adconvert() - spreminjanje pina

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



Pridružen-a: Ned 12 Nov 2006 23:49
Prispevkov: 13
Aktiv.: 0.06
Kraj: Ljubljana

PrispevekObjavljeno: Pon Nov 13, 2006 12:11 am    Naslov sporočila:  _adconvert() - spreminjanje pina Odgovori s citatom

AD merjenje naj bi potekalo na ARMu na štirih pinih. Za to merjenje sem do sedaj uporabljal pin 0.27 in sicer tako, da sem pridobil z funkcijo _adconvert() število od 1-1023 kar je bilo linearno z izmerjeno napetostjo. Sedaj pa sem dobil še en senzor in me zanima, kako bi lahko uporabljal oba senzorja hkrati (torej kakšen košček kode ali pa vsaj pojasnilo kako in kaj je s spremembo pina). Pa če morda kdo ve kako točno poteka funkcija int _adconvert (void), saj namreč v knjižnici piše zgolj nek AD_READ...

Hvala za pomoč že v naprej

_________________
Nobody is perfect - I am.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Član
Član



Pridružen-a: Pon 23 Avg 2004 16:16
Prispevkov: 16777190
Aktiv.: 70801.38

PrispevekObjavljeno: Pon Nov 13, 2006 1:40 am    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Letme
Član
Član



Pridružen-a: Ned 12 Nov 2006 23:49
Prispevkov: 13
Aktiv.: 0.06
Kraj: Ljubljana

PrispevekObjavljeno: Pon Nov 13, 2006 6:34 pm    Naslov sporočila:   Odgovori s citatom

Da, šlo je za ŠARM in težavo sva z asistentom rešila s pomočjo user manuala. Sedaj mi ostane samo še programiranje Very Happy

V kolikor bodo pa še kakšne težave pa se bom javil.

_________________
Nobody is perfect - I am.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Roadracer
Član
Član



Pridružen-a: Ned 16 Okt 2005 18:41
Prispevkov: 482
Aktiv.: 2.03
Kraj: LJ/Litija

PrispevekObjavljeno: Pon Nov 13, 2006 6:37 pm    Naslov sporočila:   Odgovori s citatom

Lahko pa nam zaupaš kako si rešil težavo. Wink
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Letme
Član
Član



Pridružen-a: Ned 12 Nov 2006 23:49
Prispevkov: 13
Aktiv.: 0.06
Kraj: Ljubljana

PrispevekObjavljeno: Pon Nov 13, 2006 6:53 pm    Naslov sporočila:   Odgovori s citatom

Takoj ko bo zares rešena.

Drugače pa če bi bilo potebno branje samo iz AD0 in AD1 pina se v knjižnici io.h samo duplicira funkcije (in seveda preimenuje) in namesto AD0 doda AD1 (oba sta bitno definirana malce pred obema defineoma funkcij). Nato se v io.c spremeni še definicja funkcij in se doda int _adconvert1(void), ki bere nanovo ustvarjene AD funkcije (duplicirane z AD1...). Jaz pa hočem imeti malce več kot 2 senzorja in bom zato uporabil 4 senzorje. Uporabljal bom pine od 0.27-0.30 s pomočjo registra AD0CR (ki ima naslov 0xE0034000)pri katerem se zadnjih osem bitov spreminja po pinih in sicer z 0x01,0x02,0x04,0x08. Ko pa bom tole vse spravil v kodo pa jo lahko tudi prilepim. Pisana pa bo v winIDEA jezik C (oziroma C++).

Upam da sem na pravi poti Wink

_________________
Nobody is perfect - I am.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Letme
Član
Član



Pridružen-a: Ned 12 Nov 2006 23:49
Prispevkov: 13
Aktiv.: 0.06
Kraj: Ljubljana

PrispevekObjavljeno: Čet Dec 14, 2006 5:17 pm    Naslov sporočila:   Odgovori s citatom

Koda:
// AD0.0  pin 0.27
#define PINSEL1 (*((unsigned int *)0xe002c004))   
#define ADC_PINSELMASK0  0xc00000
#define ADC_PINSELVAL0   0x400000


// AD0.1 pin 0.28
#define ADC_PINSELMASK1 0x3000000
#define ADC_PINSELVAL1  0x1000000


// AD0.2 pin 0.29
#define ADC_PINSELMASK2 0xc000000
#define ADC_PINSELVAL2  0x4000000


#define AD0 0xe0034000
#define AD1 0xe0060000


#define ADC_CR(base) (*((unsigned int *)(base)))
#define ADC_DR(base) (*((unsigned int *)(base+0x4)))
#define ADC_GSR (*((unsigned int *)(0xe0034008)))

// Divide VPB clock by 4 to get the ADC clock, burst=0
#define ADC_INIT0 { \
   PINSEL1 = (PINSEL1 & ~ADC_PINSELMASK) | ADC_PINSELVAL; \
   ADC_CR(AD0) = 0x1 | (0x4 << 8) | (0x1 << 21); \
   }

#define ADC_CONVERT0 { \
   unsigned int tmp; \
   ADC_CR(AD0) = 0x1 | (0x4 << 8) | (0x1 << 21) | (0x1 << 24); \
   do { \
     tmp = ADC_DR(AD0); \
   } while ((tmp & (0x1 << 31)) == 0); \
   }

#define ADC_READ0 ((ADC_DR(AD0) & 0xffc0) >> 6)


//AD1
#define ADC_INIT1 { \
   PINSEL1 = (PINSEL1 & ~ADC_PINSELMASK1) | ADC_PINSELVAL1; \
   ADC_CR(AD0) = 0x1 | (0x4 << 8) | (0x1 << 21); \
   }

#define ADC_CONVERT1 { \
   unsigned int tmp; \
   ADC_CR(AD0) = 0x1 | (0x4 << 8) | (0x1 << 21) | (0x1 << 24); \
   do { \
     tmp = ADC_DR(AD0); \
   } while ((tmp & (0x1 << 31)) == 0); \
   }

#define ADC_READ1 ((ADC_DR(AD0) & 0xffc0) >> 6)

//AD0.2
#define ADC_INIT2 { \
   PINSEL1 = (PINSEL1 | ~ADC_PINSELMASK2) & ADC_PINSELVAL2; \
   ADC_CR(AD0) = 0x1 | (0x4 << 8) | (0x1 << 21); \
   }

#define ADC_CONVERT2 { \
   unsigned int tmp; \
   ADC_CR(AD0) = 0x1 | (0x4 << 8) | (0x1 << 21) | (0x1 << 24); \
   do { \
     tmp = ADC_DR(AD0); \
   } while ((tmp & (0x1 << 31)) == 0); \
   }

#define ADC_READ2 ((ADC_DR(AD0) & 0xffc0) >> 6)


Tkole zadeva zgleda v knjižici io.h .
V io.c dodamo ad_convert1(); ad_convert2() in tudi ADC_Init1() ADC_Init2().

lp
Crt

_________________
Nobody is perfect - I am.
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 -> 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: 495 dni


Powered by phpBB © 2001, 2005 phpBB Group