[Ovmsdev] Volt/Ampera

mikeljo at mac.com mikeljo at mac.com
Wed Feb 6 20:10:29 HKT 2013

Hi mark,

i am a little bit confused.

In ovms.h you define this:
extern unsigned char car_doors1;
typedef struct {
  unsigned FrontLeftDoor:1;
  unsigned FrontRightDoor:1;
  unsigned ChargePort:1;
  unsigned PilotSignal:1;
  unsigned Charging:1;
  unsigned :1;
  unsigned HandBrake:1;
  unsigned CarON:1;
} car_doors1bits_t;
#define car_doors1bits (*((car_doors1bits_t*)&car_doors1))

so you can use the struct (car_doors1bits_t) as integer "variable" car_doors1 and as single bit car_doors1bits and vice versa.

Then you use the integer in vehicle_voltampera.c: (only a few examples!)
car_doors1 |= 0x0c;     // Set charge and pilot bits

    car_doors1 |= 0x40;     //  PARK
    car_doors1 &= ~0x80;    // CAR OFF

witch bits is now what?

My understanding is that the MSB is "FrontLeftDoor" and the LSB is "CarON".
If i am right, than this is wrong: "car_doors1 &= ~0x80;    // CAR OFF"
this will clear FrontLeftDoor.

And this is "partial" right: "car_doors1 |= 0x0c;     // Set charge and pilot bits"
this will set Charging and the unnamed bit. But should set charging and PilotSignal. Then it must be 0x18

Can you or anybody else check?
I think it is better to use the bits direct. Like this:  car_doors1bits.ChargePort = 1

Michael J.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.teslaclub.hk/pipermail/ovmsdev/attachments/20130206/095e9036/attachment.html>

More information about the OvmsDev mailing list