/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
IN/OUT med ventetid
Fra : --BS--


Dato : 17-05-04 17:02

Hejsa i NG`en...

Jeg er ved at skrive noget software i c++ til et program der skal via en
PC104 bus hente data fra en analog til digital converter. Mit problem er at
fra jeg enabler denne converter via dens adresse 320h, går der 260 nano
sekunder før den er klar med sin data(12 bit).

Jeg skal altså bruge en funktion der henter data ind på en bestem
adresse(320h) men hvor jeg kan indlægge en ventetid - således at programmet
ikke henter mit i at converteren convertere og dermed måske kun får de
første x antal bit rigtigt og resten noget ubrugeligt noget !!

Hvis man gør det med de "normale" IN eller for den sags skyld OUT funktioner
dur det jo ikke....

Hjælp !!



 
 
Bertel Brander (17-05-2004)
Kommentar
Fra : Bertel Brander


Dato : 17-05-04 18:26

--BS-- wrote:
> Hejsa i NG`en...
>
> Jeg er ved at skrive noget software i c++ til et program der skal via en
> PC104 bus hente data fra en analog til digital converter. Mit problem er at
> fra jeg enabler denne converter via dens adresse 320h, går der 260 nano
> sekunder før den er klar med sin data(12 bit).
>
> Jeg skal altså bruge en funktion der henter data ind på en bestem
> adresse(320h) men hvor jeg kan indlægge en ventetid - således at programmet
> ikke henter mit i at converteren convertere og dermed måske kun får de
> første x antal bit rigtigt og resten noget ubrugeligt noget !!
>
> Hvis man gør det med de "normale" IN eller for den sags skyld OUT funktioner
> dur det jo ikke....
>

Jeg går ud fra at du skriver til kortet med en OUT, skal vente 260 nano
sekunder og så læse med en IN, korrekt?

Jeg tror blot du skal lave en lille tælle loop, man kan ikke nå ret
meget på 260 ns. Jeg kender ingen sleep/delay functioner der
giver mening med så korte delays.
Måske har kortet et "ready" bit der fortæller at den er klar til at
blive læst, hvis det har kan du blot lave en polle loop.

/b

--BS-- (17-05-2004)
Kommentar
Fra : --BS--


Dato : 17-05-04 19:31

> Jeg går ud fra at du skriver til kortet med en OUT, skal vente 260 nano
> sekunder og så læse med en IN, korrekt?
>
> Jeg tror blot du skal lave en lille tælle loop, man kan ikke nå ret
> meget på 260 ns. Jeg kender ingen sleep/delay functioner der
> giver mening med så korte delays.
> Måske har kortet et "ready" bit der fortæller at den er klar til at
> blive læst, hvis det har kan du blot lave en polle loop.
>
> /b

Nej jeg skal blot skrie IN - så snart kortet får adressen 320 hex vil A/D
converteren begynde at omsætte sit signal. Det der er problemet er så at
sige at converteren tager 260 ns om dette - og da "IN kommandoen" jo læser
data ind med det samme på den givne adresse vil jeg ikke få hentet alle 12
bit fra converteren rigtigt !



Bertel Brander (17-05-2004)
Kommentar
Fra : Bertel Brander


Dato : 17-05-04 20:05

--BS-- wrote:
>
> Nej jeg skal blot skrie IN - så snart kortet får adressen 320 hex vil A/D
> converteren begynde at omsætte sit signal. Det der er problemet er så at
> sige at converteren tager 260 ns om dette - og da "IN kommandoen" jo læser
> data ind med det samme på den givne adresse vil jeg ikke få hentet alle 12
> bit fra converteren rigtigt !
>

Har processoren ikke handshake på IN operationen? Dvs. at kortet kan
vente med at give ACK på læsning til det er færdig med at konvertere?

/b

--BS-- (18-05-2004)
Kommentar
Fra : --BS--


Dato : 18-05-04 07:50

> Har processoren ikke handshake på IN operationen? Dvs. at kortet kan
> vente med at give ACK på læsning til det er færdig med at konvertere?
>
> /b

Det har den nemlig ikke ! Den er monteret(altså AD conv.) i en såkaldt
direct mode, hvilket vil sige at den bliver enabled så snart at den adresse
dekoder der sidder foran får adressen 320hex.
Og så snart den er enabled begynder den at convertere.......

Der er dog en STATUS udgang på converteren som bliver høj så snart at
converteren er færdig og klar - kunne man måske på en måde forbinde denne
til en bestemt pin på PC104 bussen og drage nytte af denne ??

Mvh



Karl Olsen (17-05-2004)
Kommentar
Fra : Karl Olsen


Dato : 17-05-04 22:26

--BS-- <saftkongen@hotmail.REMOVE.com> wrote:

> Jeg er ved at skrive noget software i c++ til et program der skal via
> en PC104 bus hente data fra en analog til digital converter. Mit
> problem er at fra jeg enabler denne converter via dens adresse 320h,
> går der 260 nano sekunder før den er klar med sin data(12 bit).
>
> Jeg skal altså bruge en funktion der henter data ind på en bestem
> adresse(320h) men hvor jeg kan indlægge en ventetid - således at
> programmet ikke henter mit i at converteren convertere og dermed
> måske kun får de første x antal bit rigtigt og resten noget
> ubrugeligt noget !!
>
> Hvis man gør det med de "normale" IN eller for den sags skyld OUT
> funktioner dur det jo ikke....

260 ns i forbindelse med en PC/104-bus er meget kort tid. En 8-bit I/O
access på en ISA-bus (som timingmæssigt er det samme som PC/104) varer
mindst 689 ns ifølge IEEE P996, og typisk 1500 ns på normale CPU-kort.
Disse tider er uafhængige af selve CPU'ens hastighed. Hvis du lægger én
dummy-portlæsning mellem start af converteren og læsning af resultatet er du
på den sikre side.

260 ns lyder meget hurtigt for noget over en PC/104 bus. Er du sikker på,
at det ikke er mikrosekunder?

Karl Olsen



--BS-- (18-05-2004)
Kommentar
Fra : --BS--


Dato : 18-05-04 07:57

> 260 ns i forbindelse med en PC/104-bus er meget kort tid. En 8-bit I/O
> access på en ISA-bus (som timingmæssigt er det samme som PC/104) varer
> mindst 689 ns ifølge IEEE P996, og typisk 1500 ns på normale CPU-kort.
> Disse tider er uafhængige af selve CPU'ens hastighed. Hvis du lægger én
> dummy-portlæsning mellem start af converteren og læsning af resultatet er
du
> på den sikre side.
>
> 260 ns lyder meget hurtigt for noget over en PC/104 bus. Er du sikker på,
> at det ikke er mikrosekunder?
>
> Karl Olsen
>

Hejsa

Ohhh det var lige det jeg havde brug for at vide - tror jeg Jeg har selv
studeret ISA timing diagrammer men syntes ikke at kunne se mig ud af det. Og
du snakker om 8-bit.... jeg trækker jo /IOCS16 lav og bruger dermed 16 bit
databus, da min AD converter er 12 bit - så mon ikke at det tager endnu
længere tid ?
Har du evt et godt link til det med disse ISA bus tider så jeg selv kan
blive klog på det ?

De 260ns er ikke en tid i sammenhæng med PC104 bussen. Det er KUN den tid
som det tager fra at man har enabled AD converteren til at den har alle 12
bit klar og latcher dem ud !

Håber det hjælper for nu....

På forhånd tak



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste