* superfluo-eraro korektita en cc_delaymaster
@@ -69,12 +69,14 @@ | |||||
#define I_GET_BM 14 | #define I_GET_BM 14 | ||||
#define I_BURST_WRITE 15 | #define I_BURST_WRITE 15 | ||||
void cc_delay_calibrate( ); | |||||
int cc_init( int pRST, int pDC, int pDD ) | int cc_init( int pRST, int pDC, int pDD ) | ||||
{ | { | ||||
if(wiringPiSetup() == -1){ | if(wiringPiSetup() == -1){ | ||||
printf("no wiring pi detected\n"); | printf("no wiring pi detected\n"); | ||||
return 0; | return 0; | ||||
} | } | ||||
cc_delay_calibrate(); | |||||
pinRST=pRST; | pinRST=pRST; | ||||
pinDC=pDC; | pinDC=pDC; | ||||
@@ -172,15 +174,29 @@ uint8_t cc_error() | |||||
* Delay a particular number of cycles | * Delay a particular number of cycles | ||||
*/ | */ | ||||
struct timespec tp={0,0}; | struct timespec tp={0,0}; | ||||
static int cc_delay_mult=50; | |||||
void cc_delay( unsigned char d ) | void cc_delay( unsigned char d ) | ||||
{ | { | ||||
volatile unsigned char i = 50*d; | |||||
volatile unsigned int i = cc_delay_mult*d; | |||||
while( i-- ); | while( i-- ); | ||||
//tp.tv_nsec=40*d; | //tp.tv_nsec=40*d; | ||||
//nanosleep(&tp,NULL); | //nanosleep(&tp,NULL); | ||||
} | } | ||||
/* provas konsideri la rapidecon de la procesoro */ | |||||
void cc_delay_calibrate( ) | |||||
{ | |||||
long time0=micros(); | |||||
cc_delay(200); | |||||
cc_delay(200); | |||||
cc_delay(200); | |||||
cc_delay(200); | |||||
cc_delay(200); | |||||
long time1=micros(); | |||||
cc_delay_mult=cc_delay_mult*200/(time1-time0); | |||||
} | |||||
/** | /** | ||||
* Enter debug mode | * Enter debug mode | ||||
*/ | */ | ||||
@@ -76,6 +76,7 @@ int main(int argc,char **argv) | |||||
uint16_t offset=0; | uint16_t offset=0; | ||||
uint8_t bank=0; | uint8_t bank=0; | ||||
int progress=1; | int progress=1; | ||||
// int nbread=0; | |||||
for( bank=0 ; bank<8 ; bank++) | for( bank=0 ; bank<8 ; bank++) | ||||
{ | { | ||||
printf(".");fflush(stdout); | printf(".");fflush(stdout); | ||||
@@ -93,12 +94,14 @@ int main(int argc,char **argv) | |||||
{ | { | ||||
read1k(bank,i*1024, buf1); | read1k(bank,i*1024, buf1); | ||||
read1k(bank,i*1024, buf2); | read1k(bank,i*1024, buf2); | ||||
// nbread++; | |||||
} while(memcmp(buf1,buf2,1024)); | } while(memcmp(buf1,buf2,1024)); | ||||
for(uint16_t j=0 ; j<64 ; j++) | for(uint16_t j=0 ; j<64 ; j++) | ||||
writeHexLine(ficout,buf1+j*16, 16,(bank&1)*32*1024+ i*1024+j*16); | writeHexLine(ficout,buf1+j*16, 16,(bank&1)*32*1024+ i*1024+j*16); | ||||
printf("\r reading %dk/256k",progress++);fflush(stdout); | printf("\r reading %dk/256k",progress++);fflush(stdout); | ||||
} | } | ||||
} | } | ||||
// fprintf(stderr,"nbread=%d\n",nbread); | |||||
fprintf(ficout,":00000001FF\n"); | fprintf(ficout,":00000001FF\n"); | ||||
// exit from debug | // exit from debug | ||||
cc_setActive(false); | cc_setActive(false); | ||||