Exemple #1
0
void setLED(int onoff){
	int bit;
        unsigned int bitmask;
        unsigned int writevalue;
        int temp, read;
        int mask;
	int LED;
	
	if(onoff > 2) LED = LEDSTATUS;
	else LED = LEDACTIVE;

	if(onoff == 3) onoff = 0;
	else if(onoff == 4) onoff = 1;

        if(LED == LEDACTIVE) bit = 2;
	else bit = 1;

        read = peek16(GPIODDIRECTION);

        //  Create a mask with all 1, except the desired bit = 0;
        mask = 1;
        mask = mask << bit;
        mask = ~mask;

        // Force desired bit to 0; leave the rest unchanged.
        writevalue = read & mask;

	// Set the desired bit = 1
        temp = 1;
        temp = temp << bit;
        writevalue = temp | writevalue;

        poke16(GPIODDIRECTION, writevalue);

	//Direction is set, now write the data.

        read = peek16(GPIODDATA);

	 //  Create a mask with all 1, except the desired bit = 0;
        mask = 1;
        mask = mask << bit;
        mask = ~mask;

        // Force desired bit to 0; leave the rest unchanged.
        writevalue = read & mask;

        // Set the desired bit = onoff
        temp = onoff;
        temp = temp << bit;
        writevalue = temp | writevalue;

        poke16(GPIODDATA, writevalue);


}
Exemple #2
0
//Added 2-10-2012 5:12pm
float get_adc()
{
	int devmem,volcode,voldig,volten,volhund;
	devmem = open("/dev/mem", O_RDWR|O_SYNC);
	assert(devmem != -1);
	sysconregs = mmap(0, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, 
	  devmem, 0x30000000);
	poke16(0x80, 0x08); // configure ADC
	poke16(0x82, 0x10); // enable all 6 channels
	usleep(500000); // allow time for conversions
	volcode = (signed short)peek16(0x8e);
	volcode = (volcode * 1006)/200;//Because for the ts-8160 board, there is a circuit that provide input voltage input= realvoltage*(R2/(R1+R2)). 
                               //In this case, R1=200,R2=806.
	volcode = 2.1*(volcode * 2048)/0x8000;
	voldig = volcode/1000;
	volten = volcode/100-voldig*10;
	volhund = volcode/10-(volcode/100)*10;
	char s[5]="";
	sprintf(s,"%d.%d%d",voldig,volten,volhund);
	float m =atof(s);
	poke16(0x82, 0x00); // disable all 6 channels
    return m;
}
Exemple #3
0
int main(int, char *[]){

    srandom(time(NULL)); //seed random()

    if ((fp = ::open("/dev/usrp_e0", O_RDWR)) < 0){
        std::cerr << "Open failed" << std::endl;
        return -1;
    }

    size_t num_pass = 0, num_fail = 0;
    for (size_t i = 0; i < num_test_iters; i++){
	if(i%1000000 == 0) {
	    std::cout << "num pass: "******"\tnum fail: " << num_fail << std::endl;
	}
        //make random values
        int random_test32 = ::random();
        int random_test16 = ::random() & 0xffff;
        int random_secs = ::random();

        //set a bunch of registers
        poke16(UE_REG_MISC_TEST, random_test16);
        poke32(UE_REG_SR_MISC_TEST32, random_test32);
        poke32(UE_REG_TIME64_TICKS, 0);
        poke32(UE_REG_TIME64_IMM, 1); //immediate
        poke32(UE_REG_TIME64_SECS, random_secs);

        //read a bunch of registers
        if (
            (peek16(UE_REG_MISC_TEST) == random_test16) and
            (peek32(UE_REG_RB_MISC_TEST32) == random_test32) and
            (peek32(UE_REG_RB_TIME_NOW_SECS) == random_secs) and
//            (peek32(UE_REG_RB_TIME_NOW_TICKS) < 1000000) and
        true) num_pass++;
        else  num_fail++;
    }

    std::cout << "num pass: "******"num fail: " << num_fail << std::endl;

    ::close(fp);
    return 0;
}