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