utils.c File Reference

#include "inc/freeEMS.h"
#include "inc/commsISRs.h"
#include "inc/utils.h"

Include dependency graph for utils.c:

Go to the source code of this file.

Defines

#define UTILS_C

Functions

void setupPagedRAM (unsigned char bool)
void resetToNonRunningState ()
void adjustPWM ()
void sampleEachADC (ADCArray *Arrays)
void sampleLoopADC (ADCArray *Arrays)
void sleep (unsigned short ms)
void sleepMicro (unsigned short us)
unsigned char checksum (unsigned char *block, unsigned short length)
unsigned short stringCopy (unsigned char *dest, unsigned char *source)


Define Documentation

#define UTILS_C

Definition at line 24 of file utils.c.


Function Documentation

void adjustPWM ( void   ) 

Definition at line 63 of file utils.c.

References ATD0DR0, ATD0DR1, ATD0DR2, ATD0DR3, ATD0DR4, PWMDTY0, PWMDTY1, PWMDTY2, PWMDTY3, and PWMDTY4.

Referenced by main().

00063                 {
00064         PWMDTY0 = ATD0DR0 >> 2; // scale raw adc to a duty
00065         PWMDTY1 = ATD0DR1 >> 2; // scale raw adc to a duty
00066         PWMDTY2 = ATD0DR2 >> 2; // scale raw adc to a duty
00067         PWMDTY3 = ATD0DR3 >> 2; // scale raw adc to a duty
00068         PWMDTY4 = ATD0DR4 >> 2; // scale raw adc to a duty
00069         //PWMDTY5 = ATD0DR5 >> 2; // scale raw adc to a duty
00070         //PWMDTY6 = ATD0DR6 >> 2; // scale raw adc to a duty
00071         //PWMDTY7 = ATD0DR7 >> 2; // scale raw adc to a duty (user led instead)
00072 }

unsigned char checksum ( unsigned char *  block,
unsigned short  length 
)

Definition at line 136 of file utils.c.

Referenced by checksumAndSend().

00136                                                                    {
00137         unsigned char sum = 0;
00138         unsigned short i;
00139         for(i=0;i<length;i++){
00140                 sum += *block;
00141                 block++;
00142         }
00143         return sum;
00144 }

void resetToNonRunningState ( void   ) 

Definition at line 46 of file utils.c.

References CLEAR_PRIMARY_SYNC, coreStatusA, engineCyclePeriod, recordADCBank, RPM, and ticksPerCycleAtOneRPM.

Referenced by main().

00046                              {
00047         /* Reset RPM to zero */
00048         RPM[recordADCBank] = 0;
00049 
00050         /* Ensure tacho reads lowest possible value */
00051         engineCyclePeriod = ticksPerCycleAtOneRPM;
00052 
00053         /* Clear all sync flags to lost state */
00054         //coreStatusA &= CLEAR_RPM_VALID;
00055         coreStatusA &= CLEAR_PRIMARY_SYNC;
00056         //coreStatusA &= CLEAR_SECONDARY_SYNC;
00057 
00058         // TODO more stuff needs resetting here, but only critical things.
00059 }

void sampleEachADC ( ADCArray Arrays  ) 

Definition at line 76 of file utils.c.

References ADCArray::AAP, ATD0DR0, ATD0DR1, ATD0DR2, ATD0DR3, ATD0DR4, ATD0DR5, ATD0DR6, ATD0DR7, ATD1DR0, ATD1DR1, ATD1DR2, ATD1DR3, ATD1DR4, ATD1DR5, ATD1DR6, ATD1DR7, ADCArray::BRV, ADCArray::CHT, ADCArray::EGO, ADCArray::EGO2, ADCArray::IAP, ADCArray::IAT, ADCArray::MAF, ADCArray::MAP, ADCArray::MAT, recordADCBank, ADCArray::SpareADC3, ADCArray::SpareADC4, ADCArray::SpareADC5, ADCArray::SpareADC6, ADCArray::SpareADC7, and ADCArray::TPS.

Referenced by main().

