Interrupt vil ikke starte

Programmet skal generere en 4 kant tone med forskellige toner, for at ændre tonen vil jeg bruge 2 interrupt et til at tælle op og et til at tælle ned.
Alle funktioner virker når jeg kører dem udenom interrupt og jeg kan ikke finde hvad fejlen er.
Kan nogen hjælpe.
Programkode:

//Program til at genere de optil 122 toner der bruges til at holde Repeatere åbne med.

//Jeg bruger "delayMicroseconds til at lave en firkant tone på port D4 ( pin 4 ).

//Der skal laves en routine der gør det muligt at skifte tone ved at trykke på en knap.
//så skiftes der op og ved at trykke på en anden knap skiftes der ned.

//Samtidig vises tonen i display.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display

volatile unsigned int vent = 7408;
volatile byte kanalnr = 1;

void setup() {

const byte output = 12;
const byte oppin = 2;
const byte nedpin = 3;

pinMode(output, OUTPUT);
pinMode(oppin, INPUT_PULLUP);
pinMode(nedpin, INPUT_PULLUP);

attachInterrupt(digitalPinToInterrupt(oppin) , isrtelop, FALLING);

attachInterrupt(digitalPinToInterrupt(nedpin), isrtelned, FALLING);

// skifte_disp();

//isrtelop();
}

void loop() {

digitalWrite(12, HIGH);
delayMicroseconds(vent);
digitalWrite(12, LOW);
delayMicroseconds(vent);

}

void isrtelop() {

    kanalnr = kanalnr + 1;
    skifte_disp();    

}

void isrtelned() {

    kanalnr = kanalnr - 1;
    skifte_disp();

}

