MaternoFetal
Fork of mbed-os-example-tcp-server by
Revision 1:b431d2e16f4f, committed 2018-05-17
- Comitter:
- edwinnoriega11
- Date:
- Thu May 17 17:21:29 2018 +0000
- Parent:
- 0:ddb5698aa782
- Commit message:
- ADS1299_MATERNO-FETAL
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ADS1299.h Thu May 17 17:21:29 2018 +0000 @@ -0,0 +1,59 @@ +// +// ADS1299.h +// Created by Joel Murphy, Summer 2K13 +// Ported from Conor Russomanno's Arduino library +// +// + +#ifndef _ADS1299_h +#define _ADS1299_h +//#include "mbed.h" + +//SPI Command Definition Byte Assignments (Datasheet, p35) +#define _WAKEUP 0x02 // Wake-up from standby mode +#define _STANDBY 0x04 // Enter Standby mode +#define _RESET 0x06 // Reset the device +#define _START 0x08 // Start and restart (synchronize) conversions +#define _STOP 0x0A // Stop conversion +#define _RDATAC 0x10 // Enable Read Data Continuous mode (default mode at power-up) +#define _SDATAC 0x11 // Stop Read Data Continuous mode +#define _RDATA 0x12 // Read data by command; supports multiple read back +//#define _RREG 0x20 // (00100000) is the first opcode that the address must be added to for RREG communication +//#define _WREG 0x40 // 01000000 in binary (Datasheet, p35) + + +#define RREG 0x20 +#define WREG 0x40 + +//Register Addresses +#define ID 0x00 +#define CONFIG1 0x01 +#define CONFIG2 0x02 +#define CONFIG3 0x03 +#define LOFF 0x04 +#define CH1SET 0x05 +#define CH2SET 0x06 +#define CH3SET 0x07 +#define CH4SET 0x08 +#define CH5SET 0x09 +#define CH6SET 0x0A +#define CH7SET 0x0B +#define CH8SET 0x0C +#define BIAS_SENSP 0x0D +#define BIAS_SENSN 0x0E +#define LOFF_SENSP 0x0F +#define LOFF_SENSN 0x10 +#define LOFF_FLIP 0x11 +#define LOFF_STATP 0x12 +#define LOFF_STATN 0x13 +#define GPIO 0x14 +#define MISC1 0x15 +#define MISC2 0x16 +#define CONFIG4 0x17 + +// int stat; // used to hold the status register + // char regData [24]; // array used when reading register data + // long channelData [8]; // array used when reading channel data + // bool verbose; // turn on/off Serial feedback + +#endif
--- a/main.cpp Mon Oct 30 16:59:55 2017 +0000
+++ b/main.cpp Thu May 17 17:21:29 2018 +0000
@@ -2,37 +2,230 @@
#include "EthernetInterface.h"
#include "TCPServer.h"
#include "TCPSocket.h"
+#include "ADS1299.h"
+//SPI device(SPI_MOSI, SPI_MISO, SPI_SCK);
+SPI device(PC_12, PC_11, PC_10);
+Serial pc(SERIAL_TX, SERIAL_RX);
+DigitalOut CS(D10);
+DigitalOut ledG(LED1);
+DigitalOut ledR(LED3);
+InterruptIn DDRY(D15);
+DigitalOut reset(D14);
+DigitalOut START(D9);
+
+#define buffe 356
+
+const uint32_t lenght_char=(buffe*3)+3;
+unsigned char b1[lenght_char],*b2[lenght_char];
+uint32_t ciclo,_m;
+bool a,bandera;
+
+int leer(void) //concatena 24 bits
+{
+ uint32_t rdata;
+ rdata = device.write(0);
+ rdata<<=8;
+ rdata|=device.write(0);
+ rdata<<=8;
+ rdata|=device.write(0);
+ return rdata;
+}
+
+int complement(uint32_t ch)// conversion twos complement
+{
+ int32_t sch;
+ if(ch>0x7FFFFF) {
+ ch|=0xFF800000;
+ ch--;
+ ch=~ch;
+ sch = -ch;
+ } else if(ch<=0x7FFFFF) {
+ sch = ch;
+ }
+ sch+= 0x7FFFFF; //offset, solo valores positivos
+ return sch;
+}
+
+int buffy(uint32_t _ch)
+{
+ //_ch+=0x7FFFFF;
+ uint8_t c1,c2,c3;
+ c1=_ch>>16;
+ b1[ciclo]=c1;
+ ciclo++;
+ c2=_ch>>8;
+ b1[ciclo]=c2;
+ ciclo++;
+ c3=_ch;
+ b1[ciclo]=c3;
+ ciclo++;
+ return 0;
+}
+
+void send_data()
+{
+ if (bandera == 0) {
+ buffy(0xffffff);
+ bandera|=1;
+ }
+
+ uint32_t statu,ch1,ch2,ch3,ch4,ch5;
+ int32_t sch2;
+ // uint8_t c1,c2,c3;
+ statu = leer();
+ ch1 = leer();
+ ch2 = leer();
+ ch3 = leer();
+ ch4 = leer();
+ ch5 = leer();
+
+ // sch2=complement(ch2);
+ // buffy(sch2);
+ //sch2=complement(ch3);
+ // buffy(0);
+ //sch2=complement(ch4);
+ //buffy(0);
+ //sch2=complement(ch5);
+ //buffy(0);
+
+ sch2=complement(ch2);
+ buffy(sch2);
+ sch2=complement(ch3);
+ buffy(sch2);
+ sch2=complement(ch4);
+ buffy(sch2);
+ sch2=complement(ch5);
+ buffy(sch2);
+
+ if(ciclo>=lenght_char) {
+ bandera&=~bandera;
+ memcpy(&b2, &b1, lenght_char);
+ ciclo=0;
+ a=1;
+ }
+
+}
int main()
{
- printf("TCP server example\n");
-
+
+ pc.printf("hi, ");
+////////////seteo de ethernet
EthernetInterface eth;
eth.connect();
-
- printf("The Server IP address is '%s'\n", eth.get_ip_address());
-
+ pc.printf("The Server IP address is '%s' ", eth.get_ip_address());
TCPServer srv;
TCPSocket client_sock;
SocketAddress client_addr;
- char *buffer = new char[256];
-
- /* Open the server on ethernet stack */
srv.open(ð);
-
- /* Bind the HTTP port (TCP 80) to the server */
- srv.bind(eth.get_ip_address(), 23);
-
- /* Can handle x simultaneous connections */
+ srv.bind(eth.get_ip_address(), 8085);
srv.listen(1);
+ ledG = 1;
+ srv.accept(&client_sock, &client_addr);
+ pc.printf("Accepted %s:%d ", client_addr.get_ip_address(),
+ client_addr.get_port());
+
+ ///////////////////Wake up ADS
+ // pc.printf("ADS1299- Nucleo -F767ZI \n");
+ device.format(8,1);
+ device.frequency(4000000);
+ START=0;
+ reset=1;
+ wait(0.2);
+ reset=0;
+ CS=1;
+ wait_us(10);
+ reset = !reset;
+ wait_us(40);
+/////////////////////////////////////
+
+
+
+/////////////SDATAC para escribir sobre registros
+ CS = 0;
+ wait_us(1);
+ device.write(0x11);
+ wait_us(4);//tsccs = 4 Tclk
+ CS = 1;
+ wait_us(2);//tsch = 2 Tclk
+//////////////////////////////////////////////////////////
+
+ ////////////leer ID
+ int _id;
+ CS = 0;
+ wait_us(1);
+ device.write(RREG|ID); //read
+ device.write(0x00);
+ _id=device.write(0x00);
+ wait_us(4);
+ CS=1;
+ wait_us(2);
+////////////////////////
+ pc.printf("ID register: %X\n",_id);
+
+
- srv.accept(&client_sock, &client_addr);
- printf("Accepted %s:%d\n", client_addr.get_ip_address(),
- client_addr.get_port());
- strcpy(buffer, "Hello \n\r");
- client_sock.send(buffer, strlen(buffer));
- client_sock.recv(buffer, 256);
-
+////////// SETEAR CONFIGURACION (todos los registros)
+ CS = 0;
+ wait_us(5);
+ device.write(WREG|CONFIG1); //write desde config 1
+ device.write(0x16); // escribir sobre 23 registros
+ device.write(0x94); //CONFIG1
+ device.write(0xc0); //CONFIG2 //c0 normal //d0 Test source
+ device.write(0xe0); //CONFIG3
+ device.write(0x00); //LOFF
+ device.write(0x68); //CH1SET //ref channel
+ device.write(0x60); //CH2SET //65 cuadrada //60 electrodo
+ device.write(0x60); //CH3SET
+ device.write(0x60); //CH4SET
+ device.write(0x60); //CH5SET // si no los uso 81
+ device.write(0x81); //CH6SET
+ device.write(0x81); //CH7SET
+ device.write(0x81); //CH8SET
+ device.write(0x00); //BIAS_SENSP
+ device.write(0x00); //BIAS_SENSN
+ device.write(0x00); //LOFF_SENSP
+ device.write(0x00); //LOFF_SENSN
+ device.write(0x00); //LOFF_FLIP
+ device.write(0x00); //LOFF_STATP
+ device.write(0x00); //LOFF_STATN
+ device.write(0x0f); //GPIO
+ device.write(0x20); //MISC1
+ device.write(0x00); //MISC2
+ device.write(0x00);//CONFIG4
+ wait_us(4);
+ CS=1;
+ wait_us(2);
+///////////////////////////////////////
+
+////////////////INICIO A _RDATAC
+ CS = 0;
+ wait_us(1);
+ device.write(_RDATAC);
+ wait_us(4);
+ CS=1;
+ wait_us(2);
+ START=1;
+ CS = 0;
+ wait_ms(10);//tsettle
+//////////////////////////
+// int _by=0;
+ // client_sock.recv(reading, 8);
+ // client_sock.set_blocking(false);
+ // DDRY.mode(PullUp);
+//NVIC_SetPriority(TIMER3_IRQn, 200);
+ send_data();
+ DDRY.fall(&send_data);
+ // DDRY.disable_irq();
+ wait_ms(buffe);
+ // restart.attach(&send_data, 0.001);
+ while(1) {
+ while (a==1) {
+ client_sock.send(&b2, lenght_char);
+ a=0;
+ }
+ // fflush();
+ __wfi();
+ }
client_sock.close();
- delete[] buffer;
-}
+}
\ No newline at end of file
--- a/mbed-os.lib Mon Oct 30 16:59:55 2017 +0000 +++ b/mbed-os.lib Thu May 17 17:21:29 2018 +0000 @@ -1,1 +1,1 @@ -https://github.com/ARMmbed/mbed-os/#e62a1b9236b44e70ae3b0902dc538481c04d455b +https://github.com/ARMmbed/mbed-os/#182bbd51bc8d1b6217477c2b5de3f1d0c5e6249f
