void main(void) { /* Configure the oscillator for the device */ ConfigureOscillator(); /* Initialize I/O and Peripherals for application */ InitApp(); InitSPI(); InitInterrupts(); LCD_Init(); RF_ConfigReceiver(); LCD_WriteFirstLine("NRF Initialized"); // LCD_Write(); while(1) { if(RF_ReceiveFlag == 1){ RF_ResetReceiver(); if(RF_ReceiveBuffer[0] == 0x01){ ToggleLED_B7(); LCD_WriteFirstLine("Receive Action:"); LCD_WriteSecondLine("L-Button Pressed"); } else if(RF_ReceiveBuffer[0] == 0x02){ ToggleLED_B7(); LCD_WriteFirstLine("Receive Action:"); LCD_WriteSecondLine("R-Button Pressed"); } } } }
int main(void) { //-------------- // Initialization char LCDinit[] = {0x33,0x32,0x28,0x01,0x0c,0x06,0x00}; //Array holding initialization string for LCD char Msg1[] = {0x84,'C','U','N','T','\0'}; char Msg2[] = {0xC5,'R','P','S','\0'}; char Msg3[10]; // Msg for displaying RPS to LCD (size 10 in case dealing with large numbers) InitApp(); // Initialize Ports DisplayLCD(LCDinit,1); // Initialize LCD //-------------- // Message on LCD DisplayLCD(Msg1,0); // Display message on LCD DisplayLCD(Msg2,0); // Display message 2 //-------------- // Initialize encoder variables CHA = PORTBbits.RB5; // Initialize channel A CHB = PORTBbits.RB4; // Initialize channel B OLD_ROT = 0; // Initialize state of rotation CCWTurn = 0; // Initialize CCW count CWTurn = 0; // Initialize CW count RPS = 0.0; // Initialize RPS value CHAcount = 0; // Channel A counter //-------------- // Setup PWM cycle to motor PR2 = 0x9B; // Open pwm1 at period = 1 ms CCP1CONbits.DC1B1 = 0; // Set duty cycle of pwm1 CCP1CONbits.DC1B0 = 0; // ... CCPR1L = 0b00000100; // ... //------------- // Set timer and interrupts TMR0count = 0; // Set counter for TMR0 WriteTimer0(EncoderCount);// Load Timer0 InitInterrupts(); // Initialize timer interrupts for Port B encoder //-------------- // Loop phase: Display RPS on LCD while(1) { WaitHalfSec(); WriteLCD(0xC0,5,RPS,Msg3); // Display RPS on LCD } //-------------- // Exit main CloseTimer0(); return (EXIT_SUCCESS); }
void main () { // Initializing PIC16LF1827 InitPorts(); InitTimers(); InitInterrupts(); while(1) { } }
void main(void) { ServoTimerInit(); InitInterrupts(); InitTimer0(); while(1) { static unsigned char LastBitState = 0; static unsigned char CurrentBitState = 0; CurrentBitState = RC1; if ((CurrentBitState == SET) && (CurrentBitState != LastBitState)) { //PWM attack + ShouldAttack = 1; //start/restart Two second timer TMR0 = MAX_TIMER_VAL; //2s complement of max value = 0xFF Two_Seconds_Timer = CLEAR; } else if ((CurrentBitState == CLEAR) && (CurrentBitState != LastBitState)) { ShouldAttack = 0; //PWM retract } if ((Two_Seconds_Timer >= TWO_SEC) && (ShouldAttack)) { Two_Seconds_Timer = CLEAR; ShouldAttack = 0; //PWM retract } if(T0IF == SET) //if(TMR0>10) { T0IF = CLEAR; Two_Seconds_Timer++; } LastBitState = CurrentBitState; } }
unsigned char update_priority(void) { priority.idle = 0; InitInterrupts(); return ACK; }
//------------------------------------------------------------------- //----------------------------Code----------------------------------- //------------------------------------------------------------------- void main(void) { // should only execute main loop once; after this just respond to interrupts InitTimers(); InitPorts(); InitComm(); InitInterrupts(); SSPBUF = BytesOut[i]; while(1) { //----------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------- //-----EUART STUFF------------------------------------------------------------------------- //----------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------- if(CommActive) { if( X_Transition!=0 ) { X_Transition = 0; switch( CurrentX_State ) { case X_Idle_State : { SEND = 1; NextX_State = X_StartDelim_State; NextByteOut = 0x7E; // Starting Edit for Variable Message Size MessageCounter = Encode_Message(CurrentType); X_LengthLSB = MessageCounter + 5; //For framing bytes // Populating the Message Frame X_CMD = TXData[0]; X_RF1 = TXData[1]; X_RF2 = TXData[2]; X_RF3 = TXData[3]; X_RF4 = TXData[4]; X_RF5 = TXData[5]; } break; case X_StartDelim_State : { NextX_State = X_LengthMSB_State; NextByteOut = X_LengthMSB ; } break; case X_LengthMSB_State : { NextX_State = X_LengthLSB_State; NextByteOut = X_LengthLSB; } break; case X_LengthLSB_State : { NextX_State = X_API_State; NextByteOut = X_API; } break; case X_API_State : { NextX_State = X_FID_State; NextByteOut = X_FID; } break; case X_FID_State : { NextX_State = X_AddrMSB_State; NextByteOut = X_AddrMSB; } break; case X_AddrMSB_State : { NextX_State = X_AddrLSB_State; NextByteOut = X_AddrLSB; } break; case X_AddrLSB_State : { NextX_State = X_Options_State; NextByteOut = X_Options; } break; case X_Options_State : { NextX_State = X_CMD_State; // will later need logic here for what transition to do based on length LSB NextByteOut = X_CMD; } break; case X_CMD_State : { MessageCounter--; if(MessageCounter) { NextX_State = X_RF1_State; NextByteOut = X_RF1; } else { NextX_State = X_Checksum_State; NextByteOut = CalculateChecksum(); } } break; case X_RF1_State : { MessageCounter--; if(MessageCounter) { NextX_State = X_RF2_State; NextByteOut = X_RF2; } else { NextX_State = X_Checksum_State; NextByteOut = CalculateChecksum(); } } break; case X_RF2_State : { MessageCounter--; if(MessageCounter) { NextX_State = X_RF3_State; NextByteOut = X_RF3; } else { NextX_State = X_Checksum_State; NextByteOut = CalculateChecksum(); } } break; case X_RF3_State : { MessageCounter--; if(MessageCounter) { NextX_State = X_RF4_State; NextByteOut = X_RF4; } else { NextX_State = X_Checksum_State; NextByteOut = CalculateChecksum(); } } break; case X_RF4_State : { MessageCounter--; if(MessageCounter) { NextX_State = X_RF5_State; NextByteOut = X_RF5; } else { NextX_State = X_Checksum_State; NextByteOut = CalculateChecksum(); } } break; case X_RF5_State : { NextX_State = X_Checksum_State; NextByteOut = CalculateChecksum(); } break; case X_Checksum_State : { SEND = 0; NextX_State = X_Idle_State; NextByteOut = 0x7E; } break; } // end switch case }// end if X_Transition if( R_Transition!=0 ) { R_Transition = 0; switch( CurrentR_State ) { case R_Idle_State : { if (ByteIn == 0x7E) // should always be this! { NextR_State = R_LengthMSB_State; } } break; case R_LengthMSB_State : { if ( ByteIn == 0x00 ) // should always be this! { NextR_State = R_LengthLSB_State; } } break; case R_LengthLSB_State : { NextR_State = R_API_State; R_LengthLSB = ByteIn; } break; case R_API_State : { ///Adding Code to Handle different types of received messages R_API = ByteIn; if (R_API == API_TXSTAT) NextR_State = R_FID_State; else if (R_API == API_RXPACK) { NextR_State = R_AddrMSB_State; LostCommCounter = 0; } else NextR_State = R_Idle_State; } break; case R_AddrMSB_State : { NextR_State = R_AddrLSB_State; R_AddrMSB = ByteIn; } break; case R_AddrLSB_State : { NextR_State =R_SigStr_State; R_AddrLSB = ByteIn; } break; case R_SigStr_State : { NextR_State = R_Options_State; R_SigStr = ByteIn; } break; case R_Options_State : { NextR_State = R_CMD_State; // will later need logic here for what transition to do based on length LSB R_Options = ByteIn; } break; case R_CMD_State: { NextR_State = R_RF1_State; R_CMD = ByteIn; } break; case R_RF1_State : { NextR_State = R_Idle_State; R_RF1 = ByteIn; if (R_CMD == 0x05) { //PAIR_RESP Received if(R_RF1&BIT0HI) { Paired = 1; //Stop Broadcasting and send Direct Messages X_AddrMSB = R_AddrMSB; X_AddrLSB = R_AddrLSB; CurrentType = CTRL; Set_PAIRED; PORTC = PORTC_Copy; LostCommCounter = 0; } else { XBee_State(0); } } if (R_CMD == 0x06) { //STATUS Received Process_Status(R_RF1); } } break; case R_FID_State : { NextR_State = R_STATUS_State; R_FID = ByteIn; } break; case R_STATUS_State : { NextR_State = R_Idle_State; R_STATUS = ByteIn; //Code to Resend Message if no ACK if (R_STATUS) { X_Transition = 1; CurrentX_State = X_Idle_State; NextX_State = CurrentX_State; } } break; } // end switch case }// end if R_Transition if (SEND && TXIF) // for some reason, with TXIE I get 0x7E transmitted twice. { X_Transition = 1; TXREG = NextByteOut; } CurrentX_State = NextX_State; CurrentR_State = NextR_State; } } }; // end main