You can't have multiple entry points for an interrupt vector. Since HPLUARTM.nc in TinyOS already handles the UART_RECV vector, you can't also handle it. It is a flaw in the hardware abstraction of the current AVR source tree, something we fixed for the MSP430/Telos, and something that should be fixed for the AVR in TinyOS 2.x
see tos/platform/avrmote/HPLUARTM.nc If that is compiled into your application (most likely is), then you're trying to handle the same vector twice. -Joe -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Olaf Landsiedel Sent: Monday, December 13, 2004 9:46 AM To: [EMAIL PROTECTED]; [EMAIL PROTECTED] Subject: [Tinyos-help] problem with USART Receive interrupt Hello, I have been playing with the UART on the Mica2 mote and somehow I was not able to receive data, e.g. to send data from the PC to the mote. So I decided to look at the interrupt vector table of Surge, and it seems to me, that the interrupt vector 19 (USART 0 Rx complete) points to "bad vector" and thus is not handled correctly. The same seems to be true for TinyDB and TestUartSimple. Here the interrupt vector for the Surge application (taken from a .od file, I used avr-objdump -zhD to convert it). I am using TinyOS 1.1.9 and nesc 1.1.2 with cygwin. 00000000 <__vectors>: 0: 0c 94 b5 01 jmp 0x36a 4: 0c 94 d2 01 jmp 0x3a4 8: 0c 94 d2 01 jmp 0x3a4 c: 0c 94 d2 01 jmp 0x3a4 10: 0c 94 d2 01 jmp 0x3a4 14: 0c 94 d2 01 jmp 0x3a4 18: 0c 94 d2 01 jmp 0x3a4 1c: 0c 94 d2 01 jmp 0x3a4 20: 0c 94 d2 01 jmp 0x3a4 24: 0c 94 d2 01 jmp 0x3a4 28: 0c 94 d2 01 jmp 0x3a4 2c: 0c 94 d2 01 jmp 0x3a4 30: 0c 94 d2 01 jmp 0x3a4 34: 0c 94 d2 01 jmp 0x3a4 38: 0c 94 d2 01 jmp 0x3a4 3c: 0c 94 3d 0c jmp 0x187a ---- vector 15 -> Timer 1 OVF 40: 0c 94 d2 01 jmp 0x3a4 44: 0c 94 f9 02 jmp 0x5f2 ---- vector 17 -> Timer 0 OVF 48: 0c 94 22 03 jmp 0x644 ---- vector 18 -> SPI 4c: 0c 94 d2 01 jmp 0x3a4 ---- vector 19 -> USART 0, RX -- however, it points to the "bad interrupt" area, just like unused ints --- 50: 0c 94 4c 03 jmp 0x698 ---- vector 20 -> USART 0, UDRE 54: 0c 94 c9 0d jmp 0x1b92 ---- vector 21 -> USART 0, Tx 58: 0c 94 d2 01 jmp 0x3a4 5c: 0c 94 d2 01 jmp 0x3a4 60: 0c 94 d2 01 jmp 0x3a4 64: 0c 94 d2 01 jmp 0x3a4 68: 0c 94 d2 01 jmp 0x3a4 6c: 0c 94 d2 01 jmp 0x3a4 70: 0c 94 d2 01 jmp 0x3a4 74: 0c 94 d2 01 jmp 0x3a4 78: 0c 94 d2 01 jmp 0x3a4 7c: 0c 94 d2 01 jmp 0x3a4 80: 0c 94 d2 01 jmp 0x3a4 84: 0c 94 d2 01 jmp 0x3a4 88: 0c 94 d2 01 jmp 0x3a4 .... 000003a4 <__bad_interrupt>: 3a4: 0c 94 00 00 jmp 0x0 So can anybody (maybe someone from the developers at UCB) tell me, whether this is the way it is supposed to be or not. If everything is alright, than please tell me, what about the assumptions I did is wrong or how TinyOS signals incoming USART data. Thank you very much, Olaf _______________________________________________ Tinyos-help mailing list [EMAIL PROTECTED] http://mail.Millennium.Berkeley.EDU/mailman/listinfo/tinyos-help _______________________________________________ Tinyos-users mailing list [EMAIL PROTECTED] http://mail.Millennium.Berkeley.EDU/mailman/listinfo/tinyos-users
