void main(){ char period = 0xAA; Initialize_ADC(); OpenPWM1(period); //PWM on pin 17 SetDCPWM1(Get_ADC()); //ADC on pin 2 }
/******************************************************************************* * * FUNCTION: Initialization() * * PURPOSE: This function is called once when the robot controller * is cold or warm booted. You should initialize your code * here. * * CALLED FROM: main() in ifi_frc.c * * PARAMETERS: None * * RETURNS: Nothing * * COMMENTS: * *******************************************************************************/ void Initialization(void) { // Setup the digital I/O pins. Use "INPUT" to setup the pin // as an input and "OUTPUT" to setup the pin as an output. digital_io_01 = INPUT; digital_io_02 = INPUT; digital_io_03 = INPUT; digital_io_04 = INPUT; digital_io_05 = INPUT; digital_io_06 = INPUT; digital_io_07 = INPUT; digital_io_08 = INPUT; digital_io_09 = INPUT; digital_io_10 = INPUT; digital_io_11 = INPUT; digital_io_12 = INPUT; digital_io_13 = INPUT; digital_io_14 = INPUT; digital_io_15 = INPUT; digital_io_16 = INPUT; digital_io_17 = INPUT; digital_io_18 = INPUT; // Initialize the digital outputs. If the pin is configured // as an input above, it doesn't matter what state you // initialize it to here. rc_dig_out01 = 0; rc_dig_out02 = 0; rc_dig_out03 = 0; rc_dig_out04 = 0; rc_dig_out05 = 0; rc_dig_out06 = 0; rc_dig_out07 = 0; rc_dig_out08 = 0; rc_dig_out09 = 0; rc_dig_out10 = 0; rc_dig_out11 = 0; rc_dig_out12 = 0; rc_dig_out13 = 0; rc_dig_out14 = 0; rc_dig_out15 = 0; rc_dig_out16 = 0; rc_dig_out17 = 0; rc_dig_out18 = 0; // Initialize timers and interrupts here printf("Before ADC!\r\n"); // Remove the // below to initialize the analog to digital converter (ADC) code Initialize_ADC(); // Remove the // below to initialize the gyro code (ADC code must be enabled too) // Initialize_Gyro(); // Remove the // below to initialize encoder #1 // Initialize_Encoder_1(); // Remove the // below to initialize encoder #2 // Initialize_Encoder_2(); // Remove the // below to initialize encoders #3 through #6 // Initialize_Encoder_3_6(); printf("IFI User Processor Initialized ...\r\n"); }
/******************************************************************************* * FUNCTION NAME: User_Initialization * PURPOSE: This routine is called first (and only once) in the Main function. * You may modify and add to this function. * CALLED FROM: main.c * ARGUMENTS: none * RETURNS: void *******************************************************************************/ void User_Initialization (void) { Set_Number_of_Analog_Channels(SIXTEEN_ANALOG); /* DO NOT CHANGE! */ /* FIRST: Set up the I/O pins you want to use as digital INPUTS. */ digital_io_01 = digital_io_02 = digital_io_03 = digital_io_04 = INPUT; digital_io_05 = digital_io_06 = digital_io_07 = digital_io_08 = INPUT; digital_io_09 = digital_io_10 = digital_io_11 = digital_io_12 = INPUT; digital_io_13 = digital_io_14 = digital_io_15 = digital_io_16 = INPUT; digital_io_18 = INPUT; /* Used for pneumatic pressure switch. */ /* Note: digital_io_01 = digital_io_02 = ... digital_io_04 = INPUT; is the same as the following: digital_io_01 = INPUT; digital_io_02 = INPUT; ... digital_io_04 = INPUT; */ /* SECOND: Set up the I/O pins you want to use as digital OUTPUTS. */ digital_io_17 = INPUT; /* Example - Not used in Default Code. */ /* THIRD: Initialize the values on the digital outputs. */ // rc_dig_out17 = 0; /* FOURTH: Set your initial PWM values. Neutral is 127. */ pwm01 = pwm02 = pwm03 = pwm04 = pwm05 = pwm06 = pwm07 = pwm08 = 127; pwm09 = pwm10 = pwm11 = pwm12 = pwm13 = pwm14 = pwm15 = pwm16 = 127; /* FIFTH: Set your PWM output types for PWM OUTPUTS 13-16. /* Choose from these parameters for PWM 13-16 respectively: */ /* IFI_PWM - Standard IFI PWM output generated with Generate_Pwms(...) */ /* USER_CCP - User can use PWM pin as digital I/O or CCP pin. */ Setup_PWM_Output_Type(IFI_PWM,IFI_PWM,IFI_PWM,IFI_PWM); /* Example: The following would generate a 40KHz PWM with a 50% duty cycle on the CCP2 pin: CCP2CON = 0x3C; PR2 = 0xF9; CCPR2L = 0x7F; T2CON = 0; T2CONbits.TMR2ON = 1; Setup_PWM_Output_Type(USER_CCP,IFI_PWM,IFI_PWM,IFI_PWM); */ /* Add any other initialization code here. */ Init_Serial_Port_One(); Init_Serial_Port_Two(); #ifdef TERMINAL_SERIAL_PORT_1 stdout_serial_port = SERIAL_PORT_ONE; #endif #ifdef TERMINAL_SERIAL_PORT_2 stdout_serial_port = SERIAL_PORT_TWO; #endif Initialize_Encoders(); //I EXPECT INITIALIZATION VALUES Reset_Encoder_1_Count(-153); Reset_Encoder_2_Count(-415); //start comment Initialize_Gyro(); Initialize_ADC(); //end comment init_pid(&arm, 100, 0, 0, 120, 35); // 275 0 0 init_pid(&wrist, 33, 0, 0, 20, 80); //45 30 0 init_pid(&Mr_Roboto, 55, 0 , 0, 100, 25); init_pid(&robot_dist, 95, 0, 0, 100, 8); init_pid(&gyro_c, 20, 0, 0, 100, 8); Putdata(&txdata); /* DO NOT CHANGE! */ // *** IFI Code Starts Here *** // // Serial_Driver_Initialize(); printf("IFI 2006 User Processor Initialized ...\r"); /* Optional - Print initialization message. */ User_Proc_Is_Ready(); /* DO NOT CHANGE! - last line of User_Initialization */ }