This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hi,
I'm using the new MSP-Gang programmer from TI/Elprotronic for production purpose, programming a panel with up to 6 targets at once.
Firmware version is 1.00.09.00
Hardware version is 1.01
I'm using the "MSP-Gang.dll", not the wrapper dll.
My problem is that I would like to be able to disable a target dynamically. For instance if a target fails programming, I would like to be able to retry on that target only, disabling the other targets.
From what I can see, this is only possible using the "MSPGANG_SetConfig" command, and writing to index 10 (CFG_TARGET_EN_INDEX), then creating a new Gang image and upload it to the programmer.
Can it really be true that its not possible to disable targets without having to reload the whole programmer?
Please help me out!
Best regards
Michael Christiansen
Hi Michael.
You should be able to disable a target dynamically by using the MSPGANG_SetConfig like you said, there should be no reason to load a new image. You should be able to get the status of which devices failed from MSPGANG_GetProgressStatus. Using these two commands you should be able to accomplish your task.
Best regards
Anders Lange
Hi Anders,
Thanks for your reply.
I just can't get it working.
Here is what I do:
Prepare an image.
MSPGANG_InitCom
MSPGANG_Load_Config
MSPGANG_SetNameConfig; CODEFILE_INDEX 0
MSPGANG_Set_MCU_Name
MSPGANG_SetConfig; CFG_TARGET_EN_INDEX
MSPGANG_Save_Config
MSPGANG_CreateGangImage
Prepare the programmer.
MSPGANG_SelectImage
MSPGANG_EraseImage
MSPGANG_LoadImageBlock
MSPGANG_VerifyPSImageBlock
Program the targets.
MSPGANG_SelectImage
MSPGANG_MainProcess
MSPGANG_GetProgressStatus
If a target fails, and to avoid reprogramming all targets I tried
MSPGANG_Load_Config
MSPGANG_SetConfig; CFG_TARGET_EN_INDEX, disabling the targets that don’t want to program
MSPGANG_Save_Config
When I repeat the programming process, the programmer still programs all targets. All that's changed is the property “GangEnMask” in the *.mspgangproj file
Am I doing something wrong?
Best regards
Michael Christiansen
Hi Michael,
I was just trying this out. I think you are right, this method does require loading the image after setting the config for it to take effect, since the MainProcess uses the settings from the image (including the enabled targets).
However, one alternative you could do would be if you already had 9 GANG images already stored in the GANG's internal memory - one image with all targets enabled, and then one for each target to be enabled by itself. This would allow you to instead of having to generate a new image and loading it if there is an error, simply select the image (already loaded) corresponding to the failing unit. This could be inefficient if there are multiple failing units, but I would hope that you wouldn't be having a lot of units failing.
Regards,
Katie
Hi Katie,
Thanks for your reply.
I see your method could function as a work-around, not the smoothest way, but would work if only one target was failing. Otherwise as you mentioned, it would be inefficient. Also it will extend the prep time by 9 times.
Will this function be part of a future release?
I talked to one of the guys from Elprotronic back in the beginning of August. He was refering to a sw v1.00.10.00 , but it's still not released on TI web page.
Any chance the function is already supported in this version?
Best regards
Michael
Hi Michael,
Michael said:Also it will extend the prep time by 9 times.
You don't need to have the loading of the images into the GANG happen every single time for every set of 8 targets. You can have the images stored already in the internal memory of the MSP-GANG. You could do this either by writing a separate routine that runs once at the factory and just loads the images. Then whenever you want to load 8 parts with code, you only have to run a program that just selects an image and programs (not having to load the images). So that 9 times longer only happens once when you very first set up a new MSP-GANG, not every time you put a new set of MSP430 targets on it - you could program hundreds of them without having to load a new image. The reason that I think that the example DLL programs load the image each time is just to show you how to do it, and also I think they show how to put a unique serial number for each part.
I'm guessing the reason to not want to program new image in to change the enabled targets is to save time, and having the images preloaded so as to not have to run every time will hopefully save you some time whether you do this 9 image method or not.
As for whether this function will ever be changed, I'm thinking not - it seems like a property of the way the GANG works - the process operates off the data in the current image. But I'm unsure, I can try to check or at least recommend it as a feature suggestion.
Regards,
Katie
Hi Katie,
I know I don't have to load the programmer before every set of targets, but our inline tester is running approximately 200 different products which all have different firmware.
Thus, I would have to reload the programmer whenever I change product, which may happen 20-30 times per day.
Please suggest this feature, it would be very appreciated.
Thanks,
Michael
Hi Michael,
Thanks, I think I understand your situation better now. This makes sense.
Sorry that there is not a very smooth way to handle the functionality you are wanting. Unfortunately you will have to re-load the image adjusted for only reprogramming the failing targets for now. I will recommend it as a feature suggestion.
Regards,
Katie
Hi Katie,
This is from the users guide:
MSPGANG_SetTmpGANG_Config
See the Set temporary configuration command (
Section 3.5.3.3) for details.
Syntax
LONG MSPGANG_SetTmpGANG_Config(LONG no, LONG data)
Arguments
LONG no Index list of indexes below
LONG data
Result
LONG Error code
//----- TMP_CFG_INDEX -----------
#define CFG_TMP_CLEAR 2
#define CFG_TMP_TASK_MASK 4
#define CFG_TMP_VCC_VALUE 6
#define CFG_TMP_POWER_VCC_EN 8
#define CFG_TMP_INTERFACE 10
#define CFG_TMP_GANG_MASK 12
#define CFG_TMP_VCC_ONOFF 14
#define CFG_LCD_CONTRAST 16
#define CFG_TMP_ICC_HI_EN 18
#define CFG_TMP_IO_INTERFACE 20
#define CFG_TMP_RESET 22
#define CFG_TMP_KEYBOARD_EN 24
#define CFG_TMP_VCC_SETTLE_TIME 26
Isn't that the function I'm looking for?
Best regards
Michael
Hi Michael,
I think you are correct, sorry for the confusion. This is not something I'd seen people use in the DLL before but looks to be exactly what you are looking for :-)
Regards,
Katie
**Attention** This is a public forum