mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
306 lines
6.4 KiB
C++
306 lines
6.4 KiB
C++
//
|
|
// FILE: mcp4725_test.ino
|
|
// AUTHOR: Rob Tillaart
|
|
// PURPOSE: test mcp4725 lib
|
|
// DATE: 2013-11-24
|
|
// URL: https://github.com/RobTillaart/MCP4725
|
|
|
|
|
|
#include "Wire.h"
|
|
#include "MCP4725.h"
|
|
|
|
MCP4725 MCP(0x62); // 0x62 or 0x63
|
|
|
|
volatile int x;
|
|
uint32_t start, stop;
|
|
|
|
|
|
void setup()
|
|
{
|
|
Serial.begin(115200);
|
|
|
|
Serial.print("MCP4725 test program: ");
|
|
Serial.println(MCP4725_VERSION);
|
|
|
|
MCP.begin();
|
|
test1();
|
|
test2();
|
|
test3();
|
|
test4();
|
|
test5();
|
|
test6();
|
|
}
|
|
|
|
|
|
void test1()
|
|
{
|
|
Serial.print("\nValue:\t");
|
|
Serial.println(MCP.getValue());
|
|
Serial.println();
|
|
|
|
for (int i = 100; i < 500; i += 100)
|
|
{
|
|
Serial.print("setValue(");
|
|
Serial.print(i);
|
|
Serial.print(")\n");
|
|
MCP.setValue(i);
|
|
Serial.print("Value:\t");
|
|
Serial.println(MCP.getValue());
|
|
}
|
|
Serial.println();
|
|
}
|
|
|
|
|
|
void test2()
|
|
{
|
|
Serial.println("\n\nMCP4725_II\n\n");
|
|
|
|
for (int i = 100; i < 500; i += 100)
|
|
{
|
|
Serial.print("writeDAC(");
|
|
Serial.print(i);
|
|
Serial.print(")\n");
|
|
MCP.writeDAC(i);
|
|
Serial.print("MCPValue:\t");
|
|
Serial.println(MCP.readDAC());
|
|
Serial.print("EEValue:\t");
|
|
Serial.println(MCP.readEEPROM());
|
|
}
|
|
Serial.println();
|
|
|
|
for (int i = 100; i < 500; i += 100)
|
|
{
|
|
Serial.print("writeDAC(");
|
|
Serial.print(i);
|
|
Serial.print(", true)\n");
|
|
MCP.writeDAC(i, true);
|
|
Serial.print("MCPValue:\t");
|
|
Serial.println(MCP.readDAC());
|
|
Serial.print("EEValue:\t");
|
|
Serial.println(MCP.readEEPROM());
|
|
}
|
|
Serial.println();
|
|
|
|
Serial.println("writeDAC(200)");
|
|
MCP.writeDAC(200);
|
|
Serial.print("MCPValue:\t");
|
|
Serial.println(MCP.readDAC());
|
|
Serial.print("EEValue:\t");
|
|
Serial.println(MCP.readEEPROM());
|
|
Serial.println();
|
|
}
|
|
|
|
|
|
void test3()
|
|
{
|
|
Serial.println("\n\nMCP4725_POWERDOWNMODE\n\n");
|
|
|
|
for (int i = 0; i < 4; i++)
|
|
{
|
|
Serial.print("MCP.writePowerDownMode(");
|
|
Serial.print(i);
|
|
Serial.println(")");
|
|
MCP.writePowerDownMode(i);
|
|
Serial.print("EPR PDM Value:\t");
|
|
Serial.println(MCP.readPowerDownModeEEPROM());
|
|
Serial.println();
|
|
}
|
|
|
|
Serial.println("\n\nEXPERIMENTAL");
|
|
Serial.println("MCP.writePowerDownMode(3)");
|
|
MCP.writePowerDownMode(3);
|
|
MCP.writeDAC(305);
|
|
Serial.print("Value:\t");
|
|
Serial.println(MCP.getValue());
|
|
Serial.println("MCP.powerOnReset()");
|
|
Serial.println("Before");
|
|
Serial.print("MCP PDM Value:\t");
|
|
Serial.println(MCP.readPowerDownModeDAC());
|
|
Serial.print("EPR PDM Value:\t");
|
|
Serial.println(MCP.readPowerDownModeEEPROM());
|
|
Serial.print("MCPValue:\t");
|
|
Serial.println(MCP.readDAC());
|
|
Serial.print("EEValue:\t");
|
|
Serial.println(MCP.readEEPROM());
|
|
MCP.powerOnReset();
|
|
Serial.println("After");
|
|
Serial.print("MCP PDM Value:\t");
|
|
Serial.println(MCP.readPowerDownModeDAC());
|
|
Serial.print("EPR PDM Value:\t");
|
|
Serial.println(MCP.readPowerDownModeEEPROM());
|
|
Serial.print("MCPValue:\t");
|
|
Serial.println(MCP.readDAC());
|
|
Serial.print("EEValue:\t");
|
|
Serial.println(MCP.readEEPROM());
|
|
Serial.print("Value:\t");
|
|
Serial.println(MCP.getValue());
|
|
Serial.println();
|
|
}
|
|
|
|
|
|
void test4()
|
|
{
|
|
Serial.println("\n\nEXPERIMENTAL");
|
|
Serial.println("MCP.writePowerDownMode(2)");
|
|
MCP.writePowerDownMode(2);
|
|
MCP.writeDAC(405);
|
|
Serial.print("Value:\t");
|
|
Serial.println(MCP.getValue());
|
|
Serial.println("MCP.powerOnWakeUp()");
|
|
Serial.println("Before");
|
|
Serial.print("MCP PDM Value:\t");
|
|
Serial.println(MCP.readPowerDownModeDAC());
|
|
Serial.print("EPR PDM Value:\t");
|
|
Serial.println(MCP.readPowerDownModeEEPROM());
|
|
Serial.print("MCPValue:\t");
|
|
Serial.println(MCP.readDAC());
|
|
Serial.print("EEValue:\t");
|
|
Serial.println(MCP.readEEPROM());
|
|
|
|
MCP.powerOnWakeUp();
|
|
Serial.println("after");
|
|
Serial.print("MCP PDM Value:\t");
|
|
Serial.println(MCP.readPowerDownModeDAC());
|
|
Serial.print("EPR PDM Value:\t");
|
|
Serial.println(MCP.readPowerDownModeEEPROM());
|
|
Serial.print("MCPValue:\t");
|
|
Serial.println(MCP.readDAC());
|
|
Serial.print("EEValue:\t");
|
|
Serial.println(MCP.readEEPROM());
|
|
Serial.print("Value:\t");
|
|
Serial.println(MCP.getValue());
|
|
Serial.println();
|
|
}
|
|
|
|
|
|
void test5()
|
|
{
|
|
Serial.println("\n\nPERFORMANCE");
|
|
Serial.println();
|
|
|
|
start = micros();
|
|
for (int i = 0; i < 1000; i++)
|
|
{
|
|
x = MCP.getValue();
|
|
}
|
|
stop = micros();
|
|
Serial.print("1000x MCP.getValue():\t\t");
|
|
Serial.println(stop - start);
|
|
|
|
start = micros();
|
|
for (int i = 0; i < 1000; i++)
|
|
{
|
|
MCP.setValue(i);
|
|
}
|
|
stop = micros();
|
|
Serial.print("1000x MCP.setValue(i):\t\t");
|
|
Serial.println(stop - start);
|
|
|
|
start = micros();
|
|
for (int i = 0; i < 1000; i++)
|
|
{
|
|
MCP.setValue(1000);
|
|
}
|
|
stop = micros();
|
|
Serial.print("1000x MCP.setValue(1000):\t");
|
|
Serial.println(stop - start);
|
|
|
|
start = micros();
|
|
for (int i = 0; i < 1000; i++)
|
|
{
|
|
x = MCP.readDAC();
|
|
}
|
|
stop = micros();
|
|
Serial.print("1000x MCP.readDAC():\t\t");
|
|
Serial.println(stop - start);
|
|
|
|
start = micros();
|
|
for (int i = 0; i < 1000; i++)
|
|
{
|
|
x = MCP.writeDAC(i);
|
|
}
|
|
stop = micros();
|
|
Serial.print("1000x MCP.writeDAC(i):\t\t");
|
|
Serial.println(stop - start);
|
|
|
|
start = micros();
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
x = MCP.writeDAC(i, true);
|
|
}
|
|
stop = micros();
|
|
Serial.print("10x MCP.writeDAC(i, true):\t");
|
|
Serial.println(stop - start);
|
|
|
|
start = micros();
|
|
for (int i = 0; i < 1000; i++)
|
|
{
|
|
x = MCP.ready();
|
|
}
|
|
stop = micros();
|
|
Serial.print("1000x MCP.ready():\t\t");
|
|
Serial.println(stop - start);
|
|
|
|
while (!MCP.ready());
|
|
MCP.writeDAC(0, true);
|
|
start = micros();
|
|
while (!MCP.ready());
|
|
stop = micros();
|
|
Serial.print("EEPROM write latency:\t\t");
|
|
Serial.println(stop - start);
|
|
}
|
|
|
|
|
|
void test6()
|
|
{
|
|
Serial.println("\n\nEXPERIMENTAL II");
|
|
|
|
start = micros();
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
x = MCP.readPowerDownModeDAC();
|
|
}
|
|
stop = micros();
|
|
Serial.print("10x MCP.readPowerDownModeDAC():\t\t");
|
|
Serial.println(stop - start);
|
|
|
|
start = micros();
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
x = MCP.readPowerDownModeEEPROM();
|
|
}
|
|
stop = micros();
|
|
Serial.print("10x MCP.readPowerDownModeEEPROM():\t");
|
|
Serial.println(stop - start);
|
|
|
|
start = micros();
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
x = MCP.writePowerDownMode(i & 0x03);
|
|
}
|
|
stop = micros();
|
|
Serial.print("10x MCP.writePowerDownMode(i):\t\t");
|
|
Serial.println(stop - start);
|
|
|
|
Serial.print("\nDone... (start triangle mode)");
|
|
}
|
|
|
|
|
|
void loop()
|
|
{
|
|
for (uint16_t i = 0; i < 4096; i++)
|
|
{
|
|
MCP.setValue(i);
|
|
delay(10);
|
|
}
|
|
for (uint16_t i = 0; i < 4096; i++)
|
|
{
|
|
MCP.setValue(4096 - i);
|
|
delay(10);
|
|
}
|
|
}
|
|
|
|
|
|
// -- END OF FILE --
|
|
|