2011-11-27 08:01:29 +00:00
|
|
|
/*
|
|
|
|
* simm_electrical_test.c
|
|
|
|
*
|
|
|
|
* Created on: Nov 26, 2011
|
|
|
|
* Author: Doug
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "simm_electrical_test.h"
|
2011-11-27 08:09:29 +00:00
|
|
|
#include "../ports.h"
|
|
|
|
|
|
|
|
#define SIMM_HIGHEST_ADDRESS_LINE 18
|
2011-11-27 08:01:29 +00:00
|
|
|
|
|
|
|
int SIMMElectricalTest_Run(void)
|
|
|
|
{
|
|
|
|
// Returns number of errors found
|
|
|
|
int numErrors = 0;
|
|
|
|
|
2011-11-27 08:09:29 +00:00
|
|
|
Ports_Init();
|
|
|
|
|
|
|
|
// First check for anything shorted to ground. Set all lines as inputs with a weak pull-up resistor.
|
|
|
|
// Then read the values back and check for any zeros. This would indicate a short to ground.
|
|
|
|
Ports_SetAddressDDR(0);
|
|
|
|
Ports_SetDataDDR(0);
|
|
|
|
Ports_AddressPullups_RMW((1UL << (SIMM_HIGHEST_ADDRESS_LINE + 1)) - 1, (1UL << (SIMM_HIGHEST_ADDRESS_LINE + 1)) - 1);
|
|
|
|
Ports_DataPullups_RMW(0xFFFFFFFFUL, 0xFFFFFFFFUL);
|
|
|
|
|
|
|
|
// TODO: Wait a sec?
|
|
|
|
|
|
|
|
if (Ports_ReadAddress() != (1UL << (SIMM_HIGHEST_ADDRESS_LINE + 1)) - 1)
|
|
|
|
{
|
|
|
|
// TODO: Log all these errors somewhere?
|
|
|
|
numErrors++;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (Ports_ReadData() != 0xFFFFFFFFUL)
|
|
|
|
{
|
|
|
|
// TODO: Log all these errors somewhere?
|
|
|
|
numErrors++;
|
|
|
|
}
|
|
|
|
|
2011-11-27 08:01:29 +00:00
|
|
|
return numErrors;
|
|
|
|
}
|