mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-20 21:01:25 +03:00
Initial Arduino IDE based on Processing.
This commit is contained in:
104
build/shared/lib/avrlib/extint.h
Executable file
104
build/shared/lib/avrlib/extint.h
Executable file
@ -0,0 +1,104 @@
|
||||
/*! \file extint.h \brief External-Interrupt function library. */
|
||||
//*****************************************************************************
|
||||
//
|
||||
// File Name : 'extint.h'
|
||||
// Title : External-Interrupt function library
|
||||
// Author : Pascal Stang - Copyright (C) 2002-2004
|
||||
// Created : 5/10/2002
|
||||
// Revised : 11/16/2004
|
||||
// Version : 1.0
|
||||
// Target MCU : Atmel AVR Series
|
||||
// Editor Tabs : 4
|
||||
//
|
||||
// Notes: This library provides convenient standardized configuration and
|
||||
// access to external interrupts. The library is designed to make
|
||||
// it possible to write code that uses external interrupts without
|
||||
// digging into the processor datasheets to find register names and
|
||||
// bit-defines. The library also strives to allow code which uses
|
||||
// external interrupts to more easily cross-compile between different
|
||||
// microcontrollers.
|
||||
//
|
||||
// NOTE: Using this library has certain advantages, but also adds
|
||||
// overhead and latency to interrupt servicing. If the smallest
|
||||
// code size or fastest possible latency is needed, do NOT use this
|
||||
// library; link your interrupts directly.
|
||||
//
|
||||
//*****************************************************************************
|
||||
|
||||
#ifndef EXTINT_H
|
||||
#define EXTINT_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
// constants/macros/typdefs
|
||||
|
||||
// interrupt macros for attaching user functions to external interrupts
|
||||
// use these with extintAttach( intNum, function )
|
||||
#define EXTINT0 0x00 ///< External Interrupt 0
|
||||
#define EXTINT1 0x01 ///< External Interrupt 1
|
||||
#define EXTINT2 0x02 ///< External Interrupt 2
|
||||
#define EXTINT3 0x03 ///< External Interrupt 3
|
||||
#define EXTINT4 0x04 ///< External Interrupt 4
|
||||
#define EXTINT5 0x05 ///< External Interrupt 5
|
||||
#define EXTINT6 0x06 ///< External Interrupt 6
|
||||
#define EXTINT7 0x07 ///< External Interrupt 7
|
||||
|
||||
#define EXTINT_LEVEL_LOW 0x00 ///< Trigger on low level
|
||||
#define EXTINT_EDGE_ANY 0x01 ///< Trigger on any edge
|
||||
#define EXTINT_EDGE_FALLING 0x02 ///< Trigger on falling edge
|
||||
#define EXTINT_EDGE_RISING 0x03 ///< Trigger on rising edge
|
||||
|
||||
// type of interrupt handler to use
|
||||
// *do not change unless you know what you're doing
|
||||
// Value may be SIGNAL or INTERRUPT
|
||||
#ifndef EXTINT_INTERRUPT_HANDLER
|
||||
#define EXTINT_INTERRUPT_HANDLER SIGNAL
|
||||
#endif
|
||||
|
||||
// processor-adaptive defines
|
||||
// mainstream AVR processors generally have 1,2,3, or 8 external interrupts
|
||||
// (if someone has a better idea of how to manage this, let me know)
|
||||
#ifdef SIG_INTERRUPT7
|
||||
#define EXTINT_NUM_INTERRUPTS 8
|
||||
#else
|
||||
#ifdef SIG_INTERRUPT2
|
||||
#define EXTINT_NUM_INTERRUPTS 3
|
||||
#else
|
||||
#ifdef SIG_INTERRUPT1
|
||||
#define EXTINT_NUM_INTERRUPTS 2
|
||||
#else
|
||||
#define EXTINT_NUM_INTERRUPTS 1
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// functions
|
||||
|
||||
//! initializes extint library
|
||||
void extintInit(void);
|
||||
|
||||
//! Configure external interrupt trigger
|
||||
void extintConfigure(u08 interruptNum, u08 configuration);
|
||||
|
||||
// extintAttach and extintDetach commands
|
||||
// These functions allow the attachment (or detachment) of any user
|
||||
// function to an external interrupt. "Attaching" one of your own
|
||||
// functions to an interrupt means that it will be called whenever
|
||||
// that interrupt is triggered. Example usage:
|
||||
//
|
||||
// extintAttach(EXTINT0, myInterruptHandler);
|
||||
// extintDetach(EXTINT0);
|
||||
//
|
||||
// extintAttach causes the myInterruptHandler() to be attached, and therefore
|
||||
// execute, whenever the corresponding interrupt occurs. extintDetach removes
|
||||
// the association and executes no user function when the interrupt occurs.
|
||||
// myInterruptFunction must be defined with no return value and no arguments:
|
||||
//
|
||||
// void myInterruptHandler(void) { ... }
|
||||
|
||||
//! Attach a user function to an external interrupt
|
||||
void extintAttach(u08 interruptNum, void (*userHandler)(void) );
|
||||
//! Detach a user function from an external interrupt
|
||||
void extintDetach(u08 interruptNum);
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user