Home/Support/Support Forum/Programming for SAMPLING two 12 BITS CHANNELS AT 500 Hz in Dynamic C using RCM 3700
Welcome to Digi Forum, where you can ask questions and receive answers from other members of the community.

Programming for SAMPLING two 12 BITS CHANNELS AT 500 Hz in Dynamic C using RCM 3700

0 votes
Hi Eveeryone
I am looking for Programming for SAMPLING two 12 BITS CHANNELS AT 500 Hz in Dynamic C using RCM 3700.
asked Oct 14, 2015 in Rabbit Software by manishpatil New to the Community (0 points)

Please log in or register to answer this question.

1 Answer

0 votes
Dynamic C includes a bunch of samples in the RCM3700/ADC folder for sampling analog channels. What have you been able to get working, and what are you currently stuck on? Can you read a single 12-bit channel? Is it the sampling frequency that's an issue? Storage of samples?
answered Oct 14, 2015 by TomCollins Veteran of the Digi Community (1,362 points)
Thanks for reply. Let recheck one more time. within two days I will get back to u. Below program I wrote.
#class auto

#define DS1 0x40    //led, port F bit 6 bitmask
#define DS2 0x80    //led, port F bit 7 bitmask

/***********************************
 * Configuration Section           *
 * ---------------------           *
 * All fields in this section must *
 * be altered to match your local  *
 * network settings.               *
 ***********************************/
/*
 * Pick the predefined TCP/IP configuration for this sample.  See
 * LIB\TCPIP\TCP_CONFIG.LIB for instructions on how to set the
 * configuration.
 */
#define TCPCONFIG 1
#define _PRIMARY_STATIC_IP        "192.168.0.40"
    #define _PRIMARY_NETMASK        "255.255.255.0"
    #ifndef MY_NAMESERVER
        #define MY_NAMESERVER        "10.10.6.1"
    #endif
    #ifndef MY_GATEWAY
        #define MY_GATEWAY            "192.168.0.1"
    #endif
/*
 * TCP/IP modification - reduce TCP socket buffer
 * size, to allow more connections. This can be increased,
 * with increased performance, if the number of sockets
 * are reduced.  Note that this buffer size is split in
 * two for TCP sockets--1024 bytes for send and 1024 bytes
 * for receive.
 */
#define TCP_BUF_SIZE 2048

/*
 * Web server configuration
 */

/*
 * Define the number of HTTP servers and socket buffers.
 * With tcp_reserveport(), fewer HTTP servers are needed.
 */
#define HTTP_MAXSERVERS 2
#define MAX_TCP_SOCKET_BUFFERS 2

/*
 * Our web server as seen from the clients.
 * This should be the address that the clients (netscape/IE)
 * use to access your server. Usually, this is your IP address.
 * If you are behind a firewall, though, it might be a port on
 * the proxy, that will be forwarded to the Rabbit board. The
 * commented out line is an example of such a situation.
 */
#define REDIRECTHOST        _PRIMARY_STATIC_IP
// #define REDIRECTHOST    "my.host.com:8080"

/********************************
 * End of configuration section *
 ********************************/

/*
 *  REDIRECTTO is used by each ledxtoggle cgi's to tell the
 *  browser which page to hit next.  The default REDIRECTTO
 *  assumes that you are serving a page that does not have
 *  any address translation applied to it.
 *
 */

#define REDIRECTTO         "http://" REDIRECTHOST "/index.shtml"

#memmap xmem
#use "dcrtcp.lib"
#use "http.lib"

/*
 *  Notice that we have ximported in the source code for
 *  this program.  This allows us to <!--#include file="ssi.c"-->
 *  in the pages/showsrc.shtml.
 *
 */

#ximport "samples/rcm3700/tcpip/pages/browseled.shtml"     index_html
#ximport "samples/rcm3700/tcpip/pages/rabbit1.gif"        rabbit1_gif
#ximport "samples/rcm3700/tcpip/pages/led1on.gif"          led1on_gif
#ximport "samples/rcm3700/tcpip/pages/led1off.gif"         led1off_gif
#ximport "samples/rcm3700/tcpip/pages/led2on.gif"          led2on_gif
#ximport "samples/rcm3700/tcpip/pages/led2off.gif"         led2off_gif
#ximport "samples/rcm3700/tcpip/pages/button.gif"         button_gif
#ximport "samples/rcm3700/tcpip/pages/showsrc.shtml"      showsrc_shtml
#ximport "samples/rcm3700/tcpip/browseled.c"              browseled_c

/*
 *  In this case the .html is not the first type in the
 *  type table.  This causes the default (no extension)
 *  to assume the shtml_handler.
 *
 */

