AVR fuse bits programming via SPI...

Jan 10, 2005 4 Replies
äÅÎØ ÄÏÂÒÙÊ. íÏÉ ÐÏÚÄÒÁ×ÌÅÎÉÑ Ó ÎÁÓÔÕÐÉ×ÛÉÍ îÏ×ÙÍ çÏÄÏÍ! ëÁËÏ× ÁÌÇÏÒÉÔÍ ÞÔÅÎÉÑ É ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÑ FUSE ÂÉÔÏ× × AVR ÍÉËÒÏËÏÎÔÒÏÌÌÅÒÏ× ÐÏ ÉÎÔÅÒÆÅÊÓÕ SPI? ë ÐÒÉÍÅÒÕ ÆÏÒÍÁÔ ÉÎÓÔÒÕËÃÉÉ ÍÉËÒÏËÏÎÔÒÏÌÌÅÒÁ AT90S4433 Read Fuse Bits: 1010 0000 xxxx xxxx xxxx xxxx xx87645 ÓÏ×ÐÁÄÁÅÔ Ó ÉÎÓÔÒÕËÃÉÅÊ Read EEPROM Memory: 1010 0000 xxxx xxxa bbbb bbbb oooo oooo ë ÔÏÍÕ ÖÅ, × ÏÐÉÓÁÎÉÉ ÍÉËÒÏËÏÎÔÒÏÌÌÅÒÏ× ATmega ÞÉÔÁÀ: "The Fuse values are latched when the device enters programming mode and changes of the Fuse values will have no effect until the part leaves Programming mode. This does not apply to the EESAVE Fuse which will take effect once it is programmed. The fuses are also latched on Power-up in Normal mode." ô.Å., ÅÓÌÉ Ñ ÐÒÁ×ÉÌØÎÏ ÐÏÎÑÌ, ÔÏ ÄÌÑ ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÑ Fuse bits (ÚÁ ÉÓËÌÀÞÅÎÉÅÍ EESAVE Fuse) × ÁÌÇÏÒÉÔÍÅ ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÑ ÎÅÏÂÈÏÄÉÍÏ ÐÏÓÌÅ "Power-up sequence" ÐÒÏÐÕÓÔÉÔØ ÛÁÇ ÓÉÎÈÒÏÎÉÚÁÃÉÉ "Programming Enable serial programming" É ÐÅÒÅÈÏÄÉÔØ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ Ë ÚÁÐÉÓÉ / ÞÔÅÎÉÀ Fuse bits. ôÁË ÌÉ ÜÔÏ É ÄÌÑ ×ÓÅÈ ÌÉ AVR ÍÉËÒÏËÏÎÔÒÏÌÌÅÒÏ× ÓÐÒÁ×ÅÄÌÉ×Ï? ó Õ×ÁÖÅÎÉÅÍ ÷ÌÁÄÉÓÌÁ× þÉÇÒÉÎÅÃ.
10-Jan-05 09:16 Tchigrinets Vladislav wrote to :

TV> Каков алгоритм чтения и программирования FUSE битов в AVR микроконтроллеров TV> по интерфейсу SPI? TV> К примеру формат инструкции микроконтроллера AT90S4433 TV> Read Fuse Bits: 1010 0000 xxxx xxxx xxxx xxxx xx87645 TV> совпадает с инструкцией TV> Read EEPROM Memory: 1010 0000 xxxx xxxa bbbb bbbb oooo oooo Русский перевод на 90s4433 читал или просто недосмотрел? Для read fuse bits вначале идёт 0101 а не 1010.

TV> К тому же, в описании микроконтроллеров ATmega читаю: TV> "The Fuse values are latched when the device enters programming mode and TV> changes of the Fuse values will have no effect until the part leaves TV> Programming mode. This does not apply to the EESAVE Fuse which will take TV> effect once it is programmed. The fuses are also latched on Power-up in TV> Normal mode." TV> Т.е., если я правильно понял, то для программирования Fuse bits (за TV> исключением EESAVE Fuse) в алгоритме программирования необходимо после TV> "Power-up sequence" пропустить шаг синхронизации "Programming Enable TV> serial TV> programming" и переходить непосредственно к записи / чтению Fuse bits. Из чего такой вывод? После power up надо войти в программирование, иначе ни одна из команд программирования работать не будет. Более того, fuse bits запоминаются в защёлках по пути к тем местам, которыми они управляют, но читаются программатором непосредственно они до защёлок. Поэтому, например, если перед программированием кристалл был поставлен на кварц и там было, скажем, 4МГц, а программатором его переставили на 128кГц внутренний RC, то до конца процесса программирования он всё равно останется на кварце (такое в защёлках) и можно будет работать с ним по SPI на высокой частоте, но по read fuse bits будет читаться новое значение, соответствующее RC.

wbr,

