コード例 #1
0
ファイル: pic_pc104_config.c プロジェクト: spel-uchile/SUCHAI
/**
 * 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
//------------------------------------------------------------------------------
}
コード例 #2
0
ファイル: init.c プロジェクト: PumpkinSpace/SUPMCUs_QA
/******************************************************************************
****                                                                       ****
**                                                                           **
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() */