Ejemplo n.º 1
0
void
SpiDeviceTest::testMultipleTransmissions()
{
	test::Transmission transmissions[] = {
		test::Transmission(4, RX_DATA(1,2,3,4), TX_DATA(4,3,2,1)),
		test::Transmission(2, RX_DATA(5, 6), TX_DATA(100, 101)),
	};
	
	test::SpiDevice device;
	device.start(transmissions, ARRAY_SIZE(transmissions), __LINE__, false);
	
	TEST_ASSERT_FALSE(device.isSuccessful());
	
	device.select();
	TEST_ASSERT_EQUALS(device.write(1), 4);
	TEST_ASSERT_EQUALS(device.write(2), 3);
	TEST_ASSERT_EQUALS(device.write(3), 2);
	TEST_ASSERT_EQUALS(device.write(4), 1);
	device.deselect();
	
	device.select();
	TEST_ASSERT_EQUALS(device.write(5), 100);
	TEST_ASSERT_EQUALS(device.write(6), 101);
	device.deselect();
	
	TEST_ASSERT_TRUE(device.isSuccessful());
}
Ejemplo n.º 2
0
// ----------------------------------------------------------------------------
void
Ad7280aTest::testAllChannelRead()
{
	test::Transmission transmissionsInitialize[] = {
		test::Transmission(4, RX_DATA(0x03,0x80,0x11,0xCA), TX_DATA(0x00,0x00,0x00,0x00)),
		test::Transmission(4, RX_DATA(0x01,0xB5,0x14,0xEA), TX_DATA(0x00,0x00,0x00,0x00)),
		
		test::Transmission(4, RX_DATA(0xF8,0x00,0x03,0x0A), TX_DATA(0x00,0x03,0x27,0x24)),
		test::Transmission(4, RX_DATA(0xF8,0x00,0x03,0x0A), TX_DATA(0x00,0x86,0x47,0x34)),
		test::Transmission(4, RX_DATA(0xF8,0x00,0x03,0x0A), TX_DATA(0x01,0x09,0x67,0x84)),
		test::Transmission(4, RX_DATA(0xF8,0x00,0x03,0x0A), TX_DATA(0x01,0x8C,0x87,0x14)),
		test::Transmission(4, RX_DATA(0xF8,0x00,0x03,0x0A), TX_DATA(0x02,0x0F,0xA5,0xEC)),
		test::Transmission(4, RX_DATA(0xF8,0x00,0x03,0x0A), TX_DATA(0x02,0x92,0xC6,0x74)),
	};
	
	device.start(transmissionsInitialize, ARRAY_SIZE(transmissionsInitialize), __LINE__);
	
	uint16_t values[6];
	TEST_ASSERT_TRUE(Ad7280a::readAllChannels(values));
	
	TEST_ASSERT_EQUALS(values[0], 100);
	TEST_ASSERT_EQUALS(values[1], 200);
	TEST_ASSERT_EQUALS(values[2], 300);
	TEST_ASSERT_EQUALS(values[3], 400);
	TEST_ASSERT_EQUALS(values[4], 500);
	TEST_ASSERT_EQUALS(values[5], 600);
	
	device.finish();
}
Ejemplo n.º 3
0
// ----------------------------------------------------------------------------
void
Ad7280aTest::testSoftwareReset()
{
	test::Transmission transmissionsInitialize[] = {
		test::Transmission(4, RX_DATA(0x01,0xD2,0xB4,0x12), TX_DATA(0x00,0x00,0x00,0x00)),
		test::Transmission(4, RX_DATA(0x01,0xC2,0xB6,0xE2), TX_DATA(0x00,0x00,0x00,0x00)),
	};
	
	device.start(transmissionsInitialize, ARRAY_SIZE(transmissionsInitialize), __LINE__);
	
	Ad7280a::softwareReset();
	
	device.finish();
}
Ejemplo n.º 4
0
// ----------------------------------------------------------------------------
void
Ad7280aTest::testChainSetup()
{
	test::Transmission transmissionsInitialize[] = {
		test::Transmission(4, RX_DATA(0x01,0xD2,0xB4,0x12), TX_DATA(0x00,0x00,0x00,0x00)),
		test::Transmission(4, RX_DATA(0x01,0xC2,0xB6,0xE2), TX_DATA(0x00,0x00,0x00,0x00)),
		test::Transmission(4, RX_DATA(0x03,0x87,0x16,0xCA), TX_DATA(0x00,0x00,0x00,0x00)),
		test::Transmission(4, RX_DATA(0xF8,0x00,0x03,0x0A), TX_DATA(0x11,0xC2,0x65,0xDC)),
	};
	
	device.start(transmissionsInitialize, ARRAY_SIZE(transmissionsInitialize), __LINE__);
	
	TEST_ASSERT_TRUE(Ad7280a::chainSetup());
	
	device.finish();
}
Ejemplo n.º 5
0
void ep_send_zlp(U8 ep_num)
{
    cli();
    ep_select(ep_num);
    while (!TX_FIFO_READY);
    TX_DATA();
    while (!TX_FIFO_READY);
    sei();
}
Ejemplo n.º 6
0
// ----------------------------------------------------------------------------
void
Ad7280aTest::testSelftest()
{
	test::Transmission transmissionsInitialize[] = {
		test::Transmission(4, RX_DATA(0x01,0xC2,0xB6,0xE2), TX_DATA(0x00,0x00,0x00,0x00)),
		test::Transmission(4, RX_DATA(0x01,0xB9,0x11,0x92), TX_DATA(0x00,0x00,0x00,0x00)),
		test::Transmission(4, RX_DATA(0x03,0x86,0x17,0xCA), TX_DATA(0x00,0x00,0x00,0x00)),
		
		// Read the self-test conversion result (value = 980)
		test::Transmission(4, RX_DATA(0xF8,0x00,0x03,0x0A), TX_DATA(0x00,0x1E,0xA5,0x90)),
	};
	
	device.start(transmissionsInitialize, ARRAY_SIZE(transmissionsInitialize), __LINE__);
	
	TEST_ASSERT_TRUE(Ad7280a::performSelftest());
	
	device.finish();
}
Ejemplo n.º 7
0
UINT8 SendByte(UINT8 dataByte)
{
  
  UINT8 i;
   for (i = 0; i < 8; i++) {
        WAIT_SERIAL_CLK(1);
        if ((dataByte & 0x01) == 0){
            TX_DATA(0);
        }
    else{
            TX_DATA(1);
    }
    
            dataByte >>=  1;
      WAIT_SERIAL_CLK(0);
            
        }
   return TRUE;
}
Ejemplo n.º 8
0
// ----------------------------------------------------------------------------
void
Ad7280aTest::testChannelRead()
{
	test::Transmission transmissionsInitialize[] = {
		test::Transmission(4, RX_DATA(0x01,0xA6,0x15,0x1A), TX_DATA(0x00,0x00,0x00,0x00)),
		test::Transmission(4, RX_DATA(0x01,0xA1,0x02,0x0A), TX_DATA(0x00,0x00,0x00,0x00)),
		test::Transmission(4, RX_DATA(0x03,0x80,0x61,0xBA), TX_DATA(0x00,0x00,0x00,0x00)),
		
		test::Transmission(4, RX_DATA(0xF8,0x00,0x03,0x0A), TX_DATA(0x01,0x91,0x2D,0x88)),
	};
	
	device.start(transmissionsInitialize, ARRAY_SIZE(transmissionsInitialize), __LINE__);
	
	uint16_t value;
	TEST_ASSERT_TRUE(Ad7280a::readChannel(0, xpcc::ad7280a::CELL_VOLTAGE_4, &value));
	
	TEST_ASSERT_EQUALS(value, 549);
	
	device.finish();
}
Ejemplo n.º 9
0
// ----------------------------------------------------------------------------
void
Ad7280aTest::testBalancer()
{
	test::Transmission transmissionsInitialize[] = {
		test::Transmission(4, RX_DATA(0x02,0x81,0x83,0xC2), TX_DATA(0x00,0x00,0x00,0x00)),
	};
	
	device.start(transmissionsInitialize, ARRAY_SIZE(transmissionsInitialize), __LINE__);
	
	Ad7280a::enableBalancer(0, xpcc::ad7280a::CB1 | xpcc::ad7280a::CB2);
	
	device.finish();
}
Ejemplo n.º 10
0
void
SpiDeviceTest::testSingleTransmission()
{
	test::Transmission transmissions[] = {
		test::Transmission(4, RX_DATA(1,2,3,4), TX_DATA(4,3,2,1)),
	};
	
	test::SpiDevice device;
	device.start(transmissions, ARRAY_SIZE(transmissions), __LINE__, false);
	
	TEST_ASSERT_FALSE(device.isSuccessful());
	
	device.select();
	TEST_ASSERT_EQUALS(device.write(1), 4);
	TEST_ASSERT_EQUALS(device.write(2), 3);
	TEST_ASSERT_EQUALS(device.write(3), 2);
	TEST_ASSERT_EQUALS(device.write(4), 1);
	device.deselect();
	
	TEST_ASSERT_TRUE(device.isSuccessful());
	
	device.select();
	device.deselect();
	
	TEST_ASSERT_FALSE(device.isSuccessful());
	
	// Restart transmission
	device.start(transmissions, ARRAY_SIZE(transmissions), __LINE__, false);
	device.select();
	TEST_ASSERT_EQUALS(device.write(1), 4);
	TEST_ASSERT_EQUALS(device.write(2), 3);
	TEST_ASSERT_EQUALS(device.write(3), 2);
	TEST_ASSERT_EQUALS(device.write(4), 1);
	TEST_ASSERT_EQUALS(device.write(5), 0xff);		// one byte to much
	device.deselect();
	
	TEST_ASSERT_FALSE(device.isSuccessful());
}