/* * FreeRTOS Kernel V10.2.0 * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of * the Software, and to permit persons to whom the Software is furnished to do so, * subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * http://www.FreeRTOS.org * http://aws.amazon.com/freertos * * 1 tab == 4 spaces! */ /* Changes from V3.0.0 + Added functionality to only call vTaskSwitchContext() once when handling multiple interruptsources in a single interruptcall. + Included Filenames changed to a .c extension to allow stepping through code using F7. Changes from V3.0.1 */ #include /* Scheduler include files. */ #include #include #include static bit uxSwitchRequested; /* * Vector for the ISR. */ void pointed Interrupt() { /* * Save the context of the current task. */ portSAVE_CONTEXT( portINTERRUPTS_FORCED ); /* * No contextswitch requested yet */ uxSwitchRequested = pdFALSE; /* * Was the interrupt the FreeRTOS SystemTick? */ #include /******************************************************************************* ** DO NOT MODIFY ANYTHING ABOVE THIS LINE ******************************************************************************** ** Enter the includes for the ISR-code of the FreeRTOS drivers below. ** ** You cannot use local variables. Alternatives are: ** - Use static variables (Global RAM usage increases) ** - Call a function (Additional cycles are needed) ** - Use unused SFR's (preferred, no additional overhead) ** See "../Serial/isrSerialTx.c" for an example of this last option *******************************************************************************/ /* * Was the interrupt a byte being received? */ #include "../Serial/isrSerialRx.c" /* * Was the interrupt the Tx register becoming empty? */ #include "../Serial/isrSerialTx.c" /******************************************************************************* ** DO NOT MODIFY ANYTHING BELOW THIS LINE *******************************************************************************/ /* * Was a contextswitch requested by one of the * interrupthandlers? */ if ( uxSwitchRequested ) { vTaskSwitchContext(); } /* * Restore the context of the (possibly other) task. */ portRESTORE_CONTEXT(); #pragma asmline retfie 0 }