https://github.com/Tom-evnut/BMW-F-Series-Shifterjoeflickers wrote: ↑Mon Nov 04, 2024 2:50 pm how did you decode this as ive got a similar selector and getting the wake up message
https://github.com/damienmaguire/Stm32- ... _Lever.cpp
https://github.com/Tom-evnut/BMW-F-Series-Shifterjoeflickers wrote: ↑Mon Nov 04, 2024 2:50 pm how did you decode this as ive got a similar selector and getting the wake up message
I Did install e60 facelift shifter and worked it in the zombie code.joeflickers wrote: ↑Mon Nov 04, 2024 2:50 pm how did you decode this as ive got a similar selector and getting the wake up message
That would be very helpful, you can share the code. I bought the E60 lever thinking it's the correct on from the UK as we don't have as many spare parts for the F30 here in Kenya7yatna wrote: ↑Mon Nov 04, 2024 7:24 pm I Did install e60 facelift shifter and worked it in the zombie code.
I Dont use the wake up message i use the wakeup line and connected to the wakeup line to the power train like a normal e60.
There are other shifters that had been worked by tom and damien form other cars. i got e60 shifter coded if you are using this one i can send you the code for it.
e60 shifter isn't in the current zombie release.
joeflickers wrote: ↑Tue Nov 05, 2024 8:35 am That would be very helpful, you can share the code. I bought the E60 lever thinking it's the correct on from the UK as we don't have as many spare parts for the F30 here
Code: Select all
case 0x198:
{
uint32_t GLeaver = data[0] & 0xFFFFFF00; //unsigned int to contain result of message 0x198. Gear selector lever position
switch (GLeaver)
{
case 0xC5CF0000: //park button pressed
this->gear = PARK;
gear_BA = 0x03;
shiftPos = 0xe1;
MPos = 0x0f;
SPos = 0xf0;
Sport = 0;
break;
case 0xC5CD2000: //R+ Park position
Param::SetInt(Param::Gear, 0);
this->gear = REVERSE;
gear_BA = 0x02;
shiftPos = 0xd2;
MPos = 0x0f;
SPos = 0xf0;
Sport = 0;
break;
case 0xC0CD2000: //R+ position
Param::SetInt(Param::Gear, 0);
this->gear = REVERSE;
gear_BA = 0x02;
shiftPos = 0xd2;
MPos = 0x0f;
SPos = 0xf0;
Sport = 0;
break;
case 0xC0CC3000: //R to Neutral
this->gear = PARK;
gear_BA = 0x01;
shiftPos = 0xb4;
MPos = 0x0f;
SPos = 0xf0;
Sport = 0;
break;
case 0xC0CF0000: //not pressed
Param::SetInt(Param::Gear, 2);
Param::SetFloat(Param::throtramp, ThrotRamp);
if ((Param::GetInt(Param::dir)) == -1)
{
Param::SetInt(Param::Gear, 0);
}
MPos = 0x0f;
SPos = 0xf0;
Sport = 0;
break;
case 0xC0CE1000: //D to Neutral
this->gear = PARK;
gear_BA = 0x01;
shiftPos = 0xb4;
MPos = 0x0f;
SPos = 0xf0;
Sport = 0;
break;
case 0xC0CB4000: //D+ pressed
Param::SetInt(Param::Gear, 2);
this->gear = DRIVE;
gear_BA = 0x08;
shiftPos = 0x78;
MPos = 0x0f;
SPos = 0xf0;
Sport = 0;
break;
case 0xC5CB4000: //D+ Park pressed
Param::SetInt(Param::Gear, 2);
this->gear = DRIVE;
gear_BA = 0x08;
shiftPos = 0x78;
MPos = 0x0f;
SPos = 0xf0;
Sport = 0;
break;
case 0xC0CA5000: //Sport Minus
Param::SetInt(Param::Gear, 0);
Param::SetInt(Param::throtramp, 12);
this->gear = DRIVE;
gear_BA = 0x05;
shiftPos = 0x78;
MPos = 0x5f;
SPos = 0xf2;
break;
case 0xC0C96000: //Sport Plus
Param::SetInt(Param::Gear, 1);
Param::SetInt(Param::throtramp, 12);
this->gear = DRIVE;
gear_BA = 0x06;
shiftPos = 0x78;
MPos = 0x6f;
SPos = 0xf2;
break;
case 0xC0C87000: // S-M-D button pressed
switch(Sport)
{
case 0:
Param::SetInt(Param::Gear, 2);
this->gear = DRIVE;
gear_BA = 0x08;
shiftPos = 0x78;
MPos = 0x0f;
SPos = 0xf1;
Sport = 1;
Param::SetInt(Param::throtramp, 12);
break;
case 1:
break;
}
break;
}
}
break;
Please do not dump code in a random place on the forum. Create a thread so it can be found and properly integrated into the zombie code base.
Your comment contradicting itself Tom.
Code is anything, with code in it.
superb, can see you have impremented different driving modes7yatna wrote: ↑Thu Nov 07, 2024 9:18 am here is the code translating the shifter from my zombie code.
there are other stuff incorporated for other things but i believe all what you need is here.
Code: Select all
case 0x198: { uint32_t GLeaver = data[0] & 0xFFFFFF00; //unsigned int to contain result of message 0x198. Gear selector lever position switch (GLeaver) { case 0xC5CF0000: //park button pressed this->gear = PARK; gear_BA = 0x03; shiftPos = 0xe1; MPos = 0x0f; SPos = 0xf0; Sport = 0; break; case 0xC5CD2000: //R+ Park position Param::SetInt(Param::Gear, 0); this->gear = REVERSE; gear_BA = 0x02; shiftPos = 0xd2; MPos = 0x0f; SPos = 0xf0; Sport = 0; break; case 0xC0CD2000: //R+ position Param::SetInt(Param::Gear, 0); this->gear = REVERSE; gear_BA = 0x02; shiftPos = 0xd2; MPos = 0x0f; SPos = 0xf0; Sport = 0; break; case 0xC0CC3000: //R to Neutral this->gear = PARK; gear_BA = 0x01; shiftPos = 0xb4; MPos = 0x0f; SPos = 0xf0; Sport = 0; break; case 0xC0CF0000: //not pressed Param::SetInt(Param::Gear, 2); Param::SetFloat(Param::throtramp, ThrotRamp); if ((Param::GetInt(Param::dir)) == -1) { Param::SetInt(Param::Gear, 0); } MPos = 0x0f; SPos = 0xf0; Sport = 0; break; case 0xC0CE1000: //D to Neutral this->gear = PARK; gear_BA = 0x01; shiftPos = 0xb4; MPos = 0x0f; SPos = 0xf0; Sport = 0; break; case 0xC0CB4000: //D+ pressed Param::SetInt(Param::Gear, 2); this->gear = DRIVE; gear_BA = 0x08; shiftPos = 0x78; MPos = 0x0f; SPos = 0xf0; Sport = 0; break; case 0xC5CB4000: //D+ Park pressed Param::SetInt(Param::Gear, 2); this->gear = DRIVE; gear_BA = 0x08; shiftPos = 0x78; MPos = 0x0f; SPos = 0xf0; Sport = 0; break; case 0xC0CA5000: //Sport Minus Param::SetInt(Param::Gear, 0); Param::SetInt(Param::throtramp, 12); this->gear = DRIVE; gear_BA = 0x05; shiftPos = 0x78; MPos = 0x5f; SPos = 0xf2; break; case 0xC0C96000: //Sport Plus Param::SetInt(Param::Gear, 1); Param::SetInt(Param::throtramp, 12); this->gear = DRIVE; gear_BA = 0x06; shiftPos = 0x78; MPos = 0x6f; SPos = 0xf2; break; case 0xC0C87000: // S-M-D button pressed switch(Sport) { case 0: Param::SetInt(Param::Gear, 2); this->gear = DRIVE; gear_BA = 0x08; shiftPos = 0x78; MPos = 0x0f; SPos = 0xf1; Sport = 1; Param::SetInt(Param::throtramp, 12); break; case 1: break; } break; } } break;
I have the car running and doing way so much stuff for over a year now. sport mode, manual mode, i introduced Auto shifting to the GS450H Zombie code before Tom and Damien do it differently.
Excellent... Are you able to share more.. Like your code.. Idd be happy to replicate what you have.. Or bin file.. I'm not soo good in coding but in hardware and IoT development.. I have the gs450h in a W124 200E and happy so far having done 16k-kilometers.. I'm not happy with stock gear selector and wanted something modern.. I was not able to implement the code snippet you shared for my gear selector..7yatna wrote: ↑Fri Nov 08, 2024 8:38 am I have the car running and doing way so much stuff for over a year now. sport mode, manual mode, i introduced Auto shifting to the GS450H Zombie code before Tom and Damien do it differently.
as far as i know im the first and only to blend gears in GS450h, this required HW mode on zombieverter.
happy to help
I'd love to see a build thread or even just pictures. My dad has multiple S/W124 and I have a W201 myself. Extremely solid cars.joeflickers wrote: ↑Mon Nov 11, 2024 12:01 pm Excellent... Are you able to share more.. Like your code.. Idd be happy to replicate what you have.. Or bin file.. I'm not soo good in coding but in hardware and IoT development.. I have the gs450h in a W124 200E and happy so far having done 16k-kilometers.. I'm not happy with stock gear selector and wanted something modern.. I was not able to implement the code snippet you shared for my gear selector..
I'm also interested to know if perhaps you have a visual screen to view zombie parameter like speed, inverter temp apart from using the spot values as I have to always open web-browser's on my android radio..
I'm using Orion bms2 and have developed an oled showing most parameters.. My battery is 77kw from Hyundai and I get a decent 420km.
back to my previous comment.joeflickers wrote: ↑Mon Nov 11, 2024 12:01 pm Excellent... Are you able to share more.. Like your code.. Idd be happy to replicate what you have.. Or bin file.. I'm not soo good in coding but in hardware and IoT development.. I have the gs450h in a W124 200E and happy so far having done 16k-kilometers.. I'm not happy with stock gear selector and wanted something modern.. I was not able to implement the code snippet you shared for my gear selector..
I'm also interested to know if perhaps you have a visual screen to view zombie parameter like speed, inverter temp apart from using the spot values as I have to always open web-browser's on my android radio..
I'm using Orion bms2 and have developed an oled showing most parameters.. My battery is 77kw from Hyundai and I get a decent 420km.
Does the zombie have protection against forward /reverse motor protection like the openinverter boards? What would happen if you switched reverse mistakenly while in drive-mode at high speed?7yatna wrote: ↑Tue Nov 12, 2024 6:04 am back to my previous comment.
Unfortunately due to how critical and dangerous flying code/bins without traceability like Tom and others pointed i can not and will nor share complete bins nor even full code.
after all your life is at the line here. me and others had close call due to some minor variable was not tuned in correctly.
i can help and give pointers towards a specific debug or an improvement. each project has a character and life of its own. i might be able to share the common parameters but remember my code is very custom and tuned to my specific car. i had to tune the bmw modules to my own liking so even an identical e60 like my car might not behave or work as mine. it is unfortunately a trial and error but for liability I'm not willing to participate into others life liability.
i will make a build thread for both cars i made and working. sharing the parts, mechanical and physicals mods, but when it comes to code i can do like i did with the shifter snippets to give you the good stuff but to make it actually work you at you your own liability.
for starters watch some of my very boring and long videos on YT
thanks,
Karim
I think this protection is implemented generally. But since there are multiple drive system zombie can support that protection is all the way down into the coding of each system code.joeflickers wrote: ↑Tue Dec 03, 2024 7:53 pm Does the zombie have protection against forward /reverse motor protection like the openinverter boards? What would happen if you switched reverse mistakenly while in drive-mode at high speed?
Now that you mentioned.. I did try it in my car using gs450h + zombie software version 2.17 speed around 1000rpm and indeed im able to switch to reverse instantly.. This can be fatal I believe at high speed?7yatna wrote: ↑Wed Dec 04, 2024 10:56 pm I think this protection is implemented generally. But since there are multiple drive system zombie can support that protection is all the way down into the coding of each system code.
I didn't try or even looked for its code. But if it isn't it is a very easy function to add.
Just check real speed vs a threshold speed where direction can be changed.
I will look for it when I get around the code.
Thanks
Stop posting the same shit multiple times. PROVIDE INFORMATION if you need help.joeflickers wrote: ↑Thu Dec 05, 2024 7:18 am To also add.. I've updated my ecu with version 2.20.. Same parameters settings as I've been using with version 2.17 and I realised the IVA-shunt is not reading the voltage.. Tried changing to CAN-1 and 2 and same results
How do electric motors work? There is no physical gearbox. All that happens is the torque requests flip so you press more pedal going forward it will just increase the regen because its not spinning in the right direction.
appreciated, parameters changed in interface, had not selected ISA Shunt
Yes it can be that simple.joeflickers wrote: ↑Fri Dec 06, 2024 6:29 am appreciated, parameters changed in interface, had not selected ISA Shunt
Noted.. He's been very helpful.. I'll be posting a different thread on my build