4 #include "libpropeller/mcp3208/mcp3208.h" 6 #include "libpropeller/board/board_unit_tester.h" 11 const int kChannelDac = 3;
12 const int kChannel5vOver2 = 4;
13 const int kChannel3v3Over2 = 5;
14 const int kChannelGround = 6;
15 const int kChannel3v3 = 7;
21 const int kValue3v3 = 4058;
25 const int kValue5vOver2 = 2923;
26 const int kValue3v3Over2 = kValue3v3 / 2;
27 const int kValueGround = 0;
31 const int kMode = 0xFF;
36 static void setUp(
void) {
38 sut->
Start(libpropeller::Board::kPinMCP3208Data,
39 libpropeller::Board::kPinMCP3208Clock,
40 libpropeller::Board::kPinMCP3208Select, kMode,
41 libpropeller::Board::kPinDac);
42 waitcnt(CLKFREQ / 100 + CNT);
45 static void tearDown(
void) {
51 static void test_3v3(
void) {
53 TEST_ASSERT_INT_WITHIN(delta, kValue3v3, sut->
In(kChannel3v3));
56 static void test_Ground(
void) {
58 TEST_ASSERT_INT_WITHIN(delta, kValueGround, sut->
In(kChannelGround));
61 static void test_3v3Over2(
void) {
62 TEST_ASSERT_INT_WITHIN(delta, kValue3v3Over2, sut->
In(kChannel3v3Over2));
65 static void test_5vOver2(
void) {
66 TEST_ASSERT_INT_WITHIN(delta, kValue5vOver2, sut->
In(kChannel5vOver2));
69 static void test_Average(
void) {
70 TEST_ASSERT_INT_WITHIN(delta, kValue3v3Over2, sut->
Average(kChannel3v3Over2, 16));
74 static void test_DAClow(
void) {
76 waitcnt(CLKFREQ / 100 + CNT);
77 TEST_ASSERT_INT_WITHIN(delta, kValueGround, sut->
In(kChannelDac));
80 static void test_DACHigh(
void) {
82 waitcnt(CLKFREQ / 10 + CNT);
85 TEST_ASSERT_INT_WITHIN(delta, 4096, sut->
In(kChannelDac));
88 static void test_DACMiddle(
void) {
89 sut->
Out(0xFFFF >> 1);
90 waitcnt(CLKFREQ / 100 + CNT);
91 TEST_ASSERT_INT_WITHIN(delta, kValue3v3Over2, sut->
In(kChannelDac));
int In(const int Channel)
int Average(const int Channel, const int N)
void Out(const short aOutput, const short bOutput=-1)
void Start(const int dataPin, const int clockPin, const int selectPin, const int mode=0xFF, const int dacAPin=-1, const int dacBPin=-1)