RESOLVED: ATmega128/RF22 problem

I have an existing ProMini 328 based circuit where my RF22 based transceiver works fine (just to say that my transceiver works and that I know how to use it).

I know that RadioHead is the improved successor of RF22 but due to the FLASH memory limitations of the ProMini I am "forced" to stick to the old version - which so far has not posed any problems to me (the RadioHead version has a slightly bigger memory footprint and my ProMini's FLASH is already full - so I just cannot use it on my ProMini.).

I have now tried to address my FLASH shortage issue by building a "ProMini replacement" board based on a ATmega128 (based on the infos here: GitHub - MCUdude/MegaCore: Arduino hardware package for ATmega64, ATmega128, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90CAN32, AT90CAN64 and AT90CAN128). And for the most part the respective board seems to work correctly (e.g. I2C based LCD, etc).

Unfortunately there still is some problem with the SPI/RF22 based radio that I am using.

Obviously the pin layout of the new microcontroller differs from the ProMini:

I guess that the SPI related pins (Arduino pins 8-11 in above graph) are mapped automatically via the respective symbolic names provided by the ATmega128 core (e.g. SS, SCK, MOSI..).

But unlike the ProMini setup I am NOT using INT0 (to avoid SCL conflict on the ATmega128) but INT7 instead, e.g.:

#if defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__)
#define SLAVE_SELECT_PIN 8
#define USE_IRQ 7
#else
...
#endif

RF22Datagram rf22(router_address, SLAVE_SELECT_PIN, USE_IRQ);

I saw the RF22 lib's interrupt related limitation and I patched RF22.cpp/RF22::init to deal with the interrupt 7:

// Set up interrupt handler
    if (_interrupt == 0)
    {
	_RF22ForInterrupt[0] = this;
	attachInterrupt(0, RF22::isr0, LOW);  
    }
	// ----------------------------------------------------------
	#if defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__)
    else if (_interrupt == 7)	// HACK for ATmega128 support
    {
	_RF22ForInterrupt[0] = this;
	attachInterrupt(7, RF22::isr0, LOW);  
    }
	#endif
...

Unfortunately the transceiver still does not work correctly with the ATmega128 and from what I see it is the "receiving" that causes the grief:

In my app specific communication protocol there are two scenarios in which some device advertises its presence to the "rest of the world": First it does a respective broadcast whenever it is powered on. Secondly it does so, when triggered by a specific "ping"-request.

Both of these scenarios work correctly while I am using my original ProMini based circuit.

But with the ATmega128 version only the 1st scenario works (which means that at least the basic sending works). However the device no longer responds to "ping"-requests used in the 2nd scenario (which looks as if the device has a problem receiving requests..).

Any known issues regarding compatibility of RF22/SPI with ATmega128? Any hard coded dependencies (in addition to the one I already found above) that might cuase this problem?
What would be the most likely source for a problem where RF22 does not receive any incoming requests? Any ideas that might be useful for locating the root cause?

The above "ATmega64/128 standard pinout" graph was just wrong: INT7 isn't on PE6 but on PE7! (It pays to read the original specs..) Since I wired my stuff based on that graph I am actually using INT6 - and now it works.