diff --git a/src/AppRegsImpl.tt b/src/AppRegsImpl.tt
index 1c4df39..4c20622 100644
--- a/src/AppRegsImpl.tt
+++ b/src/AppRegsImpl.tt
@@ -72,8 +72,10 @@ if (inputPins.Count > 0)
var pinInfo = pin.Value;
var port = pinInfo.Port;
var pinNumber = pinInfo.PinNumber.ToString();
- var interruptNumber = pinInfo.InterruptNumber;
var pinName = FirmwareNamingConvention.Instance.Apply(pin.Key);
+ if (!pinInfo.InterruptNumber.HasValue)
+ Error($"({pinName}) Interrupt number must be specified if interrupt priority is set.");
+ var interruptNumber = pinInfo.InterruptNumber.GetValueOrDefault();
var interruptPriority = TemplateHelper.GetFirmwareInterruptPriority(pinInfo.InterruptPriority);
var descriptionPadding = new string(' ', 36 - port.Length - interruptPriority.Length - pinNumber.Length);
#>
diff --git a/src/Firmware.cs b/src/Firmware.cs
index 235887c..d3e78b0 100644
--- a/src/Firmware.cs
+++ b/src/Firmware.cs
@@ -218,8 +218,7 @@ public class InputPinInfo : PortPinInfo
///
/// Specifies the interrupt number associated with this pin.
///
- [YamlMember(DefaultValuesHandling = DefaultValuesHandling.Preserve)]
- public int InterruptNumber;
+ public int? InterruptNumber;
}
///
diff --git a/src/Interrupts.tt b/src/Interrupts.tt
index 05f9115..0317226 100644
--- a/src/Interrupts.tt
+++ b/src/Interrupts.tt
@@ -43,12 +43,15 @@ foreach (var pin in interruptPins)
{
var pinInfo = pin.Value;
var pinName = FirmwareNamingConvention.Instance.Apply(pin.Key);
+ if (!pinInfo.InterruptNumber.HasValue)
+ Error($"({pinName}) Interrupt number must be specified if interrupt priority is set.");
+ var interruptNumber = pinInfo.InterruptNumber.GetValueOrDefault();
#>
/************************************************************************/
/* <#= pinName #><#= new string(' ', 69 - pinName.Length) #>*/
/************************************************************************/
-ISR(<#= pinInfo.Port #>_INT<#= pinInfo.InterruptNumber #>_vect, ISR_NAKED)
+ISR(<#= pinInfo.Port #>_INT<#= interruptNumber #>_vect, ISR_NAKED)
{
reti();
}
diff --git a/tests/Metadata/device.ios.yml b/tests/Metadata/device.ios.yml
index 061b8b2..f5e1ed9 100644
--- a/tests/Metadata/device.ios.yml
+++ b/tests/Metadata/device.ios.yml
@@ -153,7 +153,6 @@ ADC1_AVAILABLE:
pinMode: pulldown
triggerMode: toggle
interruptPriority: "off"
- interruptNumber: 0
description: ADC1 is available on hardware
DI3:
port: PORTH