Bootloader branden met usbasp

teding:
Wat heb je aan elkaar aangesloten, en welke pinnen heb je nu gebruikt?

Ik heb een mega met een mega, via de bandverbinding.
Kabel 5 geknipt.

In de mega met de sketch de geknipte reset naar de 10. [ dus het draadje wat van de uit te lezen mega komt, gaat naar de 10 reset ]
Dan heb ik de band op meerdere manier op de te lezen mega gezet.
En op 1 manier kwam deze tekst eruit...

Ok, Op de mega/uno staat op de print een wit puntje voor pin 1
Op een bandkabel zit vaak een klein driehoekje op de connector als pin 1
en/of de ader met rode kleur is pin 1

En welke tekst kwam er nu uit ?

Het enige wat ik zie:

Atmega chip detector.

En ik wacht tot ik een ons weeg...

Zet de sketch in de uno, reset op 10
Andere kabel op een mega

teding:
Zet de sketch in de uno, reset op 10
Andere kabel op een mega

Je raad het nooit.....
Ik heb hem op mijn ethernetboard gezet....:

Atmega chip detector.
Entered programming mode OK.
Signature = 1E 98 01 
Processor = ATmega2560
Flash memory size = 262144
LFuse = FF 
HFuse = D8 
EFuse = FD 
Lock byte = FF 
Clock calibration = AE 
Bootloader in use: Yes
EEPROM preserved through erase: No
Watchdog timer always on: No
Bootloader is 8192 bytes starting at 3E000

Bootloader:

Waarschijnlijk nu goed aangesloten...
En nog een hele lijst eronder...
En nu??

Je hebt nu twee keuze's,
Of je set nick bootloader sketch in de uno

en volgt zijn instructie's

Of je volgt het arduinoISP voorbeeld. Hier heb je dan wellicht een extra condesator nodig tussen de reset en gnd van de uno.
Dus ga voor nick bootloader.
Succes

Dus dit zou hem moeten zijn?:

Atmega chip programmer.
Written by Nick Gammon.
Entered programming mode OK.
Signature = 0x1E 0x98 0x01 
Processor = ATmega2560
Flash memory size = 262144 bytes.
LFuse = 0xFF 
HFuse = 0xD8 
EFuse = 0xFD 
Lock byte = 0xFF 
Clock calibration = 0xAE 
Bootloader address = 0x3E000
Bootloader length = 7434 bytes.
Type 'V' to verify, or 'G' to program the chip with the bootloader ...
Erasing chip ...
Writing bootloader ...
Committing page starting at 0x3E000
Committing page starting at 0x3E100
Committing page starting at 0x3E200
Committing page starting at 0x3E300
Committing page starting at 0x3E400
Committing page starting at 0x3E500
Committing page starting at 0x3E600
Committing page starting at 0x3E700
Committing page starting at 0x3E800
Committing page starting at 0x3E900
Committing page starting at 0x3EA00
Committing page starting at 0x3EB00
Committing page starting at 0x3EC00
Committing page starting at 0x3ED00
Committing page starting at 0x3EE00
Committing page starting at 0x3EF00
Committing page starting at 0x3F000
Committing page starting at 0x3F100
Committing page starting at 0x3F200
Committing page starting at 0x3F300
Committing page starting at 0x3F400
Committing page starting at 0x3F500
Committing page starting at 0x3F600
Committing page starting at 0x3F700
Committing page starting at 0x3F800
Committing page starting at 0x3F900
Committing page starting at 0x3FA00
Committing page starting at 0x3FB00
Committing page starting at 0x3FC00
Committing page starting at 0x3FD00
Written.
Verifying ...
No errors found.
Writing fuses ...
LFuse = 0xFF 
HFuse = 0xD8 
EFuse = 0xFD 
Lock byte = 0xEF 
Clock calibration = 0xAE 
Done.
Type 'C' when ready to continue with another chip ...

Ik zie maar bar weing verschil...
In de output.. en deze:

Atmega chip detector.
Entered programming mode OK.
Signature = 1E 98 01 
Processor = ATmega2560
Flash memory size = 262144
LFuse = FF 
HFuse = D8 
EFuse = FD 
Lock byte = EF 
Clock calibration = AE 
Bootloader in use: Yes
EEPROM preserved through erase: No
Watchdog timer always on: No
Bootloader is 8192 bytes starting at 3E000

Bootloader:

3E000: 0D 94 89 F1 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 
3E010: 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 
3E020: 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 
3E030: 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 
3E040: 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 
3E050: 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 
3E060: 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 
3E070: 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 
3E080: 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 
3E090: 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 
3E0A0: 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 
3E0B0: 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 0D 94 B2 F1 


