X-Git-Url: http://git.kpe.io/?p=avr_bc100.git;a=blobdiff_plain;f=BaseMegaFirmware%2FGCC%2Fbc100_slave.c;fp=BaseMegaFirmware%2FGCC%2Fbc100_slave.c;h=a03a33463f92d7dd22204b3449c2385398b8e458;hp=0000000000000000000000000000000000000000;hb=89173ec9cd6f33843bf27c45be0f2f9be3f5f0ce;hpb=7997f136b12114035265bd082c854bff95fd73dc diff --git a/BaseMegaFirmware/GCC/bc100_slave.c b/BaseMegaFirmware/GCC/bc100_slave.c new file mode 100644 index 0000000..a03a334 --- /dev/null +++ b/BaseMegaFirmware/GCC/bc100_slave.c @@ -0,0 +1,105 @@ +// Martin Thomas 3/2008 + +#include +#include +#include + +#include "../../BaseTinyFirmware/GCC/enums.h" +#include "../../BaseTinyFirmware/GCC/structs.h" + +#include "spi.h" +#include "bc100_slave.h" + +#ifdef BC100_SLAVE_TEST +#include "mystdio.h" +#endif + +#define dummy 0x00 + +void bc100_slave_init( void ) +{ +} + +uint8_t bc100_slave_read( uint8_t cmd, size_t size, void *buf ) +{ + uint8_t err = 0; + + return err; +} + +#ifdef BC100_SLAVE_TEST + +uint8_t bc100_slave_test(void) +{ + uint8_t err = 0; + uint8_t in, out, i; + uint32_t timevals[TIMERS]; + + SPI_init(); + + SPI_rw( dummy ); + myprintf_P("Timers:\n"); + out = BC100_SLAVE_READ | BC100_SLAVE_SRAM | sizeof(timevals); + SPI_rw( out ); + out = ADR_TIMERS; + in = SPI_rw( out ); + myprintf_P("In1 : 0x%02x (expected 0xcc)\n", in ); + in = SPI_rw( dummy ); + myprintf_P("In2 : 0x%02x (expected 0xbb)\n", in ); +#if 0 + uint8_t tmp + for ( i = TIMERS; i > 0; i-- ) { + tmp = (uint32_t)(SPI_rw(dummy)) << 24; + tmp |= (uint32_t)(SPI_rw(dummy)) << 16; + tmp |= (uint32_t)(SPI_rw(dummy)) << 8; + tmp |= (uint32_t)(SPI_rw(dummy)) << 0; + timevals[i-1] = tmp; + } +#else + i = sizeof(timevals); + while ( i-- > 0 ) { + *( (unsigned char*)&timevals + i ) = SPI_rw(dummy); + } +#endif + for ( i=0; i 0 ) { + *( (unsigned char*)&ADCS + i ) = SPI_rw(dummy); + } + myprintf_P("ADC-MUX %d\n", ADCS.MUX ); + myprintf_P("Cycle complete %d\n", ADCS.Flag); + myprintf_P("Mains OK %d\n", ADCS.Mains); + myprintf_P("A/D halt %d\n", ADCS.Halt); + myprintf_P("Offs ADC3 g20 %d\n", ADCS.ADC3_G20_OS); + myprintf_P("Offs ADC5 g20 %d\n", ADCS.ADC5_G20_OS); + myprintf_P("rawRID %d\n", ADCS.rawRID); + myprintf_P("rawNTC %d\n", ADCS.rawNTC); + myprintf_P("rawVBAT %d\n", ADCS.rawVBAT); + myprintf_P("Supply %d [mV]\n", ADCS.VIN); + myprintf_P("Batt. Voltage %d [mV]\n", ADCS.VBAT); + myprintf_P("Batt. Current %d [mA]\n", ADCS.IBAT); + for ( i=0; i<4; i++ ) { + myprintf_P("DiscIBAT[%d] %d [mA]\n", i, ADCS.discIBAT[i] ); + } + myprintf_P("average IBAT %d [mA]\n", ADCS.avgIBAT); + + SPI_release(); + + return err; +} + +#endif /* BC100_SLAVE_TEST */ +