Ejemplo n.º 1
0
//______________________________________________________________________
void		Lightshow(int *time) {
static	int	t=0,t1=0,t2=0,t3=0;
	
				if(*time != t) {
					t=*time;
					_led(-1,-1);
				}

				if(t < 10000) {
					if(!(++t1 % NN)) {
						_led(t3,0);
						++t2;
						t2 %= Nk;
						if(t2==t3)
							_led((t3+1)%Nk,20);
					}
					if(!(t1 % ((NN*Nk)+1))) {
						t3=t2;
						_led(t3%Nk,20);
						_led((t3+1)%Nk,0);
					}					
				}
}
Ejemplo n.º 2
0
void StartDefaultTask(void const * argument) {
    Pin _led(LED_PIN, Pin::Config().setMode(Pin::MODE_OUTPUT));
    led = &_led;
    printf("Initializing SDIO DMA test...\n");
    if (!sdInit()) {
        error("Failed to initialize sdio\n");
        MatchBox::blinkOfDeath(_led, (MatchBox::BlinkCode) SDIO_INIT);
    }
    if (!sdDmaInit()) {
        debug("Failed to initialize sdio dma\n");
        MatchBox::blinkOfDeath(_led, (MatchBox::BlinkCode) SDIO_DMA);
    }

    int count = 0;
    uint8_t buff[512];
    if (uint32_t(&buff[0]) & 0x3 != 0) {
        error("Buffer not aligned!\n");
        MatchBox::blinkOfDeath(_led, (MatchBox::BlinkCode) BUFFER_NOT_ALIGNED);
    }
    bzero(buff, sizeof(buff));

    // Seed with random value
    srand(HAL_GetTick());

    printf("Starting DMA\n");
    while (1) {
        char tmp[sizeof(buff)]; // temporary read buffer, for verification
        for (int i = 0; i < sizeof(buff); i++) {
            buff[i] = rand() & 0xff;
        }
        writeBlock(&buff[0], count * 512);
//        while (0x100 != (SDGetStatus(&uSdHandle) & 0x100))
//            ;
//        printf("read..\n");
        readBlock(&tmp[0], count * 512);
        if (0 != memcmp(tmp, buff, sizeof(buff))) {
            debug("*** readback error: blocks differ! ***\n");
        } else {
            if (!(count % 64)) {
                printf("\n");
                printf("Block %08x", count);
            } else {
                printf(".");
            }
        }
        //dumpBlock(&buff[0], count);
        _led.write(count++ & 1);
    }
}
Ejemplo n.º 3
0
/**
  * @brief  LED processing
  * @param a: led ID, 0.9 as defined in pfm.h ... _RED1,_BLUE2 ... etc.
  * @param b: msecs, 0=off, -1=perm. on, a=-1 = periodic call, 1 msec
  * @retval : None
  */
void	_led(int a, int b) {
int				i;
static 	
int 	t[]={1,1,1,1,1,1,1,1,1,1};

				if(a==-1) {
					for(i=0;i<10;++i) {
						if(t[i])
							if(!--t[i])
								_led(i,0);
					}
					return;
				}
				if(b==0) {
					t[a]=0;
					__LED_OFF(gpio[a], pin[a]);
				} else {
					if(b==-1)
						t[a]=0;
					else
						t[a]=b;
					__LED_ON(gpio[a], pin[a]);
				}
}