excellent.
btw, the answer to your question about what layer in the tinyos
hpl/hil/hal abstraction hierarchy to wire in the interrupt is that there
are several ways to do it. (did i really wire to HplMsp430InterruptC in
the bluetooth gear? interesting. just one more level of indirection...)
have fun,
steve
On 03/16/2012 01:42 PM, Niall Twomey wrote:
That's it, Steve. I was actually on the same track as yourself when I got
your email. Was trying to figure out what the names of the pins were.
Works perfectly now. Thanks a lot again!
-----Original Message-----
From: steve ayer [mailto:[email protected]]
Sent: 16 March 2012 17:28
To: Niall Twomey
Cc: [email protected]
Subject: Re: [Shimmer-users] Interrupt on internal extension board
hmm,
that looks right. did you make the pin input and gpio?
TOSH_SEL_PROG_IN_IOFUNC();
TOSH_MAKE_PROG_IN_INPUT();
they're set to output (already gpio) by default, so if you didn't change
that, then this will fix it.
getting closer...
-steve
On 03/16/2012 01:17 PM, Niall Twomey wrote:
Thanks for the email, Steve.
I think the interruptTest.edge(TRUE); makes it trigger on a positive
edge...
when I call that in the init() function I think it should enable the
trigger... shouldn't it?
I have now changed the interruptTest.fired() function to:
async event void interruptTest.fired() {
if ( call interruptTest.getValue() == TRUE ){
call interruptTest.edge( FALSE );
call Leds.led0On();
call Leds.led1On();
} else {
call interruptTest.edge( TRUE );
call Leds.led0Off();
call Leds.led1Off();
}
atomic call interruptTest.clear();
}
Which should switch the edges after the event I think... I'm testing this
with a function generator giving me a square wave. The grounds of the
SHIMMER and generator are connected, and I'm driving it to 3V. Is this
correct?
One thing I'm uncertain about is when I look at the interrupt directory
(tinyos-main/tos/chips/msp430/pins/*) there aer a number of
interrupt-related files:
HplMsp430Interrupt.nc
HplMsp430InterruptC.nc
HplMsp430InterruptP.nc
HplMsp430InterruptNMIC.nc
HplMsp430InterruptNMIP.nc
Msp430InterruptC.nc
I'm wired up to HplMsp430InterruptC 'cause that's what the Bluetooth
implementation used, but I'm not certain that I'm doing the correct thing
here. Does that seem right?
Thanks again,
Niall
-----Original Message-----
From: steve ayer [mailto:[email protected]]
Sent: 16 March 2012 15:55
To: Niall Twomey
Cc: [email protected]
Subject: Re: [Shimmer-users] Interrupt on internal extension board
hi niall,
did you tell the interrupt what edge to expect? for example, if the pin
is high when you enable the interrupt, and you tell it to expect a
rising edge (that's the on-reset default, iirc), then nothing will
happen...
oh, one more thing: of course, you'll then have to switch edges after
you get an event.
i hope that this helps,
steve
On 03/16/2012 11:48 AM, Niall Twomey wrote:
Hi all,
I am interested in having an interrupt from a pin on the internal
extension header (the one the ECG/Gyro boards etc slot into). Looking at
the hardware guide
<http://www.btnode.ethz.ch/pub/uploads/Projects/SHIMMER_HWGuide_REV1P3.pdf>,
it seems that BSL_TX/RX and Serial CTS/RTS can be used as internal
interrupt lines. Which is great! I did some searching around the tos
file structure, and it looks like the Roving Networks Bluetooth
implementation has some good pointers about how I might achieve this, so
I used the ConnectionInterrupt implementation as a starting template and
modified the AccelECG project accordingly.
I decided to use the BSL_RX pin as the external interrupt pin as it was
out of the way, I suppose. It's pin #10 on the header, and pin#22
(port2.2) on the MSP430. It was an arbitrary choice to be honest, but I
don't think it should matter much.
My test application should toggle the LEDs when an interrupt has been
detected. The code compiles and builds fine. But the interrupt isn't
working yet. I was wondering if someone here could verify that I'm going
about this the right way. Am I missing some configurations?
Thanks.
Niall
....
In AccelECGAppC.nc I added the following to the implementation:
components HplMsp430InterruptC;
AccelECGC.interruptTest -> HplMsp430InterruptC.Port22;
In AccelECGC.nc I added the following three snippets:
uses {
// ... as stock
interface HplMsp430Interrupt as interruptTest;
}
void init() {
// ... as stock
call interruptTest.edge( TRUE );
call interruptTest.clear();
call interruptTest.enable();
}
async event void interruptTest.fired() {
ledsOn ^= 1;
if ( !ledsOn ) {
call Leds.led0On();
call Leds.led1On();
} else {
call Leds.led0Off();
call Leds.led1Off();
}
atomic call interruptTest.clear();
}
_______________________________________________
Shimmer-users mailing list
[email protected]
https://lists.eecs.harvard.edu/mailman/listinfo/shimmer-users
-----
No virus found in this message.
Checked by AVG - www.avg.com
Version: 2012.0.1913 / Virus Database: 2114/4873 - Release Date: 03/15/12
_______________________________________________
Shimmer-users mailing list
[email protected]
https://lists.eecs.harvard.edu/mailman/listinfo/shimmer-users
-----
No virus found in this message.
Checked by AVG - www.avg.com
Version: 2012.0.1913 / Virus Database: 2114/4873 - Release Date: 03/15/12
_______________________________________________
Shimmer-users mailing list
[email protected]
https://lists.eecs.harvard.edu/mailman/listinfo/shimmer-users