void skifte_disp() {

String frq;
String kanalprt;

switch (kanalnr)  {

  case 0:
   vent = 7408;
   kanalprt ="Kanal nr. 001";

frq = "Frq 067,0 Hz A";
break;

  case 1:
    vent = 7408;
    kanalprt ="Kanal nr. 001";

frq = "Frq 067,0 Hz A";
break;

  case 2:
    vent = 6903;
    kanalprt ="Kanal nr. 002";

frq = "Frq 071,9 HZ B";
break;

  case 3:
    vent = 6671;
    kanalprt ="Kanal nr. 003";

frq = "Frq 074,4 Hz";
break;

  case 4:
    vent = 6446;
    kanalprt ="Kanal nr. 004";

frq = "Frq 077,0 Hz C";
break;

  case 5:
    vent = 6227;
    kanalprt ="Kanal nr. 005";

frq = "Frq 079,7 Hz";
break;

  case 6:
    vent = 6016;
    kanalprt ="Kanal nr. 006";

frq = "Frq 082,5 Hz D";
break;

  case 7:
    vent = 5811;
    kanalprt ="Kanal nr. 007";

frq = "Frq 085,4 Hz";
break;

  case 8:
    vent = 5608;
    kanalprt ="Kanal nr. 008";

frq = "Frq 088,5 Hz E";
break;

  case 9:
    vent = 5424;
    kanalprt ="Kanal nr. 009";

frq = "Frq 091,5 Hz";
break;

  case 10:
    vent = 5235;
    kanalprt ="Kanal nr. 010";

frq = "Frq 094,8 Hz F";
break;

  case 11:
    vent = 5095;
    kanalprt ="Kanal nr. 011";

frq = "Frq 097,4 Hz";
break;

  case 12:
    vent = 4963;
    kanalprt ="Kanal nr. 012";

frq = "Frq 100,0 Hz";
break;

  case 13:
    vent = 4795;
    kanalprt ="Kanal nr. 013";

frq = "Frq 103,5 Hz G";
break;

  case 14:
    vent = 4629;
    kanalprt ="Kanal nr. 014";

frq = "Frq 107,2 Hz";
break;

  case 15:
    vent = 4475;
    kanalprt ="Kanal nr. 015";

frq = "Frq 110,9 Hz H";
break;

  case 16:
    vent = 4319;
    kanalprt ="Kanal nr. 016";

frq = "Frq 114,8 Hz";
break;

  case 17:
    vent = 4177;
    kanalprt ="Kanal nr. 017";

frq = "Frq 118,8 Hz J";
break;

  case 18:
    vent = 4034;
    kanalprt ="Kanal nr. 018";

frq = "Frq 123,0 Hz";
break;

  case 19:
    vent = 3898;
    kanalprt ="Kanal nr. 019";

frq = "Frq 127,3 Hz";
break;

  case 20:
    vent = 3765;
    kanalprt ="Kanal nr. 020";

frq = "Frq 131,8 Hz";
break;

  case 21:
    vent = 3635;
    kanalprt ="Kanal nr. 021";

frq = "Frq 136,5 Hz";
break;

  case 22:
    vent = 3512;
    kanalprt ="Kanal nr. 022";

frq = "Frq 141,3 Hz";
break;

  case 23:
    vent = 3394;
    kanalprt ="Kanal nr. 023";

frq = "Frq 146,2 Hz";
break;

  case 24:
    vent = 3277;
    kanalprt ="Kanal nr. 024";

frq = "Frq 151,4 Hz";
break;

  case 25:
    vent = 3166;
    kanalprt ="Kanal nr. 025";

frq = "Frq 156,7 Hz";
break;

  case 26:
    vent = 3059;
    kanalprt ="Kanal nr. 026";

frq = "Frq 162,2 Hz";
break;

  case 27:

vent = 2955;
kanalprt ="Kanal nr. 027";
frq = "Frq 167,9 Hz";
break;

case 28:
vent = 2855;
kanalprt ="Kanal nr. 028";
frq = "Frq 173,8 Hz";
break;

case 29:
vent = 2758;
kanalprt ="Kanal nr. 029";
frq = "Frq 179,9 Hz";
break;

case 30:
vent = 2666;
kanalprt ="Kanal nr. 030";

frq = "Frq 186,2 Hz";
break;

case 31:
vent = 2573;
kanalprt ="Kanal nr. 031";

frq = "Frq 192,8 Hz";
break;

case 32:
vent = 2438;
kanalprt ="Kanal nr. 032";

frq = "Frq 203,5 Hz";
break;

case 33:
vent = 2354;
kanalprt ="Kanal nr. 033";

frq = "Frq 210,7 Hz";
break;

case 34:
vent = 2274;
kanalprt ="Kanal nr. 034";

frq = "Frq 218,1 Hz";
break;

case 35:
vent = 2198;
kanalprt ="Kanal nr. 035";

frq = "Frq 225,7 Hz";
break;

case 36:
vent = 2123;
kanalprt ="Kanal nr. 036";

frq = "Frq 233,6 Hz";
break;

case 37:
vent = 2051;
kanalprt ="Kanal nr. 037";

frq = "Frq 241,8 Hz";
break;

case 38:
vent = 1981;
kanalprt ="Kanal nr. 038";

frq = "Frq 250,3 Hz";
break;

case 122:
vent = 7162;
kanalprt = "Kanal nr. 122";

frq = "Frq 069,3 Hz";
break;

default:
vent = 7162;
kanalprt = "Kanal nr. 122";

frq = "Frq 069,3 Hz";
break;

}

  lcd.init();                      // initialize the lcd 

lcd.backlight();

lcd.setCursor(0,0);
lcd.print(kanalprt);
lcd.setCursor(0,1);
lcd.print(frq);

}

Any interrupt-context routine should be as brief as possible.
LCD operations rarely fall into that category - I2C LCD operations never do

Please remember to use code tags when posting code

Tak for svaret !
Jeg vil prøve at løse det på en anden måde.

Hello
Take some time and select a search engine of your choice and ask the WWW for "Arduino + CTCSS". I guess there are a lot of OM providing a proper and smart solution.
73 de Paul and enjoy coding in C++.