Ik begrijp dat je de meest recente wisselstand wilt opslaan in EEPROM, dat zou inderdaad presets overbodig maken.
Ik zie dat je een RS485 uitbreiding voorzien hebt, dat zal niet werken als je geen adres aan de pic kunt geven, tenzij je ze apart kunt instellen.
Apart instellen in de firmware lijkt me ondoenlijk, zeker als het systeem groeit; ik ben een groot voorstander van het gelijk houden van alle firmware in alle nodes: maakt het onderhoud zoveel makkelijker...
Er zal ondanks de zeer beperkte payload (max 2 bytes) wel een protocolletje voor bedacht moeten worden, compleet met foutafhandeling; een master-slave systeem lijkt handig.
Ik had eerst bedacht de adressering via ADC op pen RA3 te doen.
Met een 10 bits ADC kun je met 1% E96 weerstanden tot 78 adressen maken zonder overlap. Heb ik een spreadsheet voor: constant impedance dividers.
Toen ontdekte ik dat de F628 helemaal geen ADC hééft...
Tweede idee: adressering via de opstart delaytijd (die plaatsgebonden is).
De MCU met RA3 = H kijkt gedurende de opstart delay hoeveel units zich melden, en meldt zich na het verstrijken van zijn eigen delay tijd met het eerstvolgende even adres.
De andere MCU (RA3 = L) kijkt ook welke adressen er uitgegeven worden en neemt het eerstvolgende oneven adres zonder verdere melding.
Zal werken, zolang er geen conflicten zijn tussen de delaytijden en de berichtduur.
Derde idee (zojuist bedacht): software.
Een MCU zonder adres vraagt na het indrukken van een van de bedieningstoetsen een adres aan de controller en slaat dat op voor verder gebruik. Omdat een MCU geen onderscheid kan maken tussen lokale of externe bediening kan dat ook vanaf het centrale paneel (handig bij documenteren).
De tweede methode lijkt me voor de gebruiker de meest transparante: het adres is gelinkt aan de positie in het rek (en dus de wissel) zonder verdere interventie.
Maar we lopen op de zaken vooruit...
Ik heb dat probleem niet, ook niet als het duurschakelaars zijn, door de flankdetectie is het altijd de laatste bediening die van tel is.
Daarmee is er één aspect van die voorrangregeling weg: het kunnen overrulen van een duursignaal.
Met voorrang R en een duursignaal 'afslag' zal de zodra de R input wordt geactiveerd de wissel rechtgesteld worden, en bij het weer verdwijnen van de R input de wissel terug afbuigend gesteld worden (lijkt me handig bij rangeren enzo).
Met flankdetectie is dat laatste ook wel mogelijk, maar lijkt me niet echt eenvoudig...