реклама на сайте
подробности

 
 
> Прочитать из C содержание Fuses и Lock bits, можно ли без inline-ассемблера.
Xorval
сообщение Jun 10 2006, 14:42
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 79
Регистрация: 1-06-05
Из: Мос. обл.
Пользователь №: 5 620



Требуется прочитать из программы на Си состояние Fuses и Lock bits.
Кристалл - ATtiny13. Среда - IAR.
Пытался описать переменную в функции, так чтобы она попала в R30-R31 (ZL-ZH). Не получается.
Может быть кто-нибудь знает "культурный" способ прочитать Fuses и Lock bits из Си?
И уж заодно - можно ли указать для auto-переменной, в какой регистр я ее хочу поместить?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bmf
сообщение Jun 11 2006, 11:38
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 146
Регистрация: 6-01-05
Из: Украина
Пользователь №: 1 831



для ATMEGA в IAR делал так

#include <inavr.h>

#define _GET_LOCK_BITS() __AddrToZByteToSPMCR_LPM( (void __flash *) 0x0001, 0x09 )
#define _GET_LOW_FUSES() __AddrToZByteToSPMCR_LPM( (void __flash *) 0x0000, 0x09 )
#define _GET_HIGH_FUSES() __AddrToZByteToSPMCR_LPM( (void __flash *) 0x0003, 0x09 )
#define _GET_EXTENDED_FUSES() __AddrToZByteToSPMCR_LPM( (void __flash *) 0x0002, 0x09 )
#define _SET_LOCK_BITS(data) __DataToR0ByteToSPMCR_SPM( data, 0x09 )
#define _ENABLE_RWW_SECTION() __DataToR0ByteToSPMCR_SPM( 0x00, 0x11 )

#define _WAIT_FOR_SPM() while( SPMCR_REG & (1<<SPMEN) );

// Read lock bits.
_WAIT_FOR_SPM();
sendchar( _GET_LOCK_BITS() );

// Read fuse bits.
_WAIT_FOR_SPM();
sendchar( _GET_LOW_FUSES() );

// Read high fuse bits.
_WAIT_FOR_SPM();
sendchar( _GET_HIGH_FUSES() );

// Read extended fuse bits.
_WAIT_FOR_SPM();
sendchar( _GET_EXTENDED_FUSES() );
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 12:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01348 секунд с 7
ELECTRONIX ©2004-2016