int main(void) { // Disable Watch Dog Timer RCONbits.SWDTEN = 0; // for LED ODCAbits.ODA6 = 0; TRISAbits.TRISA6 = 0; TRISAbits.TRISA4 = 0; TRISAbits.TRISA0 = 0; //Enable channel OpenI2C1(I2C_ON, I2C_BRG); //Setup_MPU6050(); //LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_PWR_MGMT_1, 0x00); SPI1Init(); SPI2Init(); LCDinit(); LCDProcessEvents(); //_05ms = false; //TimerInit(); unsigned char fifocount[2]; while (1) { if (updateScreen) { LCDProcessEvents(); updateScreen = false; } if (getFifo) { LDByteReadI2C(MPU6050_ADDRESS, MPU6050_RA_FIFO_COUNTH, &fifocount[0], 2); if (((((unsigned int) fifocount[0]) << 8) | fifocount[1]) == 1024) { //need to reset unsigned char temp = 0; LDByteReadI2C(MPU6050_ADDRESS, MPU6050_RA_USER_CTRL, &temp, 1); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_USER_CTRL, 0b00000100 | temp); /* int i = 0; for(i = data_p; i < data_p+CHUNK_SIZE; i++){ rpiData.imu[i] = 0; }*/ __builtin_btg((unsigned int *) &LATA, 0); } else if (((((unsigned int) fifocount[0]) << 8) | fifocount[1]) >= 42) { LDByteReadI2C(MPU6050_ADDRESS, MPU6050_RA_FIFO_R_W, &rpiData.imu[data_p], DMP_PACKET_SIZE); __builtin_btg((unsigned int *) &LATA, 4); } getFifo = false; } __builtin_btg((unsigned int *) &LATA, 6); } return 0; }
int main(void) { /* Init Clock */ PLLFBD = 126; CLKDIVbits.PLLPOST = 0; CLKDIVbits.PLLPRE = 1; __builtin_write_OSCCONH(0x03); __builtin_write_OSCCONL(OSCCON | 0x01); while (OSCCONbits.COSC != 3) ; while (OSCCONbits.LOCK != 1) ; tx_fifo.head=0; tx_fifo.tail=0; rx_fifo.head=0; rx_fifo.tail=0; /* Init PORT I/O */ init_io(); init_pps(); init_uart(); init_can(); while (true) { counter++; counter_can++; fifo_putchar(&tx_fifo); if (can_test_receive()) print_rom_fifo("received CAN packet\r\n", &tx_fifo); if (counter_can == 30000) { can_test_send(); counter_can = 0; } if (counter == 50000) { print_rom_fifo("Hello dsPIC33 !\r\n", &tx_fifo); //print_debug_fifo(&tx_fifo); // ClrWdt(); counter = 0; } __delay_us(10); __builtin_btg((unsigned int *)&LATA, 0); __builtin_btg((unsigned int *)&LATA, 0); __builtin_btg((unsigned int *)&LATA, 0); __builtin_btg((unsigned int *)&LATA, 0); __builtin_btg((unsigned int *)&LATA, 0); __builtin_btg((unsigned int *)&LATA, 0); __builtin_btg((unsigned int *)&LATA, 0); __builtin_btg((unsigned int *)&LATA, 0); } }
void __attribute__((interrupt, auto_psv)) _DMA0Interrupt(void) { if(DmaBuffer == 0) { ProcessADCSamples(BufferA); } else { ProcessADCSamples(BufferB); } DmaBuffer ^= 1; __builtin_btg((unsigned int *)&LATA, 6); // Toggle RA6 IFS0bits.DMA0IF = 0; //Clear the DMA0 Interrupt Flag }