[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
это хидер (пусть proto.h) - он где-то определен и
его надо включать, где нужно
#define $pos_1 0 // есть переменные: pos_1, faza_0 и т.д.
#define $faza_0 1 // здесь им присваиваются номера
#define $count_time 2
#define $delay_time 3
#define $korr_interval 4
#define $filtr 5
#define $scale_NO_5ma 6
#define $scale_SO_5ma 7
#define $scale_NO 8
#define $scale_SO 9
#define $A1 10
#define $A2 11
#define $A3 12
#define $A4 13
#define $A5 14
#define $B1 15
#define $B2 16
#define $B3 17
#define $B4 18
#define $B5 19
#define $last 19
#define $zNO 20
#define $zSO 21
а в этом файле работа с eeprom
#include UC load1( UC ); // UC - это unsigned char UC a, b; flash int leng[] = { //---------------------------------------- int getadr( UC num ) { extern UC void init_params(void) { // вот здесь переменные инициируются из eeprom pos_1 = load1( $pos_1 ); save1( &pos_1, $pos_1 ); // пишу char save2( &korr_interval, $korr_interval ); // int save4( &scale_NO_5ma, $scale_NO_5ma ); // float Мэтров, конечно, стошнит от этой красоты, но все прет отлично.
E-mail:
info@telesys.ru
int load2( UC );
float load4( UC );
int c, d;
float e, f;
1, // pos_1 // а в этой табличке находятся
1, // faza_0 // длины хранимых переменных
1, // count_time // ( в байтах )
1, // delay_time
2, // korr_interval
4, // filtr
4, // scale_NO_5ma
4, // scale_SO_5ma
4, // scale_NO
4, // scale_SO
4, // A1
4, // A2
4, // A3
4, // A4
4, // A5
4, // B1
4, // B2
4, // B3
4, // B4
4, // B5
4, // zNO
4, // zSO
};
int a; UC i;
for( a=0, i=0; i
}
//--- записать байт -------------------------------------
void save1( UC *byte, UC n ) {
int adr;
adr = getadr(n);
_EEPUT(adr, *byte);
}
//--- записать слово -------------------------------------
void save2( int *word, UC n ) {
int adr;
UC p[2];
adr = getadr(n);
memcpy(p,word,2);
_EEPUT(adr, p[0]);
_EEPUT(adr+1, p[1]);
}
//--- записать float -------------------------------------
void save4( float *real, UC n ) {
int adr;
UC p[4];
adr = getadr(n);
memcpy( p, real, 4 );
_EEPUT(adr, p[0]);
_EEPUT(adr+1, p[1]);
_EEPUT(adr+2, p[2]);
_EEPUT(adr+3, p[3]);
}
//--- прочитать байт -------------------------------------
UC load1( UC n ) {
int adr;
UC byte;
adr = getadr(n);
_EEGET( byte, adr );
return( byte );
}
//--- прочитать слово -------------------------------------
int load2( UC n ) {
int adr;
UC p[2];
int word;
adr = getadr(n);
_EEGET( p[0], adr );
_EEGET( p[1], adr+1 );
memcpy(&word,p,2);
return( word );
}
//--- прочитать float -------------------------------------
float load4( UC n ) {
int adr;
UC p[4];
float real;
adr = getadr(n);
_EEGET(p[0], adr );
_EEGET(p[1], adr+1 );
_EEGET(p[2], adr+2 );
_EEGET(p[3], adr+3 );
memcpy(&real,p,4);
return( real );
}
//--- а в этом файле идет работа с функциями чтения/записи eeprom
pos_1, faza_0, count_time, delay_time;
extern int
korr_interval;
extern float
filtr, scale_NO_5ma, scale_SO_5ma,
scale_NO, scale_SO,
A1, A2, A3, A4, A5,
B1, B2, B3, B4, B5,
zNO, zSO;
faza_0 = load1( $faza_0 );
count_time = load1( $count_time );
delay_time = load1( $delay_time );
korr_interval = load2( $korr_interval );
filtr = load4( $filtr );
scale_NO_5ma = load4( $scale_NO_5ma );
scale_SO_5ma = load4( $scale_SO_5ma );
scale_NO = load4( $scale_NO );
scale_SO = load4( $scale_SO );
A1 = load4( $A1 );
A2 = load4( $A2 );
A3 = load4( $A3 );
A4 = load4( $A4 );
A5 = load4( $A5 );
B1 = load4( $B1 );
B2 = load4( $B2 );
B3 = load4( $B3 );
B4 = load4( $B4 );
B5 = load4( $B5 );
zNO = load4( $zNO );
zSO = load4( $zSO );
}
// а вот пример записи:
Разбирайся...
Ответы