1
Dependencies: DebugLibrary MCP4xxxx_SPI mbed
Fork of MCP41xxxApp by
Revision 3:7dbac45b8fd3, committed 2013-01-29
- Comitter:
- Yann
- Date:
- Tue Jan 29 15:02:41 2013 +0000
- Parent:
- 2:cada7984284e
- Child:
- 4:1561d27a8e3a
- Commit message:
- Add /CS supported by the MCP4xxxx_SPI library
Changed in this revision
| MCP4xxxx_SPI.lib | Show annotated file Show diff for this revision Revisions of this file |
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/MCP4xxxx_SPI.lib Sun Jan 27 17:11:44 2013 +0000 +++ b/MCP4xxxx_SPI.lib Tue Jan 29 15:02:41 2013 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/Yann/code/MCP4xxxx_SPI/#cf3cee91eb87 +http://mbed.org/users/Yann/code/MCP4xxxx_SPI/#7c27fb9785be
--- a/main.cpp Sun Jan 27 17:11:44 2013 +0000
+++ b/main.cpp Tue Jan 29 15:02:41 2013 +0000
@@ -2,6 +2,9 @@
#include <iostream>
#include <iomanip>
+/**
+ * Tests were done with schema proposed here: DS11195C-page 11 FIGURE 2-25: Potentiometer Divider Non-Linearity Error Test Circuit (DNL, INL)
+ */
#include "MCP4xxxx_SPI.h"
struct UserChoice {
@@ -20,15 +23,23 @@
*/
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); // Create an instance of the class CMCP4xxxx_SPI, p5/p6/p7: SPI#1, /RESET input not connected, , /SHDN input not connected
+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
int main() {
unsigned char potLevel = 0x80; // Initial digital potentiometer value
- g_chipSelect = 1; // Device is disabled
+#if defined(__MANAGE_CS__)
+ g_chipSelect.write(1); // Disable chip
+#endif // __MANAGE_CS__
// Launch available indicator
g_available.attach(&AvailableIndicator, 2.0);
@@ -39,44 +50,66 @@
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_chipSelect.write(0);
g_digitalPot.Reset();
- g_chipSelect.write(1);
break;
default:
std::cout << "Invalid user choice\r" << std::endl;

