From: Olivier B. <Ba...@us...> - 2011-03-12 19:25:51
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via b43cd31f49a7d41d1337700bffa8202a984b6418 (commit) from 9a5999ae2db16bfe97f00600f8005e14386ab916 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit b43cd31f49a7d41d1337700bffa8202a984b6418 Author: Olivier BICHLER <oli...@gm...> Date: Sat Mar 12 20:25:08 2011 +0100 [Monitoring_4Cells] Working test firmware & board! ----------------------------------------------------------------------- Changes: diff --git a/elec/boards/Monitoring_4Cells/Firmware_Test/Firmware_Test/Firmware_Test_user.mk b/elec/boards/Monitoring_4Cells/Firmware_Test/Firmware_Test/Firmware_Test_user.mk index b92ba07..92bf9fc 100644 --- a/elec/boards/Monitoring_4Cells/Firmware_Test/Firmware_Test/Firmware_Test_user.mk +++ b/elec/boards/Monitoring_4Cells/Firmware_Test/Firmware_Test/Firmware_Test_user.mk @@ -10,6 +10,7 @@ Firmware_Test_PROGRAMMER_PORT = none # Files included by the user. Firmware_Test_USER_CSRC = \ $(Firmware_Test_SRC_PATH)/main.c \ + $(Firmware_Test_SRC_PATH)/ads7828.c \ # # Files included by the user. diff --git a/elec/boards/Monitoring_4Cells/Firmware_Test/Firmware_Test/ads7828.c b/elec/boards/Monitoring_4Cells/Firmware_Test/Firmware_Test/ads7828.c new file mode 100644 index 0000000..031ff29 --- /dev/null +++ b/elec/boards/Monitoring_4Cells/Firmware_Test/Firmware_Test/ads7828.c @@ -0,0 +1,25 @@ +/* + * Wrapper to use the ADS7828 analog to digital converter + * Olivier Bichler + */ + +#include "ads7828.h" + +unsigned int adc7828_measure(I2c* i2c, unsigned char addr, unsigned char ch) { + unsigned char value[2] = {0}; + unsigned char cmd = ADS7828_CMD_PD0 + | ADS7828_CMD_PD1 + | ((ch/2) << 4) + | ADS7828_CMD_SD; + + if (ch % 2) + cmd|= ADS7828_CMD_C2; + + i2c_start_w(i2c, addr, 1, I2C_STOP); + i2c_write(i2c, &cmd, 1); + i2c_start_r(i2c, addr, 2, I2C_STOP); + i2c_read(i2c, &value, 2); + + return ((value[0] << 8) | value[1]); +} + diff --git a/elec/boards/Monitoring_4Cells/Firmware_Test/Firmware_Test/ads7828.h b/elec/boards/Monitoring_4Cells/Firmware_Test/Firmware_Test/ads7828.h index ade1632..5622fa8 100644 --- a/elec/boards/Monitoring_4Cells/Firmware_Test/Firmware_Test/ads7828.h +++ b/elec/boards/Monitoring_4Cells/Firmware_Test/Firmware_Test/ads7828.h @@ -23,7 +23,7 @@ #include <drv/i2c.h> - +unsigned int adc7828_measure(I2c* i2c, unsigned char addr, unsigned char ch); #endif diff --git a/elec/boards/Monitoring_4Cells/Firmware_Test/Firmware_Test/main.c b/elec/boards/Monitoring_4Cells/Firmware_Test/Firmware_Test/main.c index 91fcbec..036e4c2 100644 --- a/elec/boards/Monitoring_4Cells/Firmware_Test/Firmware_Test/main.c +++ b/elec/boards/Monitoring_4Cells/Firmware_Test/Firmware_Test/main.c @@ -89,8 +89,7 @@ static void NORETURN led_process(void) int main(void) { I2c ctx; - unsigned int cmd = ADS7828_CMD_PD0 | ADS7828_CMD_PD1 | ADS7828_CMD_SD; - unsigned int value; + int ch, value; /* Hardware initialization */ init(); @@ -107,16 +106,14 @@ int main(void) while (1) { //monitor_report(); - //timer_delay(1000); - timer_delay(100); + timer_delay(1000); + + for (ch = 0; ch < 8; ++ch) { + value = adc7828_measure(&ctx, ADS7828_ADDR_BASE, ch); + kprintf("CH%d: %.2f V (%d)\n", ch, 2.0*value*ADS7828_LSB, value); + } - value = 0; - i2c_start_w(&ctx, ADS7828_ADDR_BASE, 1, I2C_STOP); - i2c_write(&ctx, &cmd, 1); - i2c_start_r(&ctx, ADS7828_ADDR_BASE, 2, I2C_STOP); - i2c_read(&ctx, &value, 2); - //kprintf("%d mV\n", (int) (value*ADS7828_LSB*1000.0)); - kprintf("%d\n", value); + kprintf("-----------\n"); } } hooks/post-receive -- krobot |