Skip to content
Snippets Groups Projects
pinchange.ino 542 B
Newer Older
  • Learn to ignore specific revisions
  • Markus Scheck's avatar
    Markus Scheck committed
    // This module uses PIN CHANGE INTERRUPT INT3
    
    #include <avr/interrupt.h>
    #include <avr/io.h>
    #include "timer_1.h"
    
    //initialize pin change interrupt and data directions
    inline void init_pc(void) {
    
    Markus Scheck's avatar
    Markus Scheck committed
      // setup output ports
      // toggle full port to not waste time on bit masking
    
    Markus Scheck's avatar
    Markus Scheck committed
      DDRA = 0xff; // all out
      PORTA = 0x00; // all low
    
    
    Markus Scheck's avatar
    Markus Scheck committed
      // enable input port (Pinchange)
    
    Markus Scheck's avatar
    Markus Scheck committed
      // enable interrupt
      EICRA |= (1<<ISC30)|(1<<ISC31);
      EIMSK |= (1<<INT3);
    }
    
    
    Markus Scheck's avatar
    Markus Scheck committed
    // Interrupt handler
    
    Markus Scheck's avatar
    Markus Scheck committed
    ISR(INT3_vect) {
      Serial.println(timer_stop());
    }