1
Dependencies: DebugLibrary MCP4xxxx_SPI mbed
Fork of MCP41xxxApp by
Revision 4:1561d27a8e3a, committed 2016-11-30
- Comitter:
- viniciushl
- Date:
- Wed Nov 30 18:18:05 2016 +0000
- Parent:
- 3:7dbac45b8fd3
- Commit message:
- Oi
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 7dbac45b8fd3 -r 1561d27a8e3a main.cpp --- a/main.cpp Tue Jan 29 15:02:41 2013 +0000 +++ b/main.cpp Wed Nov 30 18:18:05 2016 +0000 @@ -1,7 +1,8 @@ #include <string> #include <iostream> #include <iomanip> - +#include <mbed.h> +#include <math.h> /** * Tests were done with schema proposed here: DS11195C-page 11 FIGURE 2-25: Potentiometer Divider Non-Linearity Error Test Circuit (DNL, INL) */ @@ -21,125 +22,78 @@ /* * Declare statics */ -DigitalOut g_availableLed(LED1); // To verify if program in running -Ticker g_available; // LED1 will flash with a period of 2s -#define __MANAGE_CS__ // /CS managed by application -#undef __MANAGE_CS__ // /CS managed by library -#if defined(__MANAGE_CS__) -DigitalOut g_chipSelect(p8); // /CS to select MCP4xxxx device -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 application, /RESET input not connected, , /SHDN input not connected -#else // __MANAGE_CS__ -CMCP4xxxx_SPI g_digitalPot(p5, p6, p7, p8, 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 -#endif // __MANAGE_CS__ -UserChoice g_userChoice; // Used to store user choice from displayed menu + +DigitalOut chipSelect[] = {p8,p9,p10}; // c - MAIS SIGNIFICATIVO + + + +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 int main() { - unsigned char potLevel = 0x80; // Initial digital potentiometer value + //unsigned int potLevel1 = 0x0; // Initial digital potentiometer value + //unsigned int potLevel2 = 0x0; // Initial digital potentiometer value -#if defined(__MANAGE_CS__) - g_chipSelect.write(1); // Disable chip -#endif // __MANAGE_CS__ + int value = 0; + int num_pot = 0; - // Launch available indicator - g_available.attach(&AvailableIndicator, 2.0); - - while (true) { + while (true) + { + do { + + printf("\r\nDigite o numero do potenciometro (1 a 8):"); + scanf("%d", &num_pot); + }while(num_pot < 1 || num_pot > 12); - g_userChoice = DisplayMenuAndGetChoice(); // Retrieve the user selection - switch (g_userChoice.choice) { - case 'a': - potLevel += 1; -#if defined(__MANAGE_CS__) - g_chipSelect.write(0); -#endif // __MANAGE_CS__ - g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot1, potLevel); -#if defined(__MANAGE_CS__) - g_chipSelect.write(1); -#endif // __MANAGE_CS__ - break; - case 'b': - potLevel += 1; -#if defined(__MANAGE_CS__) - g_chipSelect.write(0); -#endif // __MANAGE_CS__ - g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot2, potLevel); -#if defined(__MANAGE_CS__) - g_chipSelect.write(1); -#endif // __MANAGE_CS__ - break; - case 'c': - potLevel -= 1; -#if defined(__MANAGE_CS__) - g_chipSelect.write(0); -#endif // __MANAGE_CS__ - g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot1, potLevel); -#if defined(__MANAGE_CS__) - g_chipSelect.write(1); -#endif // __MANAGE_CS__ - break; - case 'd': - potLevel -= 1; -#if defined(__MANAGE_CS__) - g_chipSelect.write(0); -#endif // __MANAGE_CS__ - g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot2, potLevel); -#if defined(__MANAGE_CS__) - g_chipSelect.write(1); -#endif // __MANAGE_CS__ - break; - case 'e': - potLevel -= 1; -#if defined(__MANAGE_CS__) - g_chipSelect.write(0); -#endif // __MANAGE_CS__ - g_digitalPot.Write(CMCP4xxxx_SPI::ShutdownPot1); -#if defined(__MANAGE_CS__) - g_chipSelect.write(1); -#endif // __MANAGE_CS__ - break; - case 'f': - potLevel -= 1; -#if defined(__MANAGE_CS__) - g_chipSelect.write(0); -#endif // __MANAGE_CS__ - g_digitalPot.Write(CMCP4xxxx_SPI::ShutdownPot2); - #if defined(__MANAGE_CS__) - g_chipSelect.write(1); -#endif // __MANAGE_CS__ - break; - case 'r': - g_digitalPot.Reset(); - break; - default: - std::cout << "Invalid user choice\r" << std::endl; - break; - } // End of 'switch' statement - - } // End of 'while' statement -} // End of program - nerver reached + do { + + printf("\r\nDigite o valor do volume (0 a 8):"); + scanf("%d", &value); + }while(value < 0 || value >255); + + + + chipSelect[0].write(((num_pot-1) >> 2) & 0x1); + chipSelect[1].write(((num_pot-1) >> 1) & 0x1); + chipSelect[2].write(((num_pot-1) >> 0) & 0x1); + + int value2 = 256 - (pow((double)2,(double)value)); + printf("Value = %d", value2); + + g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot1, value2); + + + + chipSelect[0].write(1); + chipSelect[1].write(1); + chipSelect[2].write(1); +/* -void AvailableIndicator() { - g_availableLed = !g_availableLed; -} // End of AvailableIndicator + g_chipSelect1.write(0); + + g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot1, potLevel1); -UserChoice DisplayMenuAndGetChoice() { - static UserChoice userChoice; - - // Display the title - std::cout << "\r" << std::endl << "MCP4xxxx_SPI v0.1\r" << std::endl; + + g_chipSelect1.write(1); + + + g_chipSelect2.write(0); + + g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot1, potLevel2); - // Display the menu - std::cout << "\tIncrease level on pot #1:\t\t\ta\r" << std::endl; - std::cout << "\tIncrease level on pot #2:\t\t\tb\r" << std::endl; - std::cout << "\tDecrease level on pot #1:\t\t\tc\r" << std::endl; - std::cout << "\tDecrease level on pot #2:\t\t\td\r" << std::endl; - std::cout << "\tShutdown pot #1 :\t\t\te\r" << std::endl; - std::cout << "\tShutdown pot #2 :\t\t\tf\r" << std::endl; - std::cout << "\tReset MCP4xxxx :\t\t\tr\r" << std::endl; - std::cout << "Enter your choice: " << std::flush; - userChoice.choice = getchar(); - // Display the menu - std::cout << "\r" << std::endl << std::flush; - return userChoice; + + g_chipSelect2.write(1); + + potLevel1+=1; + potLevel2-=1; + + g_chipSelect2.write(0); + g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot1, potLevel2); + g_chipSelect2.write(1);*/ + + } + + } + +