AVR fuse bits programming via SPI...

Loading thread data ...
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,

Reply to
Oleksandr Redchuk
Reply to
Tchigrinets Vladislav
Reply to
Tchigrinets Vladislav
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,

Reply to
Oleksandr Redchuk

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.