MD5 sum of bootloader = 8A F4 7A 29 43 A0 D8 7C DB ED 09 A3 8F 40 24 1E 

First 256 bytes of program memory:

0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
10: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
20: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
30: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
40: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
50: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
60: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
70: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
80: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
90: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
A0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
B0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
C0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
D0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
E0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
F0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

Maar waarom staat die watchdog timer dan nog op no?
Of denk je dat alles goed is nu??

teding:
Je hebt nu twee keuze's,
Of je set nick bootloader sketch in de uno
Gammon Forum : Electronics : Microprocessors : Atmega bootloader programmer
en volgt zijn instructie's

Of je volgt het arduinoISP voorbeeld. Hier heb je dan wellicht een extra condesator nodig tussen de reset en gnd van de uno.
Dus ga voor nick bootloader.
Succes

Ik heb nu :

Atmega chip programmer.
Written by Nick Gammon.
Entered programming mode OK.
Signature = 0x1E 0x98 0x01 
Processor = ATmega2560
Flash memory size = 262144 bytes.
LFuse = 0xFF 
HFuse = 0xD8 
EFuse = 0xFD 
Lock byte = 0xEF 
Clock calibration = 0x8E 
Bootloader address = 0x3E000
Bootloader length = 7434 bytes.
Type 'V' to verify, or 'G' to program the chip with the bootloader ...
Verifying ...
No errors found.
Done.
Type 'C' when ready to continue with another chip ...

Dus dat zou moeten kloppen???

Die watchdog snap ik echt niet....

De watchdog timer is een setting in je Fuses
http://www.frank-zhao.com/fusecalc/fusecalc.php?chip=atmega2560
Als je die wil veranderen zal je de fuses moeten aanpassen.
In de sketch zijn ze nu zo gezet

  { { 0x1E, 0x98, 0x01 }, "ATmega2560",  256 * kb,   1 * kb, 
        atmega2560_v2,// loader image
        0x3E000,      // start address
        sizeof atmega2560_v2,   
        256,          // page size (for committing)
        0xFF,         // fuse low byte: external clock, max start-up time
        0xD8,         // fuse high byte: SPI enable, boot into bootloader, 8192 byte bootloader
        0xFD,         // fuse extended byte: brown-out detection at 2.7V
        0x2F },       // lock bits: SPM is not allowed to write to the Boot Loader section.

teding:
De watchdog timer is een setting in je Fuses
http://www.frank-zhao.com/fusecalc/fusecalc.php?chip=atmega2560
Als je die wil veranderen zal je de fuses moeten aanpassen.
In de sketch zijn ze nu zo gezet

  { { 0x1E, 0x98, 0x01 }, "ATmega2560",  256 * kb,   1 * kb, 

atmega2560_v2,// loader image
        0x3E000,      // start address
        sizeof atmega2560_v2,   
        256,          // page size (for committing)
        0xFF,         // fuse low byte: external clock, max start-up time
        0xD8,         // fuse high byte: SPI enable, boot into bootloader, 8192 byte bootloader
        0xFD,         // fuse extended byte: brown-out detection at 2.7V
        0x2F },       // lock bits: SPM is not allowed to write to the Boot Loader section.

Nu ben ik je kwijt...
Wat doet die watchdog timer....
Het probleem waarom ik een bootloader update moet is dat de oude vast icm de watchdog.
Bootloader update gedaan [ geloof ik nu dan eindelijk ]

Maar zie ik die watchdog uit staan.
Als dit een standaard setting zal het wel kloppen.. toch? [ en werkt de watchdog ]
Of moet ik die fusses oid aanpassen ?
Om "het " watchdog probleem op te lossen.,....

Een watchdog is een systeem die kijkt of er nog wel wat gebeurt.
Als er niets meer gebeurt, dan is de processor mogelijk vastgelopen.
De watchdog zal dan de processor resetten om m weer aan de gang te krijgen.
Hoe de controle precies gedaan word weet ik niet.
Maar het ligt voor de hand dat de processor een bitje om moet zetten eens in de zoveel tijd.
Toen er nog geen ingebouwde watchdogs waren werd de adresbus vaak in de gaten gehouden door en extern component.
Als daar niet vaak genoeg een pulsje voorbij kwam op een bepaalde pin, werd er gereset.
Dat laatste heeft alleen zin bij processoren die gebruik maken van een extern parallel geheugen en dat is inmiddels "ouderwets".

