protegemed, aquisição via A/D simples utilizando interrupção do timer

Dependencies:   EthernetInterface NTPClient mbed-rtos mbed

Fork of ptgm_semDMA by Marcelo Rebonatto

Revision:
0:fac116e94d44
Child:
1:8129536051df
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Codes/Capture.cpp	Tue Jan 05 11:47:35 2016 +0000
@@ -0,0 +1,102 @@
+/*
+ * Capture.h
+ *
+ *  Created on: 
+ *      Author: 
+ */
+#include "Capture.h"
+
+//Semaphore Capture::m_CaptureSemaphore(1); //used to alert the capture thread about a ready capture 
+//int Capture::m_BufferIndex;
+
+//__attribute((section("AHBSRAM1"),aligned)) dmaLinkedListNode Capture::m_Nodes[2];// __attribute__((section("AHBSRAM0"))); //this list holds the buffer configuration for the DMA peripheral
+__attribute((section("AHBSRAM1"),aligned)) short int Capture::m_AdcBuffers[NUMBER_OF_CHANNELS][NUMBER_OF_SAMPLES];// __attribute__((section("AHBSRAM0")));
+Serial rfid_serial(p28,p27);
+
+AnalogIn AdcChannel0(CHANNEL0);
+AnalogIn AdcChannel1(CHANNEL1);
+AnalogIn AdcChannel2(CHANNEL2);
+AnalogIn AdcChannel3(CHANNEL3);
+AnalogIn AdcChannel4(CHANNEL4);
+AnalogIn AdcChannel5(CHANNEL5);
+
+//ADC_CONVERT(m_AdcBuffers[m_BufferIndex][nsamples][nchannel]);
+
+short int Capture::GetValue(int nsamples, int nchannel)
+{
+    return m_AdcBuffers[nchannel][nsamples];
+}
+
+void Capture::PutValue(int nsamples, int nchannel, short int value)
+{
+    m_AdcBuffers[nchannel][nsamples] = value;
+}
+
+void Capture::CopyBuffer(int channel, short int *dest)
+{
+    memcpy(dest, &m_AdcBuffers[channel][0], sizeof(short int) * NUMBER_OF_SAMPLES);
+    /*
+    for(int i=0;i<NUMBER_OF_SAMPLES;i++)
+    {
+        dest[i] = GetValue(i,channel);
+    }
+    */
+}
+
+
+void Capture::AcquireValues(){
+    int i;
+    
+    for(i=0; i < NUMBER_OF_SAMPLES; i++){
+         m_AdcBuffers[0][i] = ADC_CONVERT(AdcChannel0.read_u16());
+         //wait_us(10);
+         m_AdcBuffers[1][i] = ADC_CONVERT(AdcChannel1.read_u16());
+         //wait_us(10);
+         m_AdcBuffers[2][i] = ADC_CONVERT(AdcChannel2.read_u16());
+         //wait_us(10);
+         m_AdcBuffers[3][i] = ADC_CONVERT(AdcChannel3.read_u16());
+         //wait_us(10);
+         m_AdcBuffers[4][i] = ADC_CONVERT(AdcChannel4.read_u16());
+         //wait_us(10);
+         m_AdcBuffers[5][i] = ADC_CONVERT(AdcChannel5.read_u16());
+         wait_us(13);
+    }    
+}
+
+//void Capture::Initialize(){     //AnalogIn adcChannel0; }
+
+
+void Capture::ReadRFID(int channel,char *rfid)
+{
+    
+    char cmd[4];
+    cmd[0] = 'S';
+    cmd[1] = '0'+channel;
+    cmd[2] = '\n';
+    cmd[3] = '\0';
+    
+    //send
+    rfid_serial.puts(cmd);
+    
+    //receive
+    char ch=0;
+    char ans[10];
+    int cnt=0;
+    int tmout=1000;
+    while(ch != '\n' && tmout-- && cnt<9)
+    {
+        if(rfid_serial.readable())
+        {
+            ch = rfid_serial.getc();
+            if(!((ch>='0' && ch<='9') || (ch >= 'A' && ch <= 'F')))ch='0';
+            ans[cnt++] = ch;
+        }
+        else
+            wait_ms(1);
+        
+    }
+    ans[cnt-1] = '\0';
+    for(int i=0;i<9;i++)
+        rfid[i] = ans[i];
+    
+}
\ No newline at end of file