Re: [buildcheapeeg] comADC-EEG

From: Rob Sacks (editor_at_realization.org)
Date: 2001-08-08 14:21:05


Hi Joerg,

Okay, thanks. I think I understand now.
I can't think of any way to make this work
under Windows. Too bad there's no way
to generate interrupts when the signal
starts and stops. I think a Windows device
driver might be able to respond to
interrupts fast enough to get decent resolution.
But like you say, Windows wouldn't be
happy if we tried to poll continuously
with interrupts disabled for up to
1 ms 256 times a second.

Regards,

Rob

----- Original Message -----
From: "Joerg Hansmann" <info_at_jhansmann.de>
To: <buildcheapeeg_at_yahoogroups.com>
Sent: Wednesday, August 08, 2001 9:03 AM
Subject: Re: [buildcheapeeg] comADC-EEG

> Hi Rob ,
>
> ----- Original Message -----
> From: Rob Sacks <editor_at_realization.org>
> To: <buildcheapeeg_at_yahoogroups.com>
> Sent: Wednesday, August 08, 2001 6:21 AM
> Subject: Re: [buildcheapeeg] comADC-EEG
>
>
> > Hi Joerg,
> >
> > Congratulations!
> >
> > For hardware ignoramuses like myself,
> > could you explain the advantages over
> > the previous RS232 machine?
>
> 1)It is cheaper.
>
> 2)The digital part only consists of
> 2 x 555 timer and an optocoupler and some
> discrete parts.
>
> 3)No AD-Converter and no uC is required.
>
> 4)It has less power consumption (only a few mA).
>
> 5)it can be expanded up to 4 channels (making a
> total of 5 timers (I think there is a 855 chip that
> contains 4 x 555 timers) and 4 optocouplers)
>
>
> ...And here the good part ends.
>
> Now the disadvantages:
> ---------------------------------
> It is connected to the com-port (RS232) but does not
> use RxD TxD . Instead each 1/256 second data is
> transmitted over one of the handshake lines as a
> high-signal that lasts from 10usec to 1000usec .
>
> The pulse-lenght contains the sampled analog value
> and must be decoded in a high-speed polling loop.
>
> So different CPU and port-IO-speeds result
> in different resolution. On my PC
> I get slightly above 8 bit. Some PCs get 9 bit
> and more.
>
> To evaluate the resolution I have written a little
> DOS utilty. (if someone wants to check the possible
> resolution of his PC I can mail it)
>
>
> > Why do you say this isn't Windows friendly?
>
> Timing is very critical and shortly before the loop
> (for synchronisation)
> and during the loop (for counting)
> all tasks and interrupts _must_ be stopped.
> That is why I use a 32bit DOS-Program.
>
> (see below the receiver routine in C++)
>
>
> Regards,
>
> Joerg
>
>
> ---------------------------------------------------------------------------------------
> #define MAX_COUNT 1000
>
> int com_adc(int &_sync)
> {
> int count,sync;
> register unsigned in_adr;
>
> count=0;
> sync=0;
> in_adr=MODEM_STATUS_REGISTER;
>
> // enter_critical();
> disable();
>
> // do _not_ use return in this section !!!!
> // Always goto end_proc instead !!
> // Else the irq s will be disabled forever
> // and you can HARD-RESET your PC
>
> while (! (inp (in_adr) & 0x10)){
> sync++; // --- sync on L->H transition on CTS
> if(sync > (MAX_COUNT*3) ){
> count=-2; // no comADC Hardware on port
> goto end_proc;
> }
> }
>
> if(sync){ // --- sync ok
> // --- count ADC value to decode pulsewidth from 10us to 1ms
> while (inp (in_adr) & 0x10){
> count++;
> if(count > MAX_COUNT){
> count=-2; // no comADC Hardware on port
> goto end_proc;
> }
> }
> }else{ // --- no sync
> count=-1; // error-code: out of sync
> }
>
> end_proc:
> enable();
> // exit_critical();
> _sync=sync;
> return count;
> }
>
>
>
>
>
> To unsubscribe from this group, send an email to:
> buildcheapeeg-unsubscribe_at_egroups.com
>
>
>
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
>
>



This archive was generated by hypermail 2.1.4 : 2002-07-27 12:28:31 BST