MAS3:
Een watchdog is een systeem die kijkt of er nog wel wat gebeurt.
Als er niets meer gebeurt, dan is de processor mogelijk vastgelopen.
De watchdog zal dan de processor resetten om m weer aan de gang te krijgen.
Hoe de controle precies gedaan word weet ik niet.
Maar het ligt voor de hand dat de processor een bitje om moet zetten eens in de zoveel tijd.
Toen er nog geen ingebouwde watchdogs waren werd de adresbus vaak in de gaten gehouden door en extern component.
Als daar niet vaak genoeg een pulsje voorbij kwam op een bepaalde pin, werd er gereset.
Dat laatste heeft alleen zin bij processoren die gebruik maken van een extern parallel geheugen en dat is inmiddels "ouderwets".

Maar oke...
Moet ik nu die fuse aanpassen of niet??

Dat moet je voor jezelf bepalen.
Als je wil dat je programma blijft lopen en reset als ie toch vastgelopen is, zet je m aan.
Als je daar geen behoefte aan hebt, laat je m uitstaan.
Ik weet niet hoe die standaard in de Arduino staat.

MAS3:
Dat moet je voor jezelf bepalen.
Als je wil dat je programma blijft lopen en reset als ie toch vastgelopen is, zet je m aan.
Als je daar geen behoefte aan hebt, laat je m uitstaan.
Ik weet niet hoe die standaard in de Arduino staat.

AAN dus..
Maar waar en hoe doe ik dat???

Dat kun je uit de gegevens halen die je eerder hebt gehad.
Als je op teding's link gaat kijken bij die frank zhao, zie je een aantal zaken waar je vinkjes kunt zetten.
Als je een vinkje zet in het vakje WDTON (WatchDogTimerON), dan zie je dat de waarde in het veld HIGH verandert van 0x89 naar 0x99.
Je kunt dat veld dat verandert eerst aanpassen naar wat er nu bij jou staat, en vervolgens de vakjes aan of uitvinken om de nieuwe waarde te zien.
Gewoon ff mee rommelen dan zul je het vast wel zien.
Vervolgens verander je in de sketch de betreffende regel.
Nick's sketch heeft dat op regel 79 staan.

Ik heb dit zelf niet geprobeerd dus ik kan je niets uit ervaring vertellen, maar dat is wat ik uit de gegeven informatie haal.

MAS3:
Dat kun je uit de gegevens halen die je eerder hebt gehad.
Als je op teding's link gaat kijken bij die frank zhao, zie je een aantal zaken waar je vinkjes kunt zetten.
Als je een vinkje zet in het vakje WDTON (WatchDogTimerON), dan zie je dat de waarde in het veld HIGH verandert van 0x89 naar 0x99.
Je kunt dat veld dat verandert eerst aanpassen naar wat er nu bij jou staat, en vervolgens de vakjes aan of uitvinken om de nieuwe waarde te zien.
Gewoon ff mee rommelen dan zul je het vast wel zien.
Vervolgens verander je in de sketch de betreffende regel.
Nick's sketch heeft dat op regel 79 staan.

Ik heb dit zelf niet geprobeerd dus ik kan je niets uit ervaring vertellen, maar dat is wat ik uit de gegeven informatie haal.

Thanks..
Dat verschilletje van frank zhao zag ik ook...
Alleen als ik op #79 iets ga wijzigen, weigert arduino te compileren...

Dus iemand een andere tip om een 9 veranderd in een 8 te krijgen..

Heel graag..

Verander in bootloader sketch
0xD8, // fuse high byte: SPI enable, boot into bootloader, 8192 byte bootloader
in
0xC8, // fuse high byte: SPI enable, boot into bootloader, 8192 byte bootloader

Daarna de sketch weer in de uno, en de bootloader naar de mega branden

From time to time, it may be useful to have an interrupt or reset delivered independently of the main program code. This may be to wake the AVR from sleep mode or to reset when the program gets stuck in a loop; that's where the watchdog timer comes in. An onboard 128kHz oscillator is used to drive the watchdog with intervals from 16ms to 8s. If the watchdog expires without being touched, the system can catch an interrupt, be reset or both. If you "kick the dog" before the time expires, no action is taken.

While it can be slightly complicated to set up the watchdog by hand, avr-libc has some convenience functions. To enable the watchdog, call watchdog_enable() with the desired duration. Refreshing the watchdog is as simple as a call to watchdog_reset(). If the WDTON fuse is set the watchdog activates automatically, rather than requiring manual activation.

Ik denk niet dat je WDTON op on moet zetten, gebeurt via de software waarschijnlijk al