00076                                     {
00077         /* ATD0 */
00078         Arrays->IAT[recordADCBank] = ATD0DR0;
00079         Arrays->CHT[recordADCBank] = ATD0DR1;
00080         Arrays->TPS[recordADCBank] = ATD0DR2;
00081         Arrays->EGO[recordADCBank] = ATD0DR3;
00082         Arrays->MAP[recordADCBank] = ATD0DR4;
00083         Arrays->AAP[recordADCBank] = ATD0DR5;
00084         Arrays->BRV[recordADCBank] = ATD0DR6;
00085         Arrays->MAT[recordADCBank] = ATD0DR7;
00086 
00087         /* ATD1 */
00088         Arrays->EGO2[recordADCBank] = ATD1DR0;
00089         Arrays->IAP[recordADCBank] = ATD1DR1;
00090         Arrays->MAF[recordADCBank] = ATD1DR2;
00091         Arrays->SpareADC3[recordADCBank] = ATD1DR3;
00092         Arrays->SpareADC4[recordADCBank] = ATD1DR4;
00093         Arrays->SpareADC5[recordADCBank] = ATD1DR5;
00094         Arrays->SpareADC6[recordADCBank] = ATD1DR6;
00095         Arrays->SpareADC7[recordADCBank] = ATD1DR7;
00096 }

void sampleLoopADC ( ADCArray Arrays  ) 

Definition at line 100 of file utils.c.

References ADCS_IN_ADC0, ATD0_BASE, ATD1_BASE, DVUSP, and recordADCBank.

Referenced by PrimaryRPMISR().

00100                                     {
00101         // get the address of the ADC array
00102         unsigned short addr = (unsigned short)Arrays;
00103 
00104         //sendUS(addr);
00105         unsigned char loop;
00106         /* (value of((address of ADCArrays struct) + (offset to start of bank(0 or half struct length)) + (offset to particular ADC (loopcounter * 4)) + (offset to correct element(0 or 2)))) =
00107          * (value of((address of ARRAY block) + (loop counter * 2))) */
00108 
00109         for(loop=0;loop<ADCS_IN_ADC0;loop++){
00110                 /* Do the first block */
00111                 DVUSP(addr + /*(0) +*/ (loop * 4) + (recordADCBank * 2)) = DVUSP(ATD0_BASE + (loop * 2));
00112 
00113                 /* Do the second block */
00114                 DVUSP(addr + 32 + (loop * 4) + (recordADCBank * 2)) = DVUSP(ATD1_BASE + (loop * 2));
00115         }
00116 }

void setupPagedRAM ( unsigned char  bool  ) 

Definition at line 31 of file utils.c.

References currentFuelRPage, currentTimeRPage, currentTuneRPage, RPAGE, RPAGE_FUEL_ONE, RPAGE_FUEL_TWO, RPAGE_TIME_ONE, RPAGE_TIME_TWO, RPAGE_TUNE_ONE, and RPAGE_TUNE_TWO.

Referenced by initPagedRam().

00031                                       {
00032         if(bool){
00033                 currentFuelRPage = RPAGE_FUEL_ONE;
00034                 currentTimeRPage = RPAGE_TIME_ONE;
00035                 currentTuneRPage = RPAGE_TUNE_ONE;
00036         }else{
00037                 currentFuelRPage = RPAGE_FUEL_TWO;
00038                 currentTimeRPage = RPAGE_TIME_TWO;
00039                 currentTuneRPage = RPAGE_TUNE_TWO;
00040         }
00041 
00042         RPAGE = currentTuneRPage;
00043 }

void sleep ( unsigned short  ms  ) 

Definition at line 120 of file utils.c.

Referenced by initConfiguration().

00120                              {
00121         unsigned short j, k;
00122         for(j=0;j<ms;j++)
00123                 for(k=0;k<5714;k++);
00124 }

void sleepMicro ( unsigned short  us  ) 

Definition at line 128 of file utils.c.

Referenced by main().

00128                                   { /* Very approximate... */
00129         unsigned short j, k;
00130         for(j=0;j<us;j++)
00131                 for(k=0;k<6;k++);
00132 }

unsigned short stringCopy ( unsigned char *  dest,
unsigned char *  source 
)

Definition at line 146 of file utils.c.

Referenced by sendDebug().

00146                                                                      {
00147         unsigned short length = 0;
00148         while(*source != 0){
00149                 *dest = *source;
00150                 dest++;
00151                 source++;
00152                 length++;
00153         }
00154         *dest = 0;
00155         return length;
00156 }


Generated on Mon Nov 10 21:19:18 2008 for freeems by  doxygen 1.5.2