Serial communication inside ISR with Due

Hi everybody,
I'm experimenting with ISRs with an arduino Due but I get curious results if the ISR is called to quickly:

const byte repeatVal = 5;

void interruptSR(){
  noInterrupts();
  int i;
  for (i = 0 ; i < repeatVal ; i++){
    Serial.write(i);
  }
  //Serial.flush();
  interrupts();
}

void setup() {
  Serial.begin(115200);
  pinMode(11, OUTPUT);

  pinMode(2, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(2), interruptSR, FALLING);
}

void loop() {
  digitalWrite(11, HIGH);
  delayMicroseconds(800);
  digitalWrite(11, LOW);
}

If the ISR gets called too quickly (if the delay is decreased or repeatVal is increased) the board ceases serial output until the board is reset. And enabling Serial.flush() results in no output at all.
Does anyone know why this is? And yes I need to use an ISR, using a flag to reference something in the loop() wont be anywhere near fast enough.
Cheers

**Edit: Grammar

I think calling Serial functions inside an ISR is not supported. I guess you would need to write your own UART functions for reliable operation.

Crumbs. Thanks for your help I'll find a work around

Serial.write() must use interrupts in order for the UART to function, but you have turned off the interrupts.

The sketch functions the same if interrupts are allowed so it's not the cause of this issue

How do you know this? You are writing binary values to the monitor, which will NOT be displayable ASCII characters.

I'm not writing to the monitor and I can see the binary values

Oh, ok.

That makes no sense because serial, even at 115200 Baud, is way slower than the processor. Whatever delay there is between the ISR setting a flag and the processor seeing the flag and writing to the serial port will be tiny compared to the slow rate the serial port cranks out the data. Well, that's true for well written non blocking code. What are you really trying to do?

Tbh it's because I was being lazy. I didn't want my ISR to be called twice before the serial data had be sent. I've sorted it by manipulating the pending interrupts ect. It works on the Uno with no drama so I thought there may be a simple fix for the Due.

It is almost always a very bad idea to attempt serial I/O within an ISR. That will usually hang up the processor or on some, like the ESP32, cause a reboot.

On the Uno R3, the Arduino people made the mistake of putting in a work-around so that Serial.print works within an ISR , leading unsuspecting beginners to think that this is an OK thing to do.