Beispiel #1
0
/**********************************************************************
 * Function: Override_init
 * @return None
 * @remark Initializes the override board and the interrupt to detect
 *  when the receiver comes online.
 * @author Darrel Deo
 * @date 2013.04.01  
 **********************************************************************/
void Override_init() {

    // Initialize override board pins to give Micro control
    ENABLE_OUT_TRIS = OUTPUT;  // Set pin to be an output (fed to the AND gates)
    ENABLE_OUT_LAT = MICRO_HAS_CONTROL;  // Initialize control for Microcontroller

    // Let override timer expire to disable override
    Timer_new(TIMER_OVERRIDE, 1);
    while (Override_isTriggered()) {
        asm("nop");
    }

    //Enable the interrupt for the override feature
    mPORTBSetPinsDigitalIn(BIT_0); // CN2

    mCNOpen(CN_ON | CN_IDLE_CON , CN2_ENABLE , CN_PULLUP_DISABLE_ALL);
    uint16_t value = mPORTDRead(); //?
    ConfigIntCN(CHANGE_INT_ON | CHANGE_INT_PRI_2);

    //CN2 J5-15

    //DBPRINT("Override Function has been Initialized\n");

    Override_giveMicroControl();

    INTEnable(INT_CN,1);
}
Beispiel #2
0
int  main(void) {
    // Initialize the UART, Timers, and I2C
    Board_init();
    Serial_init();
    Timer_init();
    Override_init();
    printf("Override board initialized.\n");

    while(1){
        if (inOverride && !Override_isTriggered()) {
            inOverride = FALSE;
            printf("Override disabled.\n");
        }
        else if (!inOverride && Override_isTriggered()) {
            inOverride = TRUE;
            printf("Override enabled.\n");
        }
    }

    return (SUCCESS);
}
Beispiel #3
0
Datei: Atlas.c Projekt: ddeo/sdp
/**********************************************************************
 * Function: checkEvents
 * @return None
 * @remark Checks for various events that can occur, and sets the 
 *  appropriate flags for handling later.
 **********************************************************************/
static void checkEvents() {
    // Clear all event flags
    int i;
    for (i=0; i < EVENT_BYTE_SIZE; i++)
        event.bytes[i] = 0x0;       


    // Navigation events
    if (Navigation_isDone())
        event.flags.navigationDone = TRUE;

    if (Navigation_hasError())
        setError(Navigation_getError());

    // Override
    if (Override_isTriggered())
        event.flags.receiverDetected = TRUE;


    // XBee messages (from command center)
    if (Mavlink_hasNewMessage()) {
        lastMavlinkMessageID = Mavlink_getNewMessageID();
        lastMavlinkCommandID = MAVLINK_NO_COMMAND;
        lastMavlinkMessageWantsAck = FALSE;
        switch (lastMavlinkMessageID) {
            // -------------------------- Acknowledgements ------------------------
            case MAVLINK_MSG_ID_MAVLINK_ACK:
                // No ACKS from ComPAS to AtLAs
                break;
            
            // ------------------------------ Messages ----------------------------
            case MAVLINK_MSG_ID_CMD_OTHER:
                lastMavlinkMessageWantsAck = Mavlink_newMessage.commandOtherData.ack;
                if (Mavlink_newMessage.commandOtherData.command == MAVLINK_RESET_BOAT ) {
                    event.flags.haveResetMessage = TRUE;
                    lastMavlinkCommandID = MAVLINK_RESET_BOAT ;
                }
                else if (Mavlink_newMessage.commandOtherData.command == MAVLINK_RETURN_STATION) {
                    event.flags.haveReturnStationMessage = TRUE;
                    overrideShutdown = FALSE;
                    lastMavlinkCommandID = MAVLINK_RETURN_STATION;
                }
                else if (Mavlink_newMessage.commandOtherData.command == MAVLINK_SAVE_STATION) {
                    event.flags.haveSetStationMessage = TRUE;
                    wantSaveStation = TRUE;
                    lastMavlinkCommandID = MAVLINK_SAVE_STATION;
                }
                else if (Mavlink_newMessage.commandOtherData.command == MAVLINK_GEOCENTRIC_ORIGIN) {
                    event.flags.haveSetOriginMessage = TRUE;
                    lastMavlinkCommandID = MAVLINK_GEOCENTRIC_ORIGIN;
                }
                else if (Mavlink_newMessage.commandOtherData.command == MAVLINK_OVERRIDE) {
                    event.flags.haveOverrideMessage = TRUE;
                    overrideShutdown = TRUE;
                    lastMavlinkCommandID = MAVLINK_OVERRIDE;
                }
                break;
            case MAVLINK_MSG_ID_GPS_ECEF:
                lastMavlinkMessageWantsAck = Mavlink_newMessage.gpsGeocentricData.ack;
                if (Mavlink_newMessage.gpsGeocentricData.status == MAVLINK_GEOCENTRIC_ORIGIN) {
                    event.flags.haveSetOriginMessage = TRUE;
                    lastMavlinkCommandID = MAVLINK_GEOCENTRIC_ORIGIN;
                }
                else if (Mavlink_newMessage.gpsGeocentricData.status == MAVLINK_GEOCENTRIC_ERROR)
                    event.flags.haveGeocentricErrorMessage = TRUE;
                break;
            case MAVLINK_MSG_ID_GPS_NED:
                lastMavlinkMessageWantsAck = Mavlink_newMessage.gpsLocalData.ack;
                if (Mavlink_newMessage.gpsLocalData.status == MAVLINK_LOCAL_SET_STATION) {
                    event.flags.haveSetStationMessage = TRUE;
                    lastMavlinkCommandID = MAVLINK_LOCAL_SET_STATION;
                    wantSaveStation = FALSE;
                }
                else if (Mavlink_newMessage.gpsLocalData.status == MAVLINK_LOCAL_START_RESCUE) {
                    event.flags.haveStartRescueMessage = TRUE;
                    lastMavlinkCommandID = MAVLINK_LOCAL_START_RESCUE;
                }
                break;
            default:
                // Unknown message ID
                event.flags.haveUnknownMessage = TRUE;
                DBPRINT("Mavlink received unhandled message: 0x%X\n");
                break;
        }
    }
    /* If the receiver is off, boat is not stopped, and we either
        have a station or are setting one, then turn override off */
    if (!event.flags.receiverDetected && !overrideShutdown 
        && (haveStation || (state == STATE_SETSTATION))) {

        event.flags.wantOverride = FALSE;
    }
    else {
        event.flags.wantOverride = TRUE;
    }
} //  checkEvents()