1 // Martin Thomas 3/2008
\r
7 #include "../../BaseTinyFirmware/GCC/enums.h"
\r
8 #include "../../BaseTinyFirmware/GCC/structs.h"
\r
11 #include "bc100_slave.h"
\r
13 #ifdef BC100_SLAVE_TEST
\r
14 #include "mystdio.h"
\r
19 void bc100_slave_init( void )
\r
23 uint8_t bc100_slave_read( uint8_t cmd, size_t size, void *buf )
\r
30 #ifdef BC100_SLAVE_TEST
\r
32 uint8_t bc100_slave_test(void)
\r
36 uint32_t timevals[TIMERS];
\r
41 myprintf_P("Timers:\n");
\r
42 out = BC100_SLAVE_READ | BC100_SLAVE_SRAM | sizeof(timevals);
\r
46 myprintf_P("In1 : 0x%02x (expected 0xcc)\n", in );
\r
47 in = SPI_rw( dummy );
\r
48 myprintf_P("In2 : 0x%02x (expected 0xbb)\n", in );
\r
51 for ( i = TIMERS; i > 0; i-- ) {
\r
52 tmp = (uint32_t)(SPI_rw(dummy)) << 24;
\r
53 tmp |= (uint32_t)(SPI_rw(dummy)) << 16;
\r
54 tmp |= (uint32_t)(SPI_rw(dummy)) << 8;
\r
55 tmp |= (uint32_t)(SPI_rw(dummy)) << 0;
\r
56 timevals[i-1] = tmp;
\r
59 i = sizeof(timevals);
\r
61 *( (unsigned char*)&timevals + i ) = SPI_rw(dummy);
\r
64 for ( i=0; i<TIMERS; i++ ) {
\r
65 myprintf_P("Timer #%d = %lu (0x%08lx)\n", i, timevals[i], timevals[i] );
\r
70 myprintf_P("ADC-Status:\n");
\r
71 out = BC100_SLAVE_READ | BC100_SLAVE_SRAM | sizeof(ADCS);
\r
75 myprintf_P("In1 : 0x%02x (expected 0xcc)\n", in );
\r
76 in = SPI_rw( dummy );
\r
77 myprintf_P("In2 : 0x%02x (expected 0xbb)\n", in );
\r
80 *( (unsigned char*)&ADCS + i ) = SPI_rw(dummy);
\r
82 myprintf_P("ADC-MUX %d\n", ADCS.MUX );
\r
83 myprintf_P("Cycle complete %d\n", ADCS.Flag);
\r
84 myprintf_P("Mains OK %d\n", ADCS.Mains);
\r
85 myprintf_P("A/D halt %d\n", ADCS.Halt);
\r
86 myprintf_P("Offs ADC3 g20 %d\n", ADCS.ADC3_G20_OS);
\r
87 myprintf_P("Offs ADC5 g20 %d\n", ADCS.ADC5_G20_OS);
\r
88 myprintf_P("rawRID %d\n", ADCS.rawRID);
\r
89 myprintf_P("rawNTC %d\n", ADCS.rawNTC);
\r
90 myprintf_P("rawVBAT %d\n", ADCS.rawVBAT);
\r
91 myprintf_P("Supply %d [mV]\n", ADCS.VIN);
\r
92 myprintf_P("Batt. Voltage %d [mV]\n", ADCS.VBAT);
\r
93 myprintf_P("Batt. Current %d [mA]\n", ADCS.IBAT);
\r
94 for ( i=0; i<4; i++ ) {
\r
95 myprintf_P("DiscIBAT[%d] %d [mA]\n", i, ADCS.discIBAT[i] );
\r
97 myprintf_P("average IBAT %d [mA]\n", ADCS.avgIBAT);
\r
104 #endif /* BC100_SLAVE_TEST */
\r