Subversion Repositories HomeAutomation

Rev

Rev 1125 | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed

  1. /**
  2.  * @defgroup pcint PCINT Library
  3.  * @code #include <drivers/mcu/pcint.h> @endcode
  4.  *
  5.  * @brief Functions for pcint usage.
  6.  *
  7.  * ...
  8.  *
  9.  * @author  Linus Lundin
  10.  * @date    2009-03-01
  11.  */
  12.  
  13. /**@{*/
  14.  
  15. #ifndef PCINT_H_
  16. #define PCINT_H_
  17.  
  18. #include <config.h>
  19. #ifndef PCINT_NUM_PCINTS
  20. #   error PCINT_NUM_PCINTS is not defined! Edit config.inc.
  21. #endif
  22.  
  23. #if PCINT_NUM_PCINTS > 0
  24.  
  25. /*-----------------------------------------------------------------------------
  26.  * Includes
  27.  *---------------------------------------------------------------------------*/
  28. #include <inttypes.h>
  29. #include <stdio.h>
  30.  
  31. /*-----------------------------------------------------------------------------
  32.  * Defines
  33.  *---------------------------------------------------------------------------*/
  34.  
  35. /**
  36.  * @brief Definition for ...
  37.  *
  38.  * When passed as the type argument to ...
  39.  */
  40.  
  41. /*-----------------------------------------------------------------------------
  42.  * Public Types
  43.  *---------------------------------------------------------------------------*/
  44.  
  45. /**
  46.  * @brief Type of the callback function pointer
  47.  */
  48. typedef void (*pcintCallback_t)(uint8_t, uint8_t);
  49.  
  50. /*-----------------------------------------------------------------------------
  51.  * Public Function Prototypes
  52.  *---------------------------------------------------------------------------*/
  53.  
  54. /**
  55.  * @brief Initializes a pin-change interupt and activate callbacks.
  56.  *
  57.  * @param pcint_id
  58.  *      The PCINT id (0<=pcint_id<PCINT_NUM_PCINTS).
  59.  * @param pcintBit
  60.  *      ...
  61.  * @param callback
  62.  *      Pointer to optional callback function on the form
  63.  *      void callback(uint8_t pcint_id). The callback function is called with the
  64.  *      pcint number as the argument whenever the pcint is thrown. It is called
  65.  *      from the interrupt handler and must be very short. Null if not used.
  66.  */
  67. void Pcint_SetCallback(uint8_t pcint_id, uint8_t pcintBit, pcintCallback_t callback);
  68.  
  69.  
  70. /**
  71.  * @brief Initializes a pin-change interupt and activate callbacks.
  72.  *
  73.  * @param pcint_id
  74.  *      The PCINT id (0<=pcint_id<PCINT_NUM_PCINTS).
  75.  * @param allInTheMiddle
  76.  *      Use the standard pin definitions in GPIO
  77.  * @param callback
  78.  *      Pointer to optional callback function on the form
  79.  *      void callback(uint8_t pcint_id). The callback function is called with the
  80.  *      pcint number as the argument whenever the pcint is thrown. It is called
  81.  *      from the interrupt handler and must be very short. Null if not used.
  82.  */
  83. static inline __attribute__ ((always_inline)) void Pcint_SetCallbackPin(uint8_t pcint_id, volatile uint8_t* port, volatile uint8_t* pin, volatile uint8_t* ddr,uint8_t nr, uint8_t pcint, pcintCallback_t callback) {Pcint_SetCallback(pcint_id, pcint, *callback);}
  84.  
  85. #endif  /*PCINT_NUM_PCINTS > 0*/
  86. /**@}*/
  87. #endif /*PCINT_H_*/
  88.