View previous topic :: View next topic |
Author |
Message |
newbieHasQuestions Guest
|
Manufacturing |
Posted: Fri Apr 25, 2008 7:27 am |
|
|
Hello
In the new future the code that I have written will go into production. However I havent a clue about procedures concerning this.
Assuming the code has been tested on a number of prototype devices(I will be using the PIC18F45K20) . I am planning to
1) have 500-1000 built to be tested in the consumer market. I do expect some problems.
2) after initial feedback make orders of things like PCB and microchips for quantity of say 5k - 10k a year for the first few years. (I know it is not much compared to some organisations, however for us it is big!!!!)
In terms of the program. Is there anything that I need to do other then write the program as I have been. i.e are there special standards procedures that I need to do??? or the code that I have written which seems to work fine when developing is ok. Is there anythings that I should add. (please note we have methods of debugging and testing the code without dismantling the device)
I take it the distributers of the microchips some will have facilities to program the chip and then send them programmed to the assembly warehouse? How much extra cost does this mean on top of the chip?? (I am based in the UK however any predictions will do to get a ball park figure). I take it the most common method is to send them the hex code and they will program it? Is the some standard for the hex code????
I The PIC18F45K20 is newish chip, do you think it is risky to use this chip..
I think I am scaring myself about going into production and everything will break. Hence any advise/ info/weblinks/books will be good.
ps: things like CE/FDA standards have been considered. Will be going for FDA in the future.
please advise.
regards.... |
|
|
asmallri
Joined: 12 Aug 2004 Posts: 1635 Location: Perth, Australia
|
|
Posted: Fri Apr 25, 2008 7:55 am |
|
|
You could incorporate bootloader code into your product in this way you can upgrade the software in the field. Naturally you have to have more program space to accommodate a bootloader - this may require you to move to a the PIC18F46K20 _________________ Regards, Andrew
http://www.brushelectronics.com/software
Home of Ethernet, SD card and Encrypted Serial Bootloaders for PICs!! |
|
|
Matro Guest
|
Re: Manufacturing |
Posted: Fri Apr 25, 2008 8:17 am |
|
|
newbieHasQuestions wrote: | Hello
In the new future the code that I have written will go into production. However I havent a clue about procedures concerning this.
Assuming the code has been tested on a number of prototype devices(I will be using the PIC18F45K20) . I am planning to
1) have 500-1000 built to be tested in the consumer market. I do expect some problems.
|
Probably there will be some..;
Quote: |
2) after initial feedback make orders of things like PCB and microchips for quantity of say 5k - 10k a year for the first few years. (I know it is not much compared to some organisations, however for us it is big!!!!)
In terms of the program. Is there anything that I need to do other then write the program as I have been. i.e are there special standards procedures that I need to do??? or the code that I have written which seems to work fine when developing is ok. Is there anythings that I should add. (please note we have methods of debugging and testing the code without dismantling the device)
|
You can program the PIC exactly the same way as you do it during development. However this thing depends on how is organize the production in your company. This kind of things should be decided with a produciton engineer.
A thing to think about is maybe to set up PIC fuses in order to protect your code from being read.
An advice is that your code should be as proper and as close to the final one as possible.
Quote: |
I take it the distributers of the microchips some will have facilities to program the chip and then send them programmed to the assembly warehouse? How much extra cost does this mean on top of the chip?? (I am based in the UK however any predictions will do to get a ball park figure). I take it the most common method is to send them the hex code and they will program it? Is the some standard for the hex code????
|
The standard for the hex files is called "Intel HEX".
About make the part to be programmed externally, here again it depends on the facilities your company have to do it itself.
Quote: |
I The PIC18F45K20 is newish chip, do you think it is risky to use this chip..
|
If your program works well in prototypes, there is no reason...
Quote: |
I think I am scaring myself about going into production and everything will break. Hence any advise/ info/weblinks/books will be good.
|
The strange thing is that it seems that you absoluty don't know the organization and functioning way of the production warehouse of your company.
All questions you asked shall be answered by somebody that perfectly knows the capabilities of the production. This is typically the job of a production engineer, and rarely the one of a development engineer (except maybe in some very small companies).
Try to find a colleague able to guide you in this task...
Quote: |
ps: things like CE/FDA standards have been considered. Will be going for FDA in the future.
please advise.
regards.... |
Matro. |
|
|
ckielstra
Joined: 18 Mar 2004 Posts: 3680 Location: The Netherlands
|
|
Posted: Fri Apr 25, 2008 8:36 am |
|
|
All chips have error, new chips only a bit more. If you want to play it safe I would go for an older model chip of which most errors are known, than you can check if these errors affect your application.
At least check the errata sheets for known problems. The errata sheet for the 18F45K20 describes 24 problems, a relative high number meaning the chip is still very young. And as this Feb-2008 issue of the errata sheet is the first edition it is possible there are more (small) errors out there.
Even if bugs are fixed in a new stepping than most suppliers can not guarantee what stepping you will receive It can even be a mixture of steppings.
This all sounds scary... On the other side, have you tested your application well than you could be safe. Don't forget to test over the entire temperature range. |
|
|
newbieHasQuestions Guest
|
|
Posted: Fri Apr 25, 2008 8:38 am |
|
|
hello
hey Asmallri: A bootloader is a good idea, thanks will have to consider that.
hey Matro: Your right in that the company is really small and that I am the production/designer/developer of the product (we have one other guy who works on the mechnical design) and hence no one readly available to ask. (I know it is not ideal but it is the way it is for the time being) The production warehouse will be outsourced to another company, and suspect that they will have there own standards and ways of doing things. Thought I would just get as much information that I can to be prepared too some degree .
In terms of the fuses will defo look at what is avaliable to stop someone reading it.
regards |
|
|
newbieHasQuestions Guest
|
|
Posted: Fri Apr 25, 2008 8:45 am |
|
|
hey ckielstra
thanks for the reply never thought of the problem of stepping of microchips and distributers. Will test for all temperature ranges. Also will have a closer look at the errata datasheet for PIC18F45K20.
regrads |
|
|
horkesley
Joined: 20 Feb 2007 Posts: 48 Location: Essex UK
|
Production |
Posted: Fri Apr 25, 2008 9:09 am |
|
|
Hi,
Horkesley Electronics Limited is a small UK based company involved in the development of embedded systems.
We put production out to a thrd party company as we do not have production facilities.
I would suggest a build up in volume, 1 to 5 prototypes always work, so build up your volume gradually, as you will almost certainly have problems.
Sometimes we set up the production company to do the programing. You may need to supply some equipment.
Debugging faulty units is an important issue.
Depending on the value of the product you must decide how much time you are prepared to spend fixing faulty units before you put them in the scrap bin. Consider the cost of this.
An important issue here is additional code to assist with fault finding, a sort of self test routine.
Test points on the PCB can be useful if the manufacturer is going to fault find units.
It depends very much on the value and complexity of the product.
I think that a few useful points, let me know if I can help in anyway.
Regards _________________ Horkesley Electronics Limited |
|
|
newbieHasQuestions Guest
|
|
Posted: Fri Apr 25, 2008 1:38 pm |
|
|
Thanks Horkesley
Have recieved some useful tips. I will be talking to some distributers about chips and whether they have programming faciliaties, I know that you can go through microchip to do this by downloading from the web. Not sure whether this is the best and most economical way. All routes will be investigated.
regards
ps: Do you use CCS compiler? Have you experienced any major problems with it? |
|
|
crystal_lattice
Joined: 13 Jun 2006 Posts: 164
|
Manufacturing |
Posted: Sat Apr 26, 2008 12:51 am |
|
|
Thought i might just give my input...
Maybe contact microchip regarding the supply of preprogrammed chips, this will save you time, money on programming facilities and might even eliminate the problem of stepping as you could maybe request a batch of a particular stepping.
Another option is to include in circuit programming port and setup a jig to program them yourself/manufacturing company, this does take time but will probarly not cost an arm and leg...
Have a search in the forum/web for "TEAclipper", it is a nifty programming util that can program your product by clipping in a 'dongle' this can be useful as it can be programmed to only do X number of firmware flashing, this allows your products' 'agents' to do firmware upgrades where needed.
Kind regards |
|
|
asmallri
Joined: 12 Aug 2004 Posts: 1635 Location: Perth, Australia
|
|
Posted: Sat Apr 26, 2008 6:10 am |
|
|
If you are using DIP packages then for your initial production run I suggest programming the PIC yourself and delivering the PICs preprogrammed to your contract manufacturer. The quantities you are talking about is easy enough to deal with like this.
It is trickier with SMD, in this case for small production runs it is easier to program in circuit using ISCP. If you plan to use different images to test the target hardware then a bootloader will make this process easier as you only need to perform the ISCP once and then can change images throughout the hardware testing and troubleshooting stages without the need for ICSP.
From experience in using contract assemblers the quality varies greatly. On runs of 500 units with a good quality assembler, I would expect to see assembly errors in less than 2% of the production units.
A common problem that can occur with preprogrammed parts is when parts are transposed between platforms and/or customers. In this case the error rate can increase to 100%. This is a quality control problem with the manufacturer - before entering into an arrangement you should ensure that the contract manufacturer is responsible to "make good" on this type of error. _________________ Regards, Andrew
http://www.brushelectronics.com/software
Home of Ethernet, SD card and Encrypted Serial Bootloaders for PICs!! |
|
|
horkesley
Joined: 20 Feb 2007 Posts: 48 Location: Essex UK
|
CCS |
Posted: Mon Apr 28, 2008 2:48 am |
|
|
Hi newbiehasquestion,
I use CCS compiler, currently 4.071 and ICD-U40.
My main problem is not the compiler, but the reliability of the USB driver.
I frequently get an error, target not responding. I have close the debugger disconnect/reconnect the USB lead and open the debugger.
Infarct I sometimes use an old ICD1 with RS232 as this is more reliable.
My next project requires a PIC32 so I am looking at Hitech and Microchip compilers.
Why do you ask, do you have problems with CCS.
Regards, _________________ Horkesley Electronics Limited |
|
|
newbieHasQuestions Guest
|
|
Posted: Mon Apr 28, 2008 2:51 am |
|
|
Thanks everyone for the tips and ideas.
TEAClipper looks like a interesting idea crystal_lattice. As the deivice will have the ability to charge and use with batteries and therefore have some kind of openning for the charger to plug (which will be the usb type connection. We will not be using true USB in the future but emulatered serial types). We are thinking about having two extra pins available which are connected to the PG/programming pins for reprogramming and also the RX/TX pins for serial communication. (possible have a jumper somewhere were we can switch them over) . THe other pins will be the power/charging pins.
regards |
|
|
Dimmu
Joined: 01 Jul 2007 Posts: 37
|
|
Posted: Mon Apr 28, 2008 5:06 am |
|
|
Hi,
Just for your information,
if your code is intended to be used for medical, people life, vehicle control, ... lets say anything that have a safety related function; then you should use some special kind of coding / doc / verification / validation process that are really expensive ( and in any case I don't think that a PIC is a good choice for safety related functions )
Dimmu |
|
|
newbieHasQuestions Guest
|
|
Posted: Tue May 06, 2008 7:41 am |
|
|
hey horkesley
sorry about the late reply. I have been using CCS for about 2 years and only recently started to get strange errors. The program is very large now and this might be one of the reasons. Need to do more investigating.
An example is when you test a boolean expression true/false with a byte which can only be is 0 or 1. (I do not use bit datatype for portability reasons).
Code: |
if(flagUi8 == true){
//do something
}
|
I have therefore reverted back to
Code: |
if(flagUi8 == 1){
//do something
}
|
less efficent but seems to work.
hey Dimmu
I know what you mean. Next time I will have to consider ARM chips. Saying that The PIC is just capable at the mow, and is quite easy to learn as when I started the project had no idea of microcontrollers. |
|
|
ckielstra
Joined: 18 Mar 2004 Posts: 3680 Location: The Netherlands
|
|
Posted: Tue May 06, 2008 10:24 am |
|
|
Hi Newbie,
In the header files TRUE is defined as 1, so Code: | if(flagUi8 == true){ |
is exactly the same as Quote: | less efficient but seems to work.
| I don't understand this as both your examples should give the exact same code. Unless... you are coding likeHere the compiler will check for 0 and !=0 which is slightly different from comparing to TRUE or FALSE. Comparing against 0 is easier to optimize but depending on your coding style might give some portability issues. |
|
|
|