Could be a bad pic but I don't know. I'm working with Charles on this and after some additional testing, I'm now thinking that the initial sequence of events called out in his first post was not the issue. At the time, we were unable to program the address and our only explanation was that the jumper setting had caused the issue. I no longer believe that this is our issue.
I think we are experiencing some overall inconsistencies with our MR16 addressing and we did not run the change address process enough times to get the address to change. It could be we are doing something wrong so I am going to provide as much additional information as I can with the hope that you can point us in the right direction. With that goal, I ran the following tests tonight.
Test Background and Scenario:
I used five 18F1220 Pics for this test. I labeled them A, B, 1, 2, & 3.
I also ran these tests using two different MR16 boards that I labeled A & B. As a note, both MR16 boards appear to work fine in operational mode.
I ran through the following sequence.
1. Initialize pics using the latest posted MR16 code (checksum 90D4)
2. Ensure jumper on MR16 is in program address mode
3. Start MR16 address utility
4. Change address to 33 (0x21)
5. Start programming using address utility
6. Power up MR16 using 12v regulated power supply
7. Wait 5 seconds
8. Disconnect power to MR16 by pulling +12V lead
9. Remove pic and check address A00 for a change in value to 0x21
10. When address changes to 0x21, set aside pic and continue process of changing address of other pics
11. If address changes to 0x00, reinitialize pic, and put it back into queue for the next attempt
12. Run loop until all pics change to address 0x21.
I ran this sequence with all five pics and Board A. I then repeated the sequence with all five pics and Board B. At that point, I decided to re-run the test again using Board A to look for any patterns.
Here are my results:
MR16 Board A (first time thru)
1st try: pic 1, 3 changed to 0x21
pic 2, A, B changed to 0x00
2nd try: pic B changed to 0x21
pic A, 2 changed to 0x00
3rd try: pic A changed to 0x21
pic 2 changed to 0x00
4th try: pic 2 changed to 0x21
MR16 Board B
1st try: all pics changed to 0x00
2nd try: pic 2 changed to 0x21
pic 1, 3, A, B changed to 0x00
3rd try: pic B, 1, 3 changed to 0x21
pic A changed to 0x00
4th try: pic A changed to 0x00
5th try: pic A changed to 0x00
6th try: pic A changed to 0x21
MR16 Board A (second time thru)
1st try: all pics changed to 0x00
2nd try: pic 1, 2 changed to 0x21
pic 3, A, B changed to 0x00
3rd try: pic 3, A, B changed to 0x00
4th try: pic A, B changed to 0x21
pic 3 changed to 0x00
5th try: pic 3 changed to 0x00
6th try: pic 3 changed to 0x21
I used a PICkit 2 to re-initialize the code each time the address was set to 0x00. Each time that I reinitialized a pic, I also verified that the address value at A00 was reset to 0x01. As a note, the PICkit 2 never failed to reset the address value to 0x01.
I also want to be clear that this does not effect the operational mode of the MR16. Both of the MR16 boards appear to work fine using the deck program.
Any additional insight would be appreciated. I wondered if the issue might be with the upstream dongle but I ran the test with a different dongle with similar results.