I use sample code on http://cdn.sparkfun.com/datasheets/Dev/Arduino/Shields/mamba_arduino.zip
/******************************************************************************************
** LinkSprite Technologies, Inc
* Arduino Powerline Communication Shield Sample Code
* Jingfeng Liu
* jingfeng.liu@linksprite.com
* 8/19/2011
******************************************************************************************/
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include "spi.h"
#include "ports.h"
#include "plm1.h"
#define MOSI B,3
#define MISO B,4
#define SCK B,5
static volatile bool uart_tx_flag = false; /* Flag for Tx UART interrupt. */
static volatile bool uart_rx_flag = false; /* Flag for Rx UART interrupt. */
static uint8_t uart_rx_data; /* Rx UART data read. */
uint8_t rx_packet[PLM_RX_MAX_PACKET_SIZE];
uint8_t rx_length = 0;
uint8_t tx_packet[PLM_TX_MAX_PACKET_SIZE];
uint8_t tx_length = 0;
uint8_t incomingByte = 0; // for incoming serial data
void setup()
{
PIN_OUTPUT(MOSI);
PIN_OUTPUT(SCK);
PIN_OUTPUT(nPLM_RESET);
PIN_OUTPUT(PLM_CS);
PIN_INPUT(MISO);
/* SPI communication must be initialized before plm1 library. */
spi_init( SPI_SPEED_F16 );
/* Initialization of plm1 library. */
plm1_init();
/* Activate external interrupt 0 for PLM-1 */
EIFR = 0xFF; /* Clear external interrupt flags. */
EICRA = _BV( ISC00 ) | _BV( ISC01 ); /* INT0 activated on a rising edge. */
EIMSK = _BV( INT0 ); /* Enable only external interrupt 0 (PLM). */
Serial.begin(9600); // set up Serial library at 9600 bps
/* Activate global interrupts. */
sei();
}
void
loop( void )
{
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
plm1_send_data(&incomingByte, 1);
}
/* When a packet is received, plm1_receive returns the length of the
* packet and copies the contents of the packet in rx_packet. */
if( (rx_length = plm1_receive(rx_packet)) )
{
Serial.print(byte(rx_packet[0]));
}
}
/* Interrupt Service Routine provenant de la ligne d'interruption du PLM. */
SIGNAL(INT0_vect)
{
plm1_interrupt();
}
use this upper example code
but always has this error
mamba.cpp.o: In function `__vector_1':
C:\Users\ADMINI~1\AppData\Local\Temp\build1707562016091152329.tmp/mamba.cpp:95: undefined reference to `plm1_interrupt()'
mamba.cpp.o: In function `loop':
C:\Users\ADMINI~1\AppData\Local\Temp\build1707562016091152329.tmp/mamba.cpp:77: undefined reference to `plm1_send_data(unsigned char*, unsigned char)'
C:\Users\ADMINI~1\AppData\Local\Temp\build1707562016091152329.tmp/mamba.cpp:82: undefined reference to `plm1_receive(unsigned char*)'
mamba.cpp.o: In function `setup':
C:\Users\ADMINI~1\AppData\Local\Temp\build1707562016091152329.tmp/mamba.cpp:48: undefined reference to `spi_init(spi_speed_t)'
C:\Users\ADMINI~1\AppData\Local\Temp\build1707562016091152329.tmp/mamba.cpp:51: undefined reference to `plm1_init()'
i use arduino IDE last version , 0022, 1.0.1
and I tring delete hardware/arduino/core/WInterrupt file too
always show this error
help me plz