Hallo Normann_;-),
allgemeine Informationen zu Interrupts finden Sie unter:
http://arduino.cc/en/Reference/AttachInterrupt
und
http://www.mikrocontroller.net/articles/Interrupt
Für periodische Interrupts ist das Beispiel "periodicInterrupt" hilfreich, welches innerhalb der Library zum I2C-RTC zu finden ist. Über die Funktion "RTC.setPeriodicInterrupt" wird das Interrupt-Intervall festgelegt. Detailinformationen sind auch in der Datei "TwoWireRTC.cpp" innerhalb der Library zu finden. Für einen minütlichen Interrupt wäre der Paramter " PERIODIC_INTERRUPT_LEVEL_MODE_EVERY_MINUTE" einzusetzen, eine Rücksetzung erfolgt mit der Funktion "RTC.resetPeriodicInterrupt()".
Nachfolgend ein Beispiel-Code:
#include "Wire.h"
#include "TwoWireRTC.h"
#include "DateTime.h"
// Anzeige, ob eine Minute vergangen ist (wird durch den Interrupt des RTCs gesetzt)
volatile unsigned char newMinuteFlag = 0;
void newMinute(void)
{
newMinuteFlag = 1;
}
void setup()
{
// den Interrupt-Pin INTRA des RTC-Chips als externe Interruptquelle
// einstellen
pinMode(2, INPUT);
digitalWrite(2, HIGH);
attachInterrupt(0, newMinute, FALLING);
Wire.begin();
RTC.begin();
// den RTC auf einen periodischen Interrupt jede Minute einstellen
RTC.setPeriodicInterrupt(PERIODIC_INTERRUPT_LEVEL_MODE_EVERY_MINUTE);
}
void loop()
{
if(newMinuteFlag)
{
newMinuteFlag = 0;
// periodischen Interrupt wieder scharf schalten
RTC.resetPeriodicInterrupt();
// hier kommt hinein, was jede Minute passieren soll
}
}