/* the default for / must be first */
SSPEC_MIMETABLE_START
    SSPEC_MIME_FUNC(".shtml", "text/html", shtml_handler),
    SSPEC_MIME(".html", "text/html"),
    SSPEC_MIME(".gif", "image/gif"),
    SSPEC_MIME(".cgi", "")
SSPEC_MIMETABLE_END

/*
 *  Each ledx contains a text string that is either
 *  "ledon.gif" or "ledoff.gif"  This string is toggled
 *  each time the ledxtoggle.cgi is requested from the
 *  browser.
 *
 */

char led1[15];
char led2[15];


int led1toggle(HttpState* state)
{
   if (strcmp(led1,"led1on.gif")==0)
      strcpy(led1,"led1off.gif");
   else
      strcpy(led1,"led1on.gif");

   cgi_redirectto(state,REDIRECTTO);
   return 0;
}

int led2toggle(HttpState* state)
{
   if (strcmp(led2,"led2on.gif")==0)
      strcpy(led2,"led2off.gif");
   else
      strcpy(led2,"led2on.gif");

   cgi_redirectto(state,REDIRECTTO);
   return 0;
}


SSPEC_RESOURCETABLE_START
    SSPEC_RESOURCE_XMEMFILE("/", index_html),
    SSPEC_RESOURCE_XMEMFILE("/index.shtml", index_html),
    SSPEC_RESOURCE_XMEMFILE("/showsrc.shtml", showsrc_shtml),
    SSPEC_RESOURCE_XMEMFILE("/rabbit1.gif", rabbit1_gif),
    SSPEC_RESOURCE_XMEMFILE("/led1on.gif", led1on_gif),
    SSPEC_RESOURCE_XMEMFILE("/led1off.gif", led1off_gif),
       SSPEC_RESOURCE_XMEMFILE("/led2on.gif", led2on_gif),
        SSPEC_RESOURCE_XMEMFILE("/led2off.gif", led2off_gif),
    SSPEC_RESOURCE_XMEMFILE("/button.gif", button_gif),
    SSPEC_RESOURCE_XMEMFILE("browseled.c", browseled_c),
    SSPEC_RESOURCE_ROOTVAR("led1", led1, PTR16, "%s"),
    SSPEC_RESOURCE_ROOTVAR("led2", led2, PTR16, "%s"),
    SSPEC_RESOURCE_FUNCTION("/led1tog.cgi", led1toggle),
    SSPEC_RESOURCE_FUNCTION("/led2tog.cgi", led2toggle),
SSPEC_RESOURCETABLE_END


void update_outputs()
{
    auto int value;

    value=PFDRShadow&0x3F;   //on state for leds

    /* update O0 */
   costate
     {
         BitWrPortI(PBDR, &PBDRShadow, 0, 5); // chip select low
         sent [1]=160;                       // channel 0
        for(j = 0;j < 10;j++);
        SPIWrRd(sent,received, 3);
        for(j = 0;j < 10;j++);
         BitWrPortI(PBDR, &PBDRShadow, 1, 5);     // chip select high
              i=(received[1]%16)*256+received [2];
              printf("ADC 0value: %d    ", i);
        serDputc(received[1]%16);
        serDputc(received[2]);
      BitWrPortI(PBDR, &PBDRShadow, 0, 5); // chip select low
         sent [1]=224;                   //channnel 1
        for(j = 0;j < 10;j++);
        SPIWrRd(sent,received, 3);
        for(j = 0;j < 10;j++);
         BitWrPortI(PBDR, &PBDRShadow, 1, 5);     // chip select high
              i=(received[1]%16)*256+received [2];
              printf("ADC 0value: %d    ", i);
        serDputc(received[1]%16);
        serDputc(received[2]);
      waitfor(DelayMs(2));


    /* update O1 */
   }
 costate
{    if (strcmp(led2,"led2on.gif"))
  //        value|=DS2;
       BitWrPortI(PADR, &PADRShadow,1, 4);    //PA6=0
      else     BitWrPortI(PADR, &PADRShadow,0, 4);    //PA6=0
    WrPortI(PFDR, &PFDRShadow, value);
}
}

main()
{

    //brdInit();                //initialize board for this demo
   WrPortI(SPCR,&SPCRShadow,0x84);    //PortA  outputs

    BitWrPortI(PBDR, &PBDRShadow,0, 6);    //PA6=0
   BitWrPortI(PBDR, &PADRShadow,0, 4);    //PA6=0

   strcpy(led1,"led1on.gif");
   strcpy(led2,"led2off.gif");

   sock_init();
   http_init();
   tcp_reserveport(80);

   while (1)
   {
       update_outputs();
      http_handler();

    }
}

#nodebug
...