/** * Configurar los pines de I/O para el bus PC-104 */ void GPIO_PC104_init(void) { //------------------------------------------------------------------------------ #if (SCH_PAYBUS_ONBOARD==1) // I2C3 para perifericos de Payload // H1.01 SDA3/CN65/PMD7/RE7 (Pin 5) => pin es RE7 // H1.02 SCL3/CN64/PMD6/RE6 (Pin 4) => pin es RE6 // I2C-3 habilita el mismo sus pines cuando se configura i2c3_open(157, SCH_I2C3_ADDR); #else // H1.01 SDA3/CN65/PMD7/RE7 (Pin 5) => pin es RE7 _TRISE7=0; //pin 0-output 1-input. _LATE7=0; //parte en 0 // H1.02 SCL3/CN64/PMD6/RE6 (Pin 4) => pin es RE6 _TRISE6=0; //pin 0-output 1-input. _LATE6=0; //parte en 0 #endif //------------------------------------------------------------------------------ #if (SCH_MGN_ONBOARD==1) // H1.03 SDA2/CN36/RA3 (Pin 59) => pin es RA3 _TRISA3=0; //pin 0-output 1-input. PPC_MGN_SWITCH=0; //parte en 0 //pin es Magnetorquer_switch #else // H1.03 SDA2/CN36/RA3 (Pin 59) => pin es RA3 _TRISA3=0; //pin 0-output 1-input. _LATA3=0; //parte en 0 #endif //------------------------------------------------------------------------------ #if (SCH_PAY_CAM_nMEMFLASH_ONBOARD==1) // H1.04 SCL2/CN35/RA2 (Pin 58) => pin es RA2 _TRISA2=0; //pin 0-output 1-input. PPC_CAM_SWITCH=0; //parte en 0 //pin es Camera_switch #else // H1.04 SCL2/CN35/RA2 (Pin 58) => pin es RA2 _TRISA2=0; //pin 0-output 1-input. _LATA2=0; //parte en 0 #endif //------------------------------------------------------------------------------ #if (SCH_PAY_GPS_ONBOARD==1) // H1.05 RP25/CN13/PMWR/RD4 (Pin 81) => pin es RD4 _TRISD4=0; //pin 0-output 1-input. PPC_GPS_nRESET=1; //parte en 1 <=> no-reset //pin es GPS_nReset #else // H1.05 RP25/CN13/PMWR/RD4 (Pin 81) => pin es RD4 _TRISD4=0; //pin 0-output 1-input. _LATD4=0; //parte en 0 #endif //------------------------------------------------------------------------------ #if (SCH_PAY_CAM_nMEMFLASH_ONBOARD==1) // H1.06 RPI42/CN57/RD12 (Pin 79) => pin es RD12 _TRISD12=1; //pin 0-output 1-input. PPC_CAM_HOLD_CHECK; //pin es Hold_Camera #else // H1.06 RPI42/CN57/RD12 (Pin 79) => pin es RD12 _TRISD12=1; //pin 0-output 1-input. _LATD12=0; //parte en 0 #endif //------------------------------------------------------------------------------ // H1.07 RP22/CN52/PMBE/RD3 (Pin 78) => pin es RD3 _TRISD3=0; //pin 0-output 1-input. _LATD3=0; //parte en 0 // H1.08 RTCC/RP2/CN53/RD8 (Pin 68) => pin es RD8 _TRISD8=0; //pin 0-output 1-input. _LATD8=0; //parte en 0 // H1.09 RPI32/CN75/RF12 (Pin 40) => pin es RF12 _TRISF12=0; //pin 0-output 1-input. _LATF12=0; //parte en 0 //------------------------------------------------------------------------------ // H1.10 RP31/CN76/RF13 (Pin 39) => pin es RF13 #if (SCH_PAY_LANGMUIR_ONBOARD==1) _TRISF13=0; //pin 0-output 1-input. PPC_LANGMUIR_DEP_SWITCH=0; //parte en 0 //pin es LANGMUIR_switch #else _TRISF13=0; //pin 0-output 1-input. _LATF13=0; //parte en 0. #endif //------------------------------------------------------------------------------ // H1.11 RPI43/CN20/RD14 (Pin 47) => pin es RD14 _TRISD14=0; //pin 0-output 1-input. _LATD14=0; //parte en 0 //------------------------------------------------------------------------------ // H1.12 RP5/CN21/RD15 (Pin 48) => pin es RD15 #if (SCH_PAY_GPS_ONBOARD==1) _TRISD15=0; //pin 0-output 1-input. PPC_GPS_SWITCH=0; //parte en 0 //pin es GPS_switch #else _TRISD15=0; //pin 0-output 1-input. _LATD15=0; //parte en 0 #endif //------------------------------------------------------------------------------ #if (SCH_PAY_CAM_nMEMFLASH_ONBOARD==1) //Pines para la Camara con SPI-1 (SCK1, SDI1, SDO1 nSS1 y nWP) // H1.13 C1IND/RP21/CN8/PMA5/RG6 (Pin 10) => pin es RP21 (SCK) iPPSOutput(OUT_PIN_PPS_RP21,OUT_FN_PPS_SCK1OUT); //iPPSOutput(RPOR10bits.RP21R,0x08); // H1.14 C1INC/RP26/CN9/PMA4/RG7 (Pin 11) => pin es RP26 (SDI) _TRISG7=1; //pin 0-output 1-input. iPPSInput(IN_FN_PPS_SDI1,IN_PIN_PPS_RP26); // H1.15 C2IND/RP19/CN10/PMA3/RG8 (Pin 12) => pin es RP19 (SDO) _TRISG8=0; //pin 0-output 1-input. iPPSOutput(OUT_PIN_PPS_RP19,OUT_FN_PPS_SDO1); //iPPSOutput(RPOR5bits.RP19R,OUT_FN_PPS_SDO1); // H1.16 C2INC/RP27/CN11/PMA2/RG9 (Pin 14) => pin es RG9 (nCS) _TRISG9=0; //pin 0-output 1-input. _LATG9=0; //parte en 0 Open_SPI_1_default(); SPI_nSS_1=1; //nCS de la camara #else //SPI_1 es configurado en PPM_init() para la MemFlash en los pines 70, 71, 72, 80 y 83 // H1.13 C1IND/RP21/CN8/PMA5/RG6 (Pin 10) => pin es RG6 _TRISG6=0; //pin 0-output 1-input. _LATG6=0; //parte en 0 // H1.14 C1INC/RP26/CN9/PMA4/RG7 (Pin 11) => pin es RG7 _TRISG7=0; //pin 0-output 1-input. _LATG7=0; //parte en 0 // H1.15 C2IND/RP19/CN10/PMA3/RG8 (Pin 12) => pin es RG8 _TRISG8=0; //pin 0-output 1-input. _LATG8=0; //parte en 0 // H1.16 C2INC/RP27/CN11/PMA2/RG9 (Pin 14) => pin es RG9 _TRISG9=0; //pin 0-output 1-input. _LATG9=0; //parte en 0 #endif //------------------------------------------------------------------------------ //Conifg para Consola: // H1.17 - U1RX - RP10 - IO.7 - UART 1 PARA CONSOLA SERIAL iPPSInput(IN_FN_PPS_U1RX,IN_PIN_PPS_RP10); // H1.18 - U1TX - RP17 - IO.6 - UART 1 PARA CONSOLA SERIAL iPPSOutput(OUT_PIN_PPS_RP17,OUT_FN_PPS_U1TX); //UART1 - CONSOLA SERIAL - 19200, 8, N, 1 */ //ConfigRS232(51, RS2_M_UART1); //19200 ConfigRS232(25, RS2_M_UART1); //38400 EnableIntU1RX; SetPriorityIntU1RX(5); //------------------------------------------------------------------------------ #if (SCH_PAY_LANGMUIR_ONBOARD == 1) // UART3 para la Langmiur // H1.19 RP30/CN70/RF2 (Pin 52) => (URX3) para el PAY_LANGMUIR iPPSInput(IN_FN_PPS_U3RX,IN_PIN_PPS_RP30); // H1.20 RP16/CN71/RF3 (Pin 51) => (UTX3) para PAY_LANGMUIR iPPSOutput(OUT_PIN_PPS_RP16,OUT_FN_PPS_U3TX); //UART3 para PAY_LANGMUIR ConfigRS232(25, RS2_M_UART3); EnableIntU3RX; SetPriorityIntU3RX(5); #else // H1.19 RP30/CN70/RF2 (Pin 52) => pin es RF2 _TRISF2=0; //pin 0-output 1-input. _LATF2=0; //parte en 0 // H1.20 RP16/CN71/RF3 (Pin 51) => pin es RF3 _TRISF3=0; //pin 0-output 1-input. _LATF3=0; //parte en 0 #endif //------------------------------------------------------------------------------ #if (SCH_MEMSD_ONBOARD==1) // SPI2 para Tarjeta SD de la MB // H1.21 RP4/CN54/RD9 (Pin 69) => pin es RP4 (SCK) iPPSOutput(OUT_PIN_PPS_RP4,OUT_FN_PPS_SCK2OUT); // H1.22 RPI44/CN73/RF7 (pin 54) => pin es RPI44 (SDI) iPPSInput(IN_FN_PPS_SDI2,IN_PIN_PPS_RPI44); // H1.23 RP15/CN74/RF8 (Pin 53) => pin es RP15 (SDO) iPPSOutput(OUT_PIN_PPS_RP15,OUT_FN_PPS_SDO2); // H1.24 CN63/PMD5/RE5 (Pin 3) => pin es RE5 (nSS) _TRISE5=0; //pin 0-output 1-input SPI_nSS_2=1; Open_SPI_2_default(); //SPI_SDI_2 //SPI_SCK_2 //SPI_SDO_2 SPI_nSS_2=1; #else // H1.21 RP4/CN54/RD9 (Pin 69) => pin es RD9 _TRISD9=0; //pin 0-output 1-input _LATD9=0; //parte en 0 // H1.22 RPI44/CN73/RF7 (pin 54) => pin es RF7 _TRISF7=0; //pin 0-output 1-input _LATF7=0; //parte en 0 // H1.23 RP15/CN74/RF8 (Pin 53) => pin es RF8 _TRISF8=0; //pin 0-output 1-input _LATF8=0; //parte en 0 // H1.24 CN63/PMD5/RE5 (Pin 3) => pin es RE5 _TRISE5=0; //pin 0-output 1-input _LATE5=0; //parte en 0 #endif //------------------------------------------------------------------------------ // H1.25 Fault [Active Low] // Este pin del header, no tiene un pin del PIC asignado // H1.26 PMA6/VREF+/CN42/RA10 (Pin 29) => pin es RA10 _VCFG=0b000; // Vr+=Vdd, Vr-=Vss => Vref+ no es usado (_VCFG es bit 15:13 de ADC1CON2) _TRISA10=0; //pin 0-output 1-input. _LATA10=0; //parte en 0 // H1.27 Sense // Este pin del header, no tiene un pin del PIC asignado // H1.28 VREF1 // Este pin del header, no tiene un pin del PIC asignado // H1.29 Reset [Active Low] // Este pin del header, no tiene un pin del PIC asignado // H1.30 VREF-/CN41/PMA7/RA9 (Pin 28) => pin es RA9 _VCFG=0b000; // Vr+=Vdd, Vr-=Vss => Vref- no es usado (_VCFG es bit 15:13 de ADC1CON2) _TRISA9=0; //pin 0-output 1-input. _LATA9=0; //parte en 0 // H1.31 OFF_VCC // Este pin del header, no tiene un pin del PIC asignado // H1.32 5V_USB // Este pin del header, no tiene un pin del PIC asignado // H1.33 PWR_MHX // Este pin del header, no tiene un pin del PIC asignado // H1.34 RST_MHX [Active Low] HS[5..0] //9 RPI41/CN48/RC4 => pin es RC4 //HSO _TRISC4=0; //pin 0-output 1-input. _LATC4=0; // parte en 0 // H1.35 CTS_MHX [Active Low] HS[5..0] //8 RPI40/CN47/RC3 => pin es RC3 //HS1 _TRISC3=0; //pin 0-output 1-input. _LATC3=0; // parte en 0 // H1.36 RTS_MHX [Active Low] HS[5..0] //76 RP24/CN50/RD1 => pin es RD1 //HS5 _TRISD1=0; //pin 0-output 1-input. _LATD1=0; // parte en 0 // H1.37 DSR_MHX [Active Low] HS[5..0] //82 RP20/CN14/PMRD/RD5 => pin es RD5 //HS3 _TRISD5=0; //pin 0-output 1-input. _LATD5=0; // parte en 0 // H1.38 DTR_MHX [Active Low] HS[5..0] //77 RP23/CN51/RD2 => pin es RD2 //HS4 _TRISD2=0; //pin 0-output 1-input. _LATD2=0; // parte en 0 // H1.39 TXD_MHX // copia de H1.18 // H1.40 RXD_MHX // copia de H1.17 //------------------------------------------------------------------------------ #if ((SCH_SYSBUS_ONBOARD == 1) || (SCH_TRX_ONBOARD == 1)) // I2C1 para TRX, EPS y otros perifericos del sistema // H1.41 SDA1/CN84/RG3 (Pin 56) => pin es SDA1 // H1.42 VBACKUP // Este pin del header, no tiene un pin del PIC asignado // H1.43 SCL1/CN83/RG2 (Pin 57) => pin es SCL1 // I2C-1 habilita el mismo sus pines cuando se configura i2c1_open(37, SCH_I2C1_ADDR); #else // H1.41 SDA1/CN84/RG3 (Pin 56) => pin es RG3 _TRISG3=0; //pin 0-output 1-input. _LATG3=0; // parte en 0 // H1.42 VBACKUP // Este pin del header, no tiene un pin del PIC asignado // H1.43 SCL1/CN83/RG2 (Pin 57) => pin es RG2 _TRISG2=0; //pin 0-output 1-input. _LATG2=0; // parte en 0 #endif //------------------------------------------------------------------------------ // H1.44 RSVD0 // Este pin del header, no tiene un pin del PIC asignado // H1.45 RSVD1 // Este pin del header, no tiene un pin del PIC asignado // H1.46 RSVD2 // Este pin del header, no tiene un pin del PIC asignado // H1.47 USER0 // Este pin del header, no tiene un pin del PIC asignado // H1.48 USER1 // Este pin del header, no tiene un pin del PIC asignado // H1.49 USER2 // Este pin del header, no tiene un pin del PIC asignado // H1.50 USER3 // Este pin del header, no tiene un pin del PIC asignado // H1.51 USER4 // Este pin del header, no tiene un pin del PIC asignado // H1.52 USER5 // Este pin del header, no tiene un pin del PIC asignado //------------------------------------------------------------------------------ // H2.01 AN15/REFO/RP29/CN12/PMA0/RB15 (Pin 44) => pin es RB15 _PCFG15=1; //pin 0-ADC 1- I/O _TRISB15=0; //pin 0-output 1-input. _LATB15=0; //parte en 0 // H2.02 AN14/CTPLS/RP14/CN32/PMA1/RB14 (Pin 43) => pin es RB14 _PCFG14=1; //pin 0-ADC 1- I/O _TRISB14=0; //pin 0-output 1-input. _LATB14=0; //parte en 0 //------------------------------------------------------------------------------ #if (SCH_PAY_FIS_ONBOARD==1) // H2.03 AN13/CTED1/CN31/PMA10/RB13 (Pin 42) => pin es AN13 (SENS1) _PCFG13=0; //pin 0-ADC 1- I/O _TRISB13=1; //pin 0-output 1-input. //_LATB13=0; //parte en 0 // H2.04 AN12/CTED2/CN30/PMA11/RB12 (Pin 41) => pin es RB12 (nSS) _PCFG12=1; //pin 0-ADC 1- I/O _TRISB12=0; //pin 0-output 1-input. SPI_nSS_3=1; //parte en 1 // H2.05 AN11/CN29/PMA12/RB11 (Pin 35) => pin es AN11 (SENS2) _PCFG11=0; //pin 0-ADC 1- I/O _TRISB11=1; //pin 0-output 1-input. //_LATB11=0; //parte en 0 // H2.06 AN10/CVREF/CN28/PMA13/RB10 (Pin 34) => pin es RB10 _PCFG10=1; //pin 0-ADC 1- I/O _TRISB10=0; //pin 0-output 1-input. _LATB10=0; //parte en 0 // H2.07 AN9/RP9/CN27/RB9 (Pin 33) => pin es RP9 (SCK) _PCFG9=1; //pin 0-ADC 1- I/O _TRISB9=0; //pin 0-output 1-input. iPPSOutput(OUT_PIN_PPS_RP9,OUT_FN_PPS_SCK3OUT); //_LATB9=0; //parte en 0 // H2.08 AN8/RP8/CN26/RB8 (Pin 32) => pin es RP8 (SDO) _PCFG8=1; //pin 0-ADC 1- I/O _TRISB8=0; //pin 0-output 1-input. iPPSOutput(OUT_PIN_PPS_RP8,OUT_FN_PPS_SDO3); //_LATB8=0; //parte en 0 Open_SPI_3_default(); //SPI_SDI_3 no existe //SPI_SCK_3 //SPI_SDO_3 SPI_nSS_3=1; #else // H2.03 AN13/CTED1/CN31/PMA10/RB13 (Pin 42) => pin es RB13 _PCFG13=1; //pin 0-ADC 1- I/O _TRISB13=0; //pin 0-output 1-input. _LATB13=0; //parte en 0 // H2.04 AN12/CTED2/CN30/PMA11/RB12 (Pin 41) => pin es RB12 _PCFG12=1; //pin 0-ADC 1- I/O _TRISB12=0; //pin 0-output 1-input. _LATB12=0; //parte en 0 // H2.05 AN11/CN29/PMA12/RB11 (Pin 35) => pin es RB11 _TRISB11=0; //pin 0-output 1-input. _LATB11=0; //parte en 0 // H2.06 AN10/CVREF/CN28/PMA13/RB10 (Pin 34) => pin es RB10 _PCFG10=1; //pin 0-ADC 1- I/O _TRISB10=0; //pin 0-output 1-input. _LATB10=0; //parte en 0 // H2.07 AN9/RP9/CN27/RB9 (Pin 33) => pin es RB9 _PCFG9=1; //pin 0-ADC 1- I/O _TRISB9=0; //pin 0-output 1-input. _LATB9=0; //parte en 0 // H2.08 AN8/RP8/CN26/RB8 (Pin 32) => pin es RB8 _PCFG8=1; //pin 0-ADC 1- I/O _TRISB8=0; //pin 0-output 1-input. _LATB8=0; //parte en 0 #endif //------------------------------------------------------------------------------ //Estos pines son TMS_COM, TCK_COM, TDI_COM, TDO_COM del JTAG del TRX //Sin embargo no son ni serian ocupados // H2.09 PGED2/AN7/RP7/CN25/RB7 (Pin 27) => pin es RB7 _PCFG7=1; //pin 0-ADC 1- I/O _TRISB7=0; //pin 0-output 1-input. _LATB7=0; //parte en 0 // H2.10 PGEC2/AN6/RP6/CN24/RB6 (Pin 26) => pin es RB6 _PCFG6=1; //pin 0-ADC 1- I/O _TRISB6=0; //pin 0-output 1-input. _LATB6=0; //parte en 0 // H2.11 PGED1/AN0/RP0/CN2/RB0 (Pin 25) => pin es PGED1 // este pin es usado como PGED1 para programming/debugging con ICD // por lo que modificarlo implica posibles errores al quierer debuggear con el ICD3 // H2.12 PGEC1/AN1/RP1/CN3/RB1 (Pin 24) => pin es PGEC1 // este pin es usado como PGEC1 para programming/debugging con ICD // por lo que modificarlo implica posibles errores al querer debuggear con el ICD3 //------------------------------------------------------------------------------ // H2.13 AN2/C2INB/RP13/CN4/RB2 (Pin 23) => pin es RB2 _PCFG2=1; //pin 0-ADC 1- I/O _TRISB2=0; //pin 0-output 1-input. _LATB2=1; //parte en 1 (por si TRX esta conectado, aunque no deberia) // H2.14 AN3/C2INA/CN5/RB3 (Pin 22) => pin es RB3 _PCFG3=1; //pin 0-ADC 1- I/O _TRISB3=0; //pin 0-output 1-input. _LATB3=1; //parte en (por si TRX esta conectado, aunque no deberia) //------------------------------------------------------------------------------ #if (SCH_PAY_GPS_ONBOARD==1) // H2.15 PGED3/AN4/C1INB/RP28/CN6/RB4 (Pin 21) => pin es RP28 (TX del UART4) _PCFG4=1; //pin 0-ADC 1- I/O _TRISB4=0; //pin 0-output 1-input. _LATB4=0; //parte en 0 iPPSOutput(OUT_PIN_PPS_RP28,OUT_FN_PPS_U4TX); // H2.16 PGEC3/AN5/C1INA/RP18/CN7/RB5 (Pin 20) => pin es RP18 (RX del UART4) _PCFG5=1; //pin 0-ADC 1- I/O _TRISB5=1; //pin 0-output 1-input. //_LATB5=0; //parte en 0 iPPSInput(IN_FN_PPS_U4RX,IN_PIN_PPS_RP18); //UART4 para GPS ConfigRS232(8, RS2_M_UART4); EnableIntU4RX; SetPriorityIntU4RX(5); #else // H2.15 PGED3/AN4/C1INB/RP28/CN6/RB4 (Pin 21) => pin es RB4 _PCFG4=1; //pin 0-ADC 1- I/O _TRISB4=0; //pin 0-output 1-input. _LATB4=0; //parte en 0 // H2.16 PGEC3/AN5/C1INA/RP18/CN7/RB5 (Pin 20) => pin es RB5 _PCFG5=1; //pin 0-ADC 1- I/O _TRISB5=0; //pin 0-output 1-input. _LATB5=0; //parte en 0 #endif //------------------------------------------------------------------------------ #if (SCH_ANTENNA_ONBOARD==1) // H2.17 RPI34/CN67/RE9 (Pin 19) => pin es RE9 (ANTENNA1) _TRISE9=0; //pin 0-output 1-input. PPC_ANT1_SWITCH=0; //parte en 0 //pin es ANT1_switch // H2.18 RPI33/CN66/RE8 (Pin 18) => pin es RE8 (ANTENNA2) _TRISE8=0; //pin 0-output 1-input. PPC_ANT2_SWITCH=0; //parte en 0 //pin es ANT2_switch #else // H2.17 RPI34/CN67/RE9 (Pin 19) => pin es RE9 _TRISE9=0; //pin 0-output 1-input. _LATE9=0; //parte en 0 // H2.18 RPI33/CN66/RE8 (Pin 18) => pin es RE8 _TRISE8=0; //pin 0-output 1-input. _LATE8=0; //parte en 0 #endif //------------------------------------------------------------------------------ // H2.19 ASDA2/RPI35/CN44/RA15 (Pin 67) => pin es RA15, pues I2C-2 esta en H1.3 y H1.4 _TRISA15=0; //pin 0-output 1-input. _LATA15=0; //parte en 0 // H2.20 ASCL2/RPI36/CN43/RA14 (Pin 66) => pin es RA14, pues I2C-2 esta en H1.3 y H1.4 _TRISA14=0; //pin 0-output 1-input. _LATA14=0; //parte en 0 // H2.21 CN77/RG0 (Pin 90) => pin es RG0 _TRISG0=0; //pin 0-output 1-input. _LATG0=0; //parte en 0 //------------------------------------------------------------------------------ #if (SCH_ANTENNA_ONBOARD==1) // H2.22 CN78/RG1 (Pin 89) => pin es RG1 _TRISG1=0; //pin 0-output 1-input. PPC_ANT12_SWITCH=0; //parte en 0 //pin es ANT12_switch // H2.23 CN68/RF0 (Pin 87) => pin es PPC_ANT12_CHECK (CHECK ANTENNA DEPLOY) _TRISF0=1; //pin 0-output 1-input. #else // H2.22 CN78/RG1 (Pin 89) => pin es RG1 _TRISG1=0; //pin 0-output 1-input. _LATG1=0; //parte en 0 // H2.23 CN68/RF0 (Pin 87) => pin es RF0 _TRISF0=1; //pin 0-output 1-input. _LATF0=0; //parte en 0 #endif //------------------------------------------------------------------------------ #if (SCH_PAY_GYRO_ONBOARD==1) // H2.24 CN69/RF1 (Pin 88) => pin es PPC_GYRO_INT2_CHECK _TRISF1=1; //pin 0-output 1-input. //_LATF1=0; //parte en 0 #else // H2.24 CN69/RF1 (Pin 88) => pin es RF1 _TRISF1=0; //pin 0-output 1-input. _LATF1=0; //parte en 0 #endif //------------------------------------------------------------------------------ // H2.25 5V_SYS // Este pin del header, no tiene un pin del PIC asignado // H2.26 5V_SYS // Este pin del header, no tiene un pin del PIC asignado // H2.27 VCC_SYS // Este pin del header, no tiene un pin del PIC asignado // H2.28 VCC_SYS // Este pin del header, no tiene un pin del PIC asignado // H2.29 DGND // Este pin del header, no tiene un pin del PIC asignado // H2.30 DGND // Este pin del header, no tiene un pin del PIC asignado // H2.31 AGND // Este pin del header, no tiene un pin del PIC asignado // H2.32 DGND // Este pin del header, no tiene un pin del PIC asignado // H2.33 S0 // Este pin del header, no tiene un pin del PIC asignado // H2.34 S0 // Este pin del header, no tiene un pin del PIC asignado // H2.35 S1 // Este pin del header, no tiene un pin del PIC asignado // H2.36 S1 // Este pin del header, no tiene un pin del PIC asignado // H2.37 S2 // Este pin del header, no tiene un pin del PIC asignado // H2.38 S2 // Este pin del header, no tiene un pin del PIC asignado // H2.39 S3 // Este pin del header, no tiene un pin del PIC asignado // H2.40 S3 // Este pin del header, no tiene un pin del PIC asignado // H2.41 S4 // Este pin del header, no tiene un pin del PIC asignado // H2.42 S4 // Este pin del header, no tiene un pin del PIC asignado // H2.43 S5 // Este pin del header, no tiene un pin del PIC asignado // H2.44 S5 // Este pin del header, no tiene un pin del PIC asignado // H2.45 VBATT // Este pin del header, no tiene un pin del PIC asignado // H2.46 VBATT // Este pin del header, no tiene un pin del PIC asignado // H2.47 USER6 // Este pin del header, no tiene un pin del PIC asignado // H2.48 USER7 // Este pin del header, no tiene un pin del PIC asignado // H2.49 USER8 // Este pin del header, no tiene un pin del PIC asignado // H2.50 USER9 // Este pin del header, no tiene un pin del PIC asignado // H2.51 USER10 // Este pin del header, no tiene un pin del PIC asignado // H2.52 USER11 // Este pin del header, no tiene un pin del PIC asignado //------------------------------------------------------------------------------ }
/****************************************************************************** **** **** ** ** init() ** ** **** **** ******************************************************************************/ void init(void) { // Force WDT off for now ... having it on tends to confuse novice // users. csk_wdt_off(); // Keep interrupts off for now ... __disable_interrupt(); // All CSK control signals are active LOW. #if defined(__PIC24FJ256GA110__) // PSPM D // Minimal set of I/O ... only necessary control signals are configured as outputs. TRISA = 0xFFFF; TRISB = ~( BIT5); // TX3 TRISC = ~( BIT1); // -OE_USB TRISD = ~( BIT8+BIT5+BIT2+BIT1); // HS3, HS4 & HS5, TX2 TRISE = ~( BIT8+BIT4+BIT3+BIT2); // IO.30, -ON_SD, -ON_MHX & -OE_MHX TRISF = ~( BIT5+BIT3); // TX1 & TX0 PORTA = 0x0000; PORTB = 0x0000+BIT5; // TX3 initially HIGH PORTC = 0x0000+BIT1; // -OE_USB is OFF PORTD = 0x0000+BIT8; // TX2 initially HIGH PORTE = 0x0000+BIT4+BIT3+BIT2; // -ON_SD, -ON_MHX, -OE_MHX are OFF PORTF = 0x0000+BIT3+BIT5; // TX0 & TX1 initially HIGH. PORTG = 0x0000; AD1PCFGL = 0xFFFF; #elif defined(__PIC24FJ256GB110__) // PSPM E Rev A // Minimal set of I/O ... only necessary control signals are configured as outputs. TRISA = 0xFFFF; TRISB = ~( BIT5 ); // TX3 TRISC = ~( BIT1 ); // -OE_USB TRISD = ~( BIT9+BIT8+BIT7+ BIT5 ); // TX0, TX2, HS3, HS5 TRISE = ~( BIT8+ BIT4+BIT3+BIT2 ); // IO.30, -ON_SD, -ON_MHX & -OE_MHX TRISF = ~( BIT5 ); // TX1 TRISG = ~(BIT15 ); // HS4 PORTA = 0x0000; PORTB = 0x0000+BIT5; // TX3 initially HIGH PORTC = 0x0000+BIT1; // -OE_USB is OFF PORTD = 0x0000+BIT9+BIT8; // TX0, TX2 initially high PORTE = 0x0000+BIT4+BIT3+BIT2; // -ON_SD, -ON_MHX, -OE_MHX are OFF PORTF = 0x0000+BIT5; // TX1 initially high. PORTG = 0x0000; #elif defined(__PIC24FJ256GB210__) // PSPM E Rev B // Minimal set of I/O ... only necessary control signals are configured as outputs. TRISA = 0xFFFF; TRISB = ~( BIT5 ); // TX3 TRISC = ~( BIT1 ); // -OE_USB TRISD = ~( BIT9+BIT8+BIT7+ BIT5 ); // TX0, TX2, HS3, HS5 TRISE = ~( BIT8+ BIT4+BIT3+BIT2 ); // IO.30, -ON_SD, -ON_MHX & -OE_MHX TRISF = ~( BIT5 ); // TX1 TRISG = ~(BIT15 ); // HS4 PORTA = 0x0000; PORTB = 0x0000+BIT5; // TX3 initially HIGH PORTC = 0x0000+BIT1; // -OE_USB is OFF PORTD = 0x0000+BIT9+BIT8; // TX0, TX2 initially high PORTE = 0x0000+BIT4+BIT3+BIT2; // -ON_SD, -ON_MHX, -OE_MHX are OFF PORTF = 0x0000+BIT5; // TX1 initially high. PORTG = 0x0000; ANSA = 0x0000; ANSB = 0x0000; ANSC = 0x0000; ANSD = 0x0000; ANSE = 0x0000; ANSF = 0x0000; ANSG = 0x0000; #else #error PIC24F device not supported by CubeSat Kit #endif // High-level inits (works at any clock speed). csk_mhx_close(); csk_mhx_pwr_off(); csk_usb_close(); csk_led_status_close(); // Set up to run with primary oscillator. // See _CONFIG2 above. A configuration-word-centric setup of the // oscillator(s) was chosen because of its relative simplicity. // Note e.g. that PwrMgnt_OscSel() returns FALSE if clock switching // (FCKSM) is disabled ... // Set up Timer2 to run at system tick rate ConfigIntTimer2(T2_INT_ON & T2_INT_PRIOR_1); // Timer is configured for 10 msec (100Hz), with interrupts OpenTimer2(T2_ON & T2_IDLE_CON & T2_GATE_OFF & T2_PS_1_1 & T2_32BIT_MODE_OFF & T2_SOURCE_INT, (MAIN_XTAL_FREQ/(2*100))); // A prescalar is not required because 8E6/200 < 16 bits. #if defined(__PIC24FJ256GA110__) // PSPM D // Configure I/O pins for UARTs via PIC24's PPS system. // RP inputs must be configured as inputs! // CSK UART0 is used as the terminal, via USB, IO.6(RP17) & IO.7(RP10) // CSK UART0 (PIC24 UART1) TX/RX = IO.6/IO.7 iPPSInput(IN_FN_PPS_U1RX,IN_PIN_PPS_RP10); iPPSOutput(OUT_PIN_PPS_RP17,OUT_FN_PPS_U1TX); // CSK UART1 can talk to GPSRM 1 via IO.4(RP16) & IO.5(RP30) // CSK UART1 (PIC24 UART2) TX/RX = IO.4/IO.5 iPPSInput(IN_FN_PPS_U2RX,IN_PIN_PPS_RP30); iPPSOutput(OUT_PIN_PPS_RP16,OUT_FN_PPS_U2TX); // CSK UART2 can talk to GPSRM 1 via IO.16(RP2) & IO.17(RP22) // CSK UART2 (PIC24 UART3) TX/RX = IO.16/IO.17 iPPSInput(IN_FN_PPS_U3RX,IN_PIN_PPS_RP22); iPPSOutput(OUT_PIN_PPS_RP2,OUT_FN_PPS_U3TX); // CSK UART3 can talk to GPSRM 1 via IO.32(RP18) & IO.33(RP28) // CSK UART3 (PIC24 UART4) TX/RX = IO.4/IO.5 iPPSInput(IN_FN_PPS_U4RX,IN_PIN_PPS_RP28); iPPSOutput(OUT_PIN_PPS_RP18,OUT_FN_PPS_U4TX); #elif defined(__PIC24FJ256GB110__) || defined(__PIC24FJ256GB210__) iPPSInput(IN_FN_PPS_U1RX,IN_PIN_PPS_RP10); // RF4 iPPSOutput(OUT_PIN_PPS_RP17,OUT_FN_PPS_U1TX); // RF5 iPPSInput(IN_FN_PPS_U2RX,IN_PIN_PPS_RP30); // RF2 iPPSOutput(OUT_PIN_PPS_RP4,OUT_FN_PPS_U2TX); // RD9 iPPSInput(IN_FN_PPS_U3RX,IN_PIN_PPS_RP22); // RD3 iPPSOutput(OUT_PIN_PPS_RP2,OUT_FN_PPS_U3TX); // RD8 iPPSInput(IN_FN_PPS_U4RX,IN_PIN_PPS_RP28); // RB4 iPPSOutput(OUT_PIN_PPS_RP18,OUT_FN_PPS_U4TX); // RB5 #else #error PIC24F device not supported by CubeSat Kit #endif // Init UARTs to 9600,N,8,1 // UARTs won't transmit until interrupts are enabled ... csk_uart0_open(CSK_UART_9600_N81); csk_uart1_open(CSK_UART_9600_N81); csk_uart2_open(CSK_UART_9600_N81); csk_uart3_open(CSK_UART_9600_N81); csk_usb_open(); csk_uart0_puts(STR_CRLF STR_CRLF); csk_uart0_puts("Pumpkin " STR_CSK_TARGET " " STR_APP_NAME "." STR_CRLF); csk_uart0_puts(STR_VERSION "." STR_CRLF); csk_uart0_puts(STR_WARNING "." STR_CRLF); i2c1_open(); } /* init() */