void systemSetup(GlobalState *data) { rs232Setup2(); // configure USART2 rs232Setup1(); // configure USART1 i2CSetup(); RFIDSetup(); #if FRONT_NOT_BACK initSPI1(); initLCD(); keypadSetup(); // configure keypad setupPWM(); #else LEDSetup(); #endif data->myRequestStatus = 0; data->displayPage = 0; data->keyFlag = FALSE; data->displayedKey = FALSE; data->keyPress = -1; data->cursorPos = 0; // Select Game Menu data->mode = -1; data->game = -1; // Find better way to do this data->mainMenuSpots[0] = 40; data->mainMenuSpots[1] = 80; data->mainMenuSpots[2] = 120; data->getInventory = FALSE; data->xbeeFlag = FALSE; data->goBack = FALSE; // Game Related Globals data->keyStatus = -1; memset(data->selectMove, 0, sizeof (int) * 4 * 3); data->selectMove[0][1] = 10; data->cardSelect[0] = 1; data->cardSelect[1] = 0; data->cardSelect[2] = 0; data->cardSelect[3] = 0; data->firstTime = TRUE; data->updateLEDFlag = TRUE; data->lastCards = 0; data->readCard = 0; data->dataBlockNum = 0; data->dataSlotNum = 0; memset(data->dataBlock, 0, sizeof (char) * CARDBLOCKSIZE); data->runGetUpdatedCards = FALSE; data->gotI2C = 0; data->sendI2C = 0; data->displayPage = 0; data->newDisplay = 0; data->newGame = 1; data->newKeyboard = 1; data->doneKeyboard = 0; OpenTimer0(TIMER_INT_OFF & T0_SOURCE_INT & T0_PS_1_32); return; }
int main() { __builtin_disable_interrupts(); // set the CP0 CONFIG register to indicate that kseg0 is cacheable (0x3) __builtin_mtc0(_CP0_CONFIG, _CP0_CONFIG_SELECT, 0xa4210583); // 0 data RAM access wait states BMXCONbits.BMXWSDRM = 0x0; // enable multi vector interrupts INTCONbits.MVEC = 0x1; // disable JTAG to get pins back DDPCONbits.JTAGEN = 0; __builtin_enable_interrupts(); initSPI1(); initI2C2(); i2c_master_setup(); initExpander(); //sine wave int sine[1000]; int i; for(i = 0; i < 1000; i++){ sine[i] = 128 + 127*sin(2*3.14*10*i/1000); } int triangle[1000]; i = 0; for(i = 0; i < 1000; i++){ triangle[i] = .256*i; } i = 0; while(1) { _CP0_SET_COUNT(0); if(_CP0_GET_COUNT() > 24000){ i++; setVoltage(0, sine[i]); setVoltage(1, triangle[i]); _CP0_SET_COUNT(0); } if(i > 1000){ i = 0; } char status = getExpander(); //read the expander char g7 = (status & 0x80) >> 7; //get level of pin g7 setExpander(0, g7); //set pin 0 to level of g7 } }
int16_t main(void) { unsigned int buttonCounter = 20000; int i; /* Configure the oscillator for the device */ ConfigureOscillator(); /* Initialize IO ports and peripherals */ InitApp(); //initSerial(); initSPI1(); initSPI2(); InitI2C(); __delay32(1600000); // allow for POR for all devices initnRF(); ControlByte = 0x00D0; // mpu6050 address InitMPU6050(ControlByte); // InitHMC5883L(); __delay_ms(500); /** Init control loop *****************************************************/ readSensorData(); accXangle = (atan2(accel[0], accel[2])*RAD_TO_DEG); accYangle = (atan2(accel[1], accel[2])*RAD_TO_DEG); gyroXangle = accXangle; gyroYangle = accYangle; compAngleX = accXangle; compAngleY = accYangle; AngleOffset[0] = accXangle; AngleOffset[1] = accYangle; CalibrateGyro(); // Finding the gyro zero-offset SetupInterrupts(); ////// int serStringN = 14; ////// char nRFstatus = 0; //////// int i; ////// delaytime = 1; ////// bool mode = 0; while(1) { /** Read Button RB7 for enable steppers *******************************/ if (buttonState == 0 && PORTBbits.RB7 && !buttonCounter) { buttonState = 1; buttonCounter = 20000; enableSteppers = 0; } if (buttonState == 1 && !PORTBbits.RB7 && !buttonCounter) { enableSteppers = 2; __delay32(40000000); buttonState = 2; buttonCounter = 20000; enableSteppers = 1; } if (buttonState == 2 && PORTBbits.RB7 && !buttonCounter) { buttonState = 3; buttonCounter = 20000; enableSteppers = 0; } if (buttonState == 3 && !PORTBbits.RB7 && !buttonCounter) { buttonState = 0; buttonCounter = 20000; enableSteppers = 0; } if (buttonCounter) { buttonCounter--; } for (i=0;i<100;i++) { i=i; } // __delay32(100); } }
int main() { //int value = 0; char r; makewave(); int count1 = 0; int count2 = 0; __builtin_disable_interrupts(); // set the CP0 CONFIG register to indicate that kseg0 is cacheable (0x3) __builtin_mtc0(_CP0_CONFIG, _CP0_CONFIG_SELECT, 0xa4210583); // 0 data RAM access wait states BMXCONbits.BMXWSDRM = 0x0; // enable multi vector interrupts INTCONbits.MVEC = 0x1; // disable JTAG to get pins back DDPCONbits.JTAGEN = 0; // do your TRIS and LAT commands here TRISAbits.TRISA4 = 0; // ouput TRISBbits.TRISB4 = 1; // input LATAbits.LATA4 = 1; // intialize LED on initSPI1(); initI2C2(); init_ctrl1(); init_ctrl2(); init_ctrl3(); init_OC(); __builtin_enable_interrupts(); while(1) { // use _CP0_SET_COUNT(0) and _CP0_GET_COUNT() to test the PIC timing // remember the core timer runs at half the CPU speed _CP0_SET_COUNT(0); // set core timer to 0 while(_CP0_GET_COUNT() < 480000){ // wait 1ms / 0.001s ; } while(_CP0_GET_COUNT() < 480000){ // wait 1ms / 0.001s ; } while(_CP0_GET_COUNT() < 480000){ // wait 1ms / 0.001s ; } while(_CP0_GET_COUNT() < 480000){ // wait 1ms / 0.001s ; } //setVoltage(0,sinewave[count1]); //setVoltage(1,triangle_wave[count2]); //count1++; //count2++; //if(count1 == 100){ //count1 = 0; //} //if(count2 == 200){ //count2 = 0; //} I2C_read_multiple(0x6B, 0x20, data_array, 14); }// while loop //CS = 0; // listen to me //SPI1_IO(0x38); // most significant byte of address //SPI1_IO(0x00); // the least significant address byte //CS = 1; }