* 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); | ||||