Test

Dependencies:   mbed-dev-OS5_10_4

Revision:
0:014fad4dfb9d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MySources/AdGlobals.cpp	Fri Aug 07 07:24:21 2020 +0000
@@ -0,0 +1,158 @@
+/*-------------------------------------------------------------------------------
+Programm Name: AdGlobals.cpp
+Version:       1.0
+Sprache:       C++
+Compiler:      mbed
+Autor:         PS
+Copyright:     PS
+         
+
+Funktion:      Globale Variablen für den A/D Wandlerzugriff
+
+30.06.2017: 
+
+-------------------------------------------------------------------------------*/
+#include "Headers.h"
+
+
+// I/O's für den A/D Wandler
+DigitalOut AdcSck(PTC10);
+DigitalIn AdcMiso(PTC11);
+DigitalOut AdcMosi(PTB11);
+
+InterruptIn AdcRdy0(PTB10);
+InterruptIn AdcRdy1(PTC9);
+
+DigitalOut Adc0Cs(PTB3);
+DigitalOut Adc1Cs(PTC8);
+
+DigitalIn AdcReset(PTB2);
+
+
+// Globale Variablen
+//-------------------------------------
+uint8_t g_TempDelay;
+uint8_t g_AReadTemp;
+uint8_t g_nAdResultCount;
+
+
+bool g_fAdConversion; 
+bool g_fRdy0, g_fRdy1;
+
+
+AD_VAL *AdVal;
+
+UINT8 g_fARead[8];
+uint8_t g_nAdSetPos, g_nAdGetPos;
+int g_nAdCount;
+UINT32 m_AdTemp[8];
+
+
+/*-------------------------------------------------------------------------------
+Schreibt die Inits auf beide AD Wandler
+-------------------------------------------------------------------------------*/
+void Ad7739CommonWrite(uint8_t b)
+{
+  uint8_t mask = 0x80;
+  AdSckUp();
+  Ad0CsDown();
+  Ad1CsDown();
+  short_delay(2);
+  do
+  {
+      AdSckDown();
+      short_delay(2);  // min. 50ns SCK low
+      (b & mask) ? (AdMosiUp()) : (AdMosiDown());
+      short_delay(2);  // min. 30ns bevor die Flanke hochgeht
+       AdSckUp();
+      short_delay(2);  // min. 50ns SCK high
+  }
+  while(mask >>= 1);
+//  AdMosiUp();
+  Ad0CsUp();
+  Ad1CsUp();
+}
+/*-------------------------------------------------------------------------------
+-------------------------------------------------------------------------------*/
+void Ad7739OutWrite(uint8_t b, int Wandler)
+{
+    uint8_t mask = 0x80;
+    AdSckUp();
+    if(Wandler == 0)
+        Ad0CsDown();
+    else
+        Ad1CsDown();
+    short_delay(2);  // min. 50ns SCK low
+    do
+    {
+        AdSckDown();
+        short_delay(2);  // min. 50ns SCK low
+        (b & mask) ? (AdMosiUp()) : (AdMosiDown());
+        short_delay(2);  // min. 30ns bevor die Flanke hochgeht
+        AdSckUp();
+        short_delay(2);  // min. 50ns SCK high
+    }
+    while(mask >>= 1);
+    Ad0CsUp();
+    Ad1CsUp();
+    AdMosiDown();
+}
+/*-------------------------------------------------------------------------------
+Startet einen einzelnen A/D Wandler. Wenn Mode = 0, dann single Mode, wenn Mode 
+= 1, dann continous Mode. 
+-------------------------------------------------------------------------------*/
+void Ad7739Start(uint8_t Chn, uint8_t Wandler, uint8_t Mode)
+{
+    
+    if(Mode == 0)   // Single Mode
+    {
+        Ad7739OutWrite(AD7739_WRITE_OP(AD7739_CHANNEL(AD7739_ADDR_MODE, Chn)), Wandler);
+        Ad7739OutWrite(0x42, Wandler);   // 0x26 ist continous mode
+    }
+    else // continuous
+    {
+        Ad7739OutWrite(AD7739_WRITE_OP(AD7739_CHANNEL(AD7739_ADDR_MODE, Chn)), Wandler);
+        Ad7739OutWrite(0x2E, Wandler);   // 0x26 ist continous mode0x08=Dump Mode, 0x04: Continous Read
+        Ad7739OutWrite(0x48, Wandler);   // the first write of 48 start the continous read mode
+//        g_nIRead = 0;
+        AdMosiDown(); // muss unten sein, da sonst der Continous Mode gestoppt werden kann
+
+    }
+    __enable_irq();             // 2017-05-31
+
+}
+/*-------------------------------------------------------------------------------
+-------------------------------------------------------------------------------*/
+void Ad7739CommonStart(uint8_t Chn, uint8_t Mode)
+{
+    if(Mode == 0)   // Single Mode
+    {
+        Ad7739CommonWrite(AD7739_WRITE_OP(AD7739_CHANNEL(AD7739_ADDR_MODE,Chn)));
+        Ad7739CommonWrite(0x42);   // 0x26 ist continous mode
+    }
+    else // continuous
+    {
+        Ad7739CommonWrite(AD7739_WRITE_OP(AD7739_CHANNEL(AD7739_ADDR_MODE, Chn)));
+        Ad7739CommonWrite(0x2E);   // 0x26 ist continous mode
+        Ad7739CommonWrite(0x48);   // 0x26 ist continous mode
+    }
+    
+    g_fAdConversion = true;    // 2017-05-31
+    __enable_irq();             // 2017-05-31
+
+}
+
+/*-------------------------------------------------------------------------------
+-------------------------------------------------------------------------------*/
+void Ad7739Stop(void)
+{
+    // single
+    /* return; */
+
+    // continous
+    Ad7739CommonWrite(AD7739_WRITE_OP(AD7739_ADDR_MODE));
+    Ad7739CommonWrite(0x02);
+    
+    g_fAdConversion = false;    // 2017-05-31
+    __enable_irq();             // 2017-05-31
+}