/home/daqweb/fgddaq/c8051/generic-p0d.c File Reference

#include <stdio.h>
#include "mscbemb.h"
#include "Devices/Time.h"
#include "Protocols/SmaRTC.h"

Defines

#define ALL_RESET   0xF

Functions

unsigned char user_func (unsigned char *data_in, unsigned char *data_out)
unsigned char user_read (unsigned char index)
void user_write (unsigned char index) reentrant
void PulseReset (unsigned char ch)
void user_init (unsigned char init)
void user_loop (void)

Variables

unsigned char idata _n_sub_addr = 1
char code node_name [] = "P0DPS"
char idata svn_rev_code [] = "$Rev: 959 $"
struct {
   unsigned char   error
   unsigned char   control
   unsigned char   status
   unsigned char   active
   unsigned char   v5mon
   unsigned char   v15mon
   unsigned long   mytime
   char   date [24]
user_data
MSCB_INFO_VAR code vars []
MSCB_INFO_VARvariables = vars
sbit RESET_1 = P1 ^ 0
sbit RESET_2 = P1 ^ 1
sbit RESET_3 = P1 ^ 2
sbit RESET_4 = P1 ^ 3
sbit V5MON_1 = P1 ^ 4
sbit V5MON_2 = P1 ^ 5
sbit V5MON_3 = P1 ^ 6
sbit V5MON_4 = P1 ^ 7
sbit V15MON_1 = P2 ^ 0
sbit V15MON_2 = P2 ^ 1
sbit V15MON_3 = P2 ^ 2
sbit V15MON_4 = P2 ^ 3
sbit ACTIVE_1 = P2 ^ 4
sbit ACTIVE_2 = P2 ^ 5
sbit ACTIVE_3 = P2 ^ 6
sbit ACTIVE_4 = P2 ^ 7
sbit DATA_OEn = P0 ^ 3
sbit CNTRL_OEn = P0 ^ 0
SYS_INFO sys_info

Define Documentation

#define ALL_RESET   0xF


Function Documentation

void PulseReset ( unsigned char  ch  ) 

00092 {
00093   if (ch == ALL_RESET) {
00094     P1 |= 0x0F;
00095     delay_us(100);
00096     P1 &= ~0x0F;
00097   } else {
00098     P1 |= (1<<ch);
00099     delay_us(100);
00100     P1 &= ~(1<<ch);
00101   }
00102 
00103 }

unsigned char user_func ( unsigned char *  data_in,
unsigned char *  data_out 
)

00319 {
00320    /* echo input data */
00321    data_out[0] = data_in[0];
00322    data_out[1] = data_in[1];
00323    return 2;
00324 }

void user_init ( unsigned char  init  ) 

00109 {
00110   char xdata i;
00111 
00112   /* Format the SVN and store this code SVN revision into the system */
00113   for (i = 0; i < 4; i++) {
00114     if (svn_rev_code[6 + i] < 48) {
00115       svn_rev_code[6 + i] = '0';
00116     }
00117   }
00118   sys_info.svn_revision = (svn_rev_code[6] - '0') * 1000 +
00119     (svn_rev_code[7] - '0') * 100 +
00120     (svn_rev_code[8] - '0') * 10 + (svn_rev_code[9] - '0');
00121 
00122   if (init); 
00123   
00124 // Group setting
00125   sys_info.group_addr  = 600;
00126 
00127 
00128 // Set Output Port in PP
00129  P1MDOUT |= 0x0F;
00130  RESET_1 = RESET_2 = RESET_3 = RESET_4 = 0;
00131 
00132 // Set Input V5Monx port in OD
00133  P1MDOUT &= ~0xF0;
00134  V5MON_1 = V5MON_2 = V5MON_3 = V5MON_4 = 0;
00135 
00136 // Set Input V15Monx port in OD
00137  P2MDOUT &= ~0x0F;
00138  V15MON_1 = V15MON_2 = V15MON_3 = V15MON_4 = 0;
00139 
00140 // Set Input Activex port in OD
00141  P2MDOUT &= ~0xF0;
00142  ACTIVE_1 = ACTIVE_2 = ACTIVE_3 = ACTIVE_4 = 0;
00143 
00144 // Enable Buffers
00145  P0MDOUT &= ~0x09;    // Set OD for Enable
00146  DATA_OEn  = CNTRL_OEn = 0;                     // Enable buffers
00147 
00148 // Initialize registers
00149  user_data.error = 0;
00150  user_data.control = 0;
00151  user_data.status = 0;
00152  user_data.active = 0;
00153  user_data.v5mon = 0;
00154  user_data.v15mon = 0;
00155 
00156 // Init internal RTClock 
00157  SmaRTCInit();
00158 
00159    if (init) {
00160   }
00161 }

void user_loop ( void   ) 

00202 {
00203   unsigned char v5mon, v15mon, active;
00204   unsigned long int ltime;
00205   char xdata mydate[12];
00206 
00207 // Read Monitors
00208   v5mon = ((P1 & 0xF0) >> 4);
00209   v15mon = (P2 & 0x0F);
00210   active = ((P2 & 0xF0) >> 4);
00211 
00212 // Publish results
00213   DISABLE_INTERRUPTS;
00214   user_data.v5mon = v5mon;
00215   user_data.v15mon = v15mon;
00216   user_data.active = active;
00217   ENABLE_INTERRUPTS;
00218 
00219 // Get RTClock  
00220   ltime = SmaRTCRead();
00221   user_data.mytime = ltime;
00222   ascTime(&mydate[0], ltime);
00223   sprintf(user_data.date, "%s", mydate);
00224 
00225 // Slowdown a bit
00226   delay_ms(250);
00227 
00228   // Show some action
00229   led_blink(1, 1, 250);
00230 }

unsigned char user_read ( unsigned char  index  ) 

00311 {
00312    if (index);
00313    return 0;
00314 }

void user_write ( unsigned char  index  ) 

00387 {
00388   rCSR = user_data.status;
00389   if (index == IDXCTL) {
00390     rCTL = user_data.control;
00391   } // IDXCTL
00392 
00393   //
00394   //-- EE Page function
00395   if (index == IDXEEP_CTL) EEP_CTR_Flag = 1;
00396 }


Variable Documentation

unsigned char idata _n_sub_addr = 1

unsigned char active

sbit ACTIVE_1 = P2 ^ 4

sbit ACTIVE_2 = P2 ^ 5

sbit ACTIVE_3 = P2 ^ 6

sbit ACTIVE_4 = P2 ^ 7

sbit CNTRL_OEn = P0 ^ 0

unsigned char control

sbit DATA_OEn = P0 ^ 3

char date[24]

unsigned char error

unsigned long mytime

char code node_name[] = "P0DPS"

sbit RESET_1 = P1 ^ 0

sbit RESET_2 = P1 ^ 1

sbit RESET_3 = P1 ^ 2

sbit RESET_4 = P1 ^ 3

unsigned char status

char idata svn_rev_code[] = "$Rev: 959 $"

SYS_INFO sys_info

struct { ... } user_data

unsigned char v15mon

sbit V15MON_1 = P2 ^ 0

sbit V15MON_2 = P2 ^ 1

sbit V15MON_3 = P2 ^ 2

sbit V15MON_4 = P2 ^ 3

unsigned char v5mon

sbit V5MON_1 = P1 ^ 4

sbit V5MON_2 = P1 ^ 5

sbit V5MON_3 = P1 ^ 6

sbit V5MON_4 = P1 ^ 7

MSCB_INFO_VAR* variables = vars

MSCB_INFO_VAR code vars[]

Initial value:

 {

   1, UNIT_BYTE,            0, 0,            0, "Error",   &user_data.error,     
   1, UNIT_BYTE,            0, 0,            0, "Control", &user_data.control,   
   1, UNIT_BYTE,            0, 0,            0, "Status",  &user_data.status,    
   1, UNIT_BYTE,            0, 0,            0, "Active",  &user_data.active,    
   1, UNIT_BYTE,            0, 0,            0, "V5_Mon",  &user_data.v5mon,     
   1, UNIT_BYTE,            0, 0,            0, "V15_Mon", &user_data.v15mon,    
   4, UNIT_BYTE,            0, 0, MSCBF_HIDDEN, "BinDate", &user_data.mytime,    
  24, UNIT_STRING,          0, 0, MSCBF_HIDDEN, "Date",    &user_data.date[0],   
  0
}


Generated on 10 Jun 2013 for FGDC8051 by  doxygen 1.4.7