1

Dependencies:   DebugLibrary MCP4xxxx_SPI mbed

Fork of MCP41xxxApp by Yann Garcia

Committer:
viniciushl
Date:
Wed Nov 30 18:18:05 2016 +0000
Revision:
4:1561d27a8e3a
Parent:
3:7dbac45b8fd3
Oi

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Yann 0:62020bd58748 1 #include <string>
Yann 0:62020bd58748 2 #include <iostream>
Yann 0:62020bd58748 3 #include <iomanip>
viniciushl 4:1561d27a8e3a 4 #include <mbed.h>
viniciushl 4:1561d27a8e3a 5 #include <math.h>
Yann 3:7dbac45b8fd3 6 /**
Yann 3:7dbac45b8fd3 7 * Tests were done with schema proposed here: DS11195C-page 11 FIGURE 2-25: Potentiometer Divider Non-Linearity Error Test Circuit (DNL, INL)
Yann 3:7dbac45b8fd3 8 */
Yann 0:62020bd58748 9 #include "MCP4xxxx_SPI.h"
Yann 0:62020bd58748 10
Yann 0:62020bd58748 11 struct UserChoice {
Yann 0:62020bd58748 12 char choice;
Yann 0:62020bd58748 13 unsigned char moduleId;
Yann 0:62020bd58748 14 };
Yann 0:62020bd58748 15
Yann 0:62020bd58748 16 /*
Yann 0:62020bd58748 17 * Declare functions
Yann 0:62020bd58748 18 */
Yann 0:62020bd58748 19 void AvailableIndicator(); // LED1 flashing for program while program is alive
Yann 0:62020bd58748 20 UserChoice DisplayMenuAndGetChoice(); // Display and get the user choice
Yann 0:62020bd58748 21
Yann 0:62020bd58748 22 /*
Yann 0:62020bd58748 23 * Declare statics
Yann 0:62020bd58748 24 */
viniciushl 4:1561d27a8e3a 25
viniciushl 4:1561d27a8e3a 26 DigitalOut chipSelect[] = {p8,p9,p10}; // c - MAIS SIGNIFICATIVO
viniciushl 4:1561d27a8e3a 27
viniciushl 4:1561d27a8e3a 28
viniciushl 4:1561d27a8e3a 29
viniciushl 4:1561d27a8e3a 30 CMCP4xxxx_SPI g_digitalPot(p5, p6, p7, NC, NC, NC); // Create an instance of the class CMCP4xxxx_SPI, p5/p6/p7: SPI#1, /CS managed by library, /RESET input not connected, , /SHDN input not connected
Yann 0:62020bd58748 31
Yann 0:62020bd58748 32 int main() {
Yann 0:62020bd58748 33
viniciushl 4:1561d27a8e3a 34 //unsigned int potLevel1 = 0x0; // Initial digital potentiometer value
viniciushl 4:1561d27a8e3a 35 //unsigned int potLevel2 = 0x0; // Initial digital potentiometer value
Yann 0:62020bd58748 36
viniciushl 4:1561d27a8e3a 37 int value = 0;
viniciushl 4:1561d27a8e3a 38 int num_pot = 0;
Yann 0:62020bd58748 39
viniciushl 4:1561d27a8e3a 40 while (true)
viniciushl 4:1561d27a8e3a 41 {
viniciushl 4:1561d27a8e3a 42 do {
viniciushl 4:1561d27a8e3a 43
viniciushl 4:1561d27a8e3a 44 printf("\r\nDigite o numero do potenciometro (1 a 8):");
viniciushl 4:1561d27a8e3a 45 scanf("%d", &num_pot);
viniciushl 4:1561d27a8e3a 46 }while(num_pot < 1 || num_pot > 12);
Yann 0:62020bd58748 47
viniciushl 4:1561d27a8e3a 48 do {
viniciushl 4:1561d27a8e3a 49
viniciushl 4:1561d27a8e3a 50 printf("\r\nDigite o valor do volume (0 a 8):");
viniciushl 4:1561d27a8e3a 51 scanf("%d", &value);
viniciushl 4:1561d27a8e3a 52 }while(value < 0 || value >255);
viniciushl 4:1561d27a8e3a 53
viniciushl 4:1561d27a8e3a 54
viniciushl 4:1561d27a8e3a 55
viniciushl 4:1561d27a8e3a 56 chipSelect[0].write(((num_pot-1) >> 2) & 0x1);
viniciushl 4:1561d27a8e3a 57 chipSelect[1].write(((num_pot-1) >> 1) & 0x1);
viniciushl 4:1561d27a8e3a 58 chipSelect[2].write(((num_pot-1) >> 0) & 0x1);
viniciushl 4:1561d27a8e3a 59
viniciushl 4:1561d27a8e3a 60 int value2 = 256 - (pow((double)2,(double)value));
viniciushl 4:1561d27a8e3a 61 printf("Value = %d", value2);
viniciushl 4:1561d27a8e3a 62
viniciushl 4:1561d27a8e3a 63 g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot1, value2);
viniciushl 4:1561d27a8e3a 64
viniciushl 4:1561d27a8e3a 65
viniciushl 4:1561d27a8e3a 66
viniciushl 4:1561d27a8e3a 67 chipSelect[0].write(1);
viniciushl 4:1561d27a8e3a 68 chipSelect[1].write(1);
viniciushl 4:1561d27a8e3a 69 chipSelect[2].write(1);
viniciushl 4:1561d27a8e3a 70 /*
Yann 0:62020bd58748 71
viniciushl 4:1561d27a8e3a 72 g_chipSelect1.write(0);
viniciushl 4:1561d27a8e3a 73
viniciushl 4:1561d27a8e3a 74 g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot1, potLevel1);
Yann 0:62020bd58748 75
viniciushl 4:1561d27a8e3a 76
viniciushl 4:1561d27a8e3a 77 g_chipSelect1.write(1);
viniciushl 4:1561d27a8e3a 78
viniciushl 4:1561d27a8e3a 79
viniciushl 4:1561d27a8e3a 80 g_chipSelect2.write(0);
viniciushl 4:1561d27a8e3a 81
viniciushl 4:1561d27a8e3a 82 g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot1, potLevel2);
Yann 0:62020bd58748 83
viniciushl 4:1561d27a8e3a 84
viniciushl 4:1561d27a8e3a 85 g_chipSelect2.write(1);
viniciushl 4:1561d27a8e3a 86
viniciushl 4:1561d27a8e3a 87 potLevel1+=1;
viniciushl 4:1561d27a8e3a 88 potLevel2-=1;
viniciushl 4:1561d27a8e3a 89
viniciushl 4:1561d27a8e3a 90 g_chipSelect2.write(0);
viniciushl 4:1561d27a8e3a 91 g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot1, potLevel2);
viniciushl 4:1561d27a8e3a 92 g_chipSelect2.write(1);*/
viniciushl 4:1561d27a8e3a 93
viniciushl 4:1561d27a8e3a 94 }
viniciushl 4:1561d27a8e3a 95
viniciushl 4:1561d27a8e3a 96
Yann 0:62020bd58748 97 }
viniciushl 4:1561d27a8e3a 98
viniciushl 4:1561d27a8e3a 99