äÅÎØ ÄÏÂÒÙÊ! óÐÁÓÉÂÏ ÚÁ ÏÔ×ÅÔ.
÷ÏÔ ËÁË ÒÁÚ ÜÔÁ ÎÅÓÏÓÔÙËÏ×ËÁ ÍÅÎÑ É ÐÏÄ×ÅÌÁ, Õ ÄÒÕÇÉÈ ÍÉËÒÏËÏÎÔÒÏÌÌÅÒÏ× ÄÅÊÓÔ×ÉÔÅÌØÎÏ 0101 É ÎÉ ËÁË ÎÅ ÍÏÇ ×ßÅÈÁÔØ × ÎÅÏÄÎÏÚÎÁÞÎÕÀ ÐÏÓÌÅÄÏ×ÁÔÅÌØ 1010... ñ ÐÒÅÄÐÏÞÉÔÁÀ ÐÏÌØÚÏ×ÁÔØÓÑ ÒÁÓÐÅÞÁÔËÁÍÉ, Á ÞÔÏ ÎÅ ÒÁÓÐÅÞÁÔÁÎÏ - ÔÏ Ó ÜËÒÁÎÁ ÞÉÔÁÀ. ïËÁÚÙ×ÁÅÔÓÑ ÜÔÏ ÏÛÉÂËÁ ÄÁÔÁÛÉÔÁ "Rev. 1042-11/98" (ÁÎÇÌ.), ËÏÔÏÒÙÊ É ÂÙÌ Õ ÍÅÎÑ ÐÏÄ ÒÕËÏÊ. ó Atmel ÓÁÊÔÁ ÓËÁÞÁÌ ÎÏ×ÙÊ ÄÁÔÁÛÉÔ ÎÁ AT90S4433 "Rev. 1042H-AVR-04/03" ÇÄÅ ÐÒÁ×ÉÌØÎÏÅ ÚÎÁÞÅÎÉÅ 0101... åÓÔØ ÏÐÅÞÁÔËÉ É × XML ÆÁÊÌÅ AVRStudio4.10 (ÄÉÒÅËÔÏÒÉÑ Partdescriptionfiles) ÎÁ ÄÅ×ÁÊÓ ATmega103.xml: ÐÏ ÏÐÉÓÁÎÉÀ ATmega103 ÉÍÅÅÔ Ä×Á ÌÏËÂÉÔÁ LB1 É LB2, Á × XML ÆÁÊÌÅ ÅÝÅ ÞÅÔÙÒÅ Boot Lock bit ÐÒÅÄÓÔÁ×ÌÅÎÙ. âÏÌÅÅ ÔÏÇÏ Extended fuse bit × ÎÅËÏÔÏÒÙÈ XML ÆÁÊÌÁÈ ÎÕÍÅÒÕÀÔÓÑ ÎÅ Ó ÎÕÌÑ Á Ó ÅÄÉÎÉÃÙ... ×ÏÔ ÔÁË ÐÁÒÓÉÛ ÆÁÊÌ Á ÐÏÔÏÍ Ë ÕÎÉ×ÅÒÓÁÌØÎÏÓÔÉ ÄÏÂÁ×ÌÑÅÛØ ÚÁÐÌÁÔËÉ...

MfG ÷ÌÁÄÉÓÌÁ× þÉÇÒÉÎÅÃ.

äÅÎØ ÄÏÂÒÙÊ! æØÀÚÅ ÂÉÔÓ ÐÉÛÅÔÓÑ, ÞÔÏ, ËÏÎÅÞÎÏ, ÒÁÄÕÅÔ, ÎÏ Ñ ÔÁË ÐÏÎÉÍÁÀ, ÞÔÏ ÆØÀÚÅ ÐÉÛÅÔÓÑ × ÐÁÍÑÔØ ÔÉÐÁ EEPROM, ÐÏÜÔÏÍÕ ÎÅÏÂÈÏÄÉÍÏ ×ÙÄÅÒÖÁÔØ ÐÁÕÚÕ ÍÅÖÄÕ ÚÁÐÉÓØÀ Low Fuse Byte, High Fuse Byte and Extended Fuse Byte, ËÏÔÏÒÁÑ ÄÌÑ ATmega32 ÓÏÓÔÁ×ÌÑÅÔ ÐÏÒÑÄËÁ 9 ms...

MfG Vladislav Tchigrinets.

ÍÉËÒÏËÏÎÔÒÏÌÌÅÒÏ×
15-Jan-05 12:25 Tchigrinets Vladislav wrote to Oleksandr Redchuk:

TV> Фьюзе битс пишется, что, конечно, радует, но я так понимаю, что фьюзе TV> пишется в память типа EEPROM, поэтому необходимо выдержать паузу между TV> записью Low Fuse Byte, High Fuse Byte and Extended Fuse Byte, которая TV> для TV> ATmega32 составляет порядка 9 ms... Да, конечно, задержка нужна. Для нескольких кристаллов она даже в документации прописана была :-) На всякий случай я делаю двойную задержку EEPROM (не жалко, fuse-байтов не так много).

wbr,

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required