Yanıtlar:
Evet yapabilirsin. Bunu birçok kez yaptım.
Ancak, ayrı bir EEPROM kullanmanın bazı dezavantajları vardır:
Birçok PIC18, 1K boyuta kadar EEPROM belleğe sahiptir. Ne yazık ki referans verdiğiniz PIC18F46J50 desteklemiyor. EEPROM mevcutsa, verileriniz için yeterince büyükse, EEPROM en az 1.000.000 silme / yazma döngüsüne sahip olduğundan ve flaş sadece 10.000 olduğundan daha iyi bir seçimdir.
PIC18, diğer birçok mikrodenetleyici gibi, Harvard mimarisi olarak adlandırılan şeyi kullanır, yani programlar ve veriler için fiziksel olarak ayrı adreslenebilir alan vardır (yani bir program adresi 4 ve veri adresi 4 olabilir ve bunlar aynı değildir). Bu nedenle, C veya montaj dilinde normal yöntemleri kullanarak flash belleği okuyamaz veya yazamazsınız.
Bunun yerine, PIC18 ailesinde, TBLPTR adlı 22 bitlik bir kayıtta bir başlangıç adresi ayarladınız. Flaştaki baytları okumak için bir TBLRD talimatı kullanırsınız. Manuel olarak yapmak zorunda olmadığınız bir okumadan sonra adresi otomatik olarak arttırma veya azaltma seçeneği vardır.
Flash belleğe yazmak için, önce yazılacak bir veya daha fazla 64 baytlık flash bellek bloğunu silmeniz gerekir. TBLPTR'de başlangıç adresini yeniden ayarladıktan ve silme işlemini başlatmak için diğer bazı kayıtlardaki değerler kesildikten sonra devre dışı bırakılır ve bir kayıt defterine hemen 0x55 ve ardından 0xAA yazmanız gerekir; bu silme komutunun kilidini açar ve hatalı kodun yanlışlıkla belleği silmesini önlemek için gereklidir. Son olarak, silme işlemini gerçekten yapmak için komut yürütülür ve ardından kesmeleri yeniden etkinleştirir.
Flash belleğe yazmak, blok boyutu daha küçük olması dışında silme işlemine benzer. Yazma aslında bir TBLWT talimatı kullanılarak yürütülür, bu da TBLRD talimatı gibi otomatik artış / azalmaya izin verir.
Konfigürasyon verilerini kaydetmenin yanı sıra, flash belleğe yazmak kişinin "bellenim üzerinden bellenim" adı verilen alanı kullanarak bellenimini güncellemesine olanak tanır. Genellikle program belleğinin başlangıcında, Bluetooth modülünden, Wi-Fi'den, hücresel modülden veya hatta kablolu bağlantıdan güncelleme alabilen ve flaşı belirli bir noktanın üzerinde güncelleyebilen sabit bir ürün yazılımı bloğuna ihtiyacınız vardır. yeni kod ile program (örneğin, bir "çit"). Güncelleme tamamlandıktan sonra, sıfırlama işlemi başlatılır ve yeni kod kullanıma alınır.
PIC ailesinin yanı sıra diğer birçok mikrodenetleyici flash belleklerini güncelleme yeteneğine sahiptir; çoğu yapılandırma yapmak için bazı yapılandırma kayıtlarının bir kombinasyonunu, bir adres işaretçisini ve özel talimatları kullanır.