/ 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
Hvad er den direkte I/O adresse til real-t~
Fra : Jack L.


Dato : 11-04-04 17:40

Hej gruppe,
jeg vil gerne lave firkantede pulser vha. 8254-timeren i pc'en, som hvis jeg
ikke tager fejl, er drevet med en krystal på 8 eller 10 MHz. Jeg er kommet i
tvivl om hvilken adresse jeg skal sende mit kontrolord og
nedtællingsvariablen.

I Windows 98 SEs Kontrolpanel kan jeg se at "System CMOS/real time-clock"
har fået adresserne 0070-0073, men hvilke af disse adresser sender jeg mit
kontrolord?

Jeg vil næsten gætte på 0073 til at sende kontrolordet, men jeg ved ikke
hvorledes jeg kan teste om jeg får de pulser rigtigt, da jeg ikke
output-adressen. Ellers kunne man sende outputtet fra timeren ud til
parallelporten og bruge et oscilloskop til måling.

Jeg skriver inline assembler i Visual Studio 6.0 i Windows 98 SE.

--
Mvh / Best regards,
Jack, Copenhagen

The email address is for real. :)




 
 
Bertel Brander (11-04-2004)
Kommentar
Fra : Bertel Brander


Dato : 11-04-04 19:29

Jack L. wrote:
> Hej gruppe,
> jeg vil gerne lave firkantede pulser vha. 8254-timeren i pc'en, som hvis jeg
> ikke tager fejl, er drevet med en krystal på 8 eller 10 MHz. Jeg er kommet i
> tvivl om hvilken adresse jeg skal sende mit kontrolord og
> nedtællingsvariablen.
>
> I Windows 98 SEs Kontrolpanel kan jeg se at "System CMOS/real time-clock"
> har fået adresserne 0070-0073, men hvilke af disse adresser sender jeg mit
> kontrolord?
>
> Jeg vil næsten gætte på 0073 til at sende kontrolordet, men jeg ved ikke
> hvorledes jeg kan teste om jeg får de pulser rigtigt, da jeg ikke
> output-adressen. Ellers kunne man sende outputtet fra timeren ud til
> parallelporten og bruge et oscilloskop til måling.
>
> Jeg skriver inline assembler i Visual Studio 6.0 i Windows 98 SE.

Jeg har denne stump C-kode der sætter clock frekvensen for
timer 8252, måske kan du bruge den.

#define TIMER_CONTROL_REGISTER 0x43
#define TIMER_LATCH_REGISTER 0x40

void SetClockFreq(int freq)
{
int Val = (int )(1193180L/freq);
outportb(TIMER_CONTROL_REGISTER, 0x36); /* initialize timer to 16
bit, mode 3, 2*8 bit latch */

outportb(TIMER_LATCH_REGISTER, Val); /* low byte */
outportb(TIMER_LATCH_REGISTER, Val >> 8); /* high byte */
}

Vær dog opmærksom på at du sansynligvis vil få et jitter på
1-2 ms når du kører under Windows, uanset hvilken timer du
bruger.

/b

Jack L. (11-04-2004)
Kommentar
Fra : Jack L.


Dato : 11-04-04 19:46

Bertel Brander wrote:
> Jeg har denne stump C-kode der sætter clock frekvensen for
> timer 8252, måske kan du bruge den.
>
Hej Bertel,
tak for dit kode-eksempel. Jeg er dog mere interesseret i den adresse hvor
man kan sende kontrolordet til PC-timeren.

> Vær dog opmærksom på at du sansynligvis vil få et jitter på
> 1-2 ms når du kører under Windows, uanset hvilken timer du
> bruger.
>

Hm, hvad betyder 'jitter' i denne sammenhæng? Men uanset hvad, så lyder det
ikke godt, for jeg skal formentlig sætte en clockfrekvens på 256 kHz som
skal bruges til til at drive en ekstern enhed på parallelporten.

--
Mvh / Best regards,
Jack, Copenhagen

The email address is for real. :)




Jack L. (11-04-2004)
Kommentar
Fra : Jack L.


Dato : 11-04-04 19:47

> Hm, hvad betyder 'jitter' i denne sammenhæng? Men uanset hvad, så
> lyder det ikke godt, for jeg skal formentlig sætte en clockfrekvens
> på 256 kHz som skal bruges til til at drive en ekstern enhed på
> parallelporten.

Måske vil det være bedre at udvikle i Linux eller MS-DOS i denne sammenhæng?

--
Mvh / Best regards,
Jack, Copenhagen

The email address is for real. :)




Bertel Brander (11-04-2004)
Kommentar
Fra : Bertel Brander


Dato : 11-04-04 20:04

Jack L. wrote:
>>Hm, hvad betyder 'jitter' i denne sammenhæng? Men uanset hvad, så
>>lyder det ikke godt, for jeg skal formentlig sætte en clockfrekvens
>>på 256 kHz som skal bruges til til at drive en ekstern enhed på
>>parallelporten.
>
>
> Måske vil det være bedre at udvikle i Linux eller MS-DOS i denne sammenhæng?

DOS ja måske.

Linux med noget real time extension (f.ex. RTLinux) ja.

/b

Bertel Brander (11-04-2004)
Kommentar
Fra : Bertel Brander


Dato : 11-04-04 19:56

Jack L. wrote:

> Bertel Brander wrote:
>
>>Jeg har denne stump C-kode der sætter clock frekvensen for
>>timer 8252, måske kan du bruge den.
>>
>
> Hej Bertel,
> tak for dit kode-eksempel. Jeg er dog mere interesseret i den adresse hvor
> man kan sende kontrolordet til PC-timeren.

Addressen på timer 8252   er 0x40 og 0x43.

>
>
>>Vær dog opmærksom på at du sansynligvis vil få et jitter på
>>1-2 ms når du kører under Windows, uanset hvilken timer du
>>bruger.
>>
>
>
> Hm, hvad betyder 'jitter' i denne sammenhæng? Men uanset hvad, så lyder det
> ikke godt, for jeg skal formentlig sætte en clockfrekvens på 256 kHz som
> skal bruges til til at drive en ekstern enhed på parallelporten.
>

Jitter betyder at der kan være et delay inden interruptet bliver
serviceret på 0 - 2 ms. Jeg tror ikke at det er muligt at
lave noget der ligner en nogenlunde regelmæssig puls på 256 kHz
under Windows, måske 256 Hz...

/b

Jack L. (11-04-2004)
Kommentar
Fra : Jack L.


Dato : 11-04-04 20:12

Bertel Brander wrote:
>
> Addressen på timer 8252 er 0x40 og 0x43.
>

Og på 8254eren? Ifølge Kontrolpanelet er 0x70 til 0x73 sat til den.

>>
> Jitter betyder at der kan være et delay inden interruptet bliver
> serviceret på 0 - 2 ms. Jeg tror ikke at det er muligt at
> lave noget der ligner en nogenlunde regelmæssig puls på 256 kHz
> under Windows, måske 256 Hz...
>

Ja, i betragtning af at Windows skal betjene mange andre tjenester, så har
du nok ret. :)

--
Mvh / Best regards,
Jack, Copenhagen

The email address is for real. :)




Bertel Brander (11-04-2004)
Kommentar
Fra : Bertel Brander


Dato : 11-04-04 22:27

Jack L. wrote:
>
> Og på 8254eren? Ifølge Kontrolpanelet er 0x70 til 0x73 sat til den.
Jeg ved ikke hvordan man programmerer 8254'eren, men hvorfor ikke
bruge 8252?

>
> Ja, i betragtning af at Windows skal betjene mange andre tjenester, så har
> du nok ret. :)

Man kunne måske bruge en lille PIC processor og sende kommandoer til
denne via com-porten?

/b

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

Månedens bedste
Årets bedste
Sidste års bedste