pic16f628a etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
pic16f628a etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

1 Kasım 2015 Pazar

pic basic pro yazılımsal reset nasıl atılır


Çalıştığım projelerde pic18f serisi veya yukarısı kullandığımda yazılımsal reset ihtiyacı olduğunda, aşağıdaki komut ile yazılımsal olarak mcu ya reset atmak çok kolay. Reset  istendiğinde bu etikete gitmek işlemi tamamlıyor. Asm komutu kullanarak sorunu çözebiliyoruz. WDT kapalı olsa da çalışır.

reset_etiketi:
asm
@reset
endasm
goto reset_etiketi

Ancak 16f serisi bir pic mcu kullanıyorsanız bu kadar kolay değil. Bu çalışan kod parçasını bulmak 3 saatimi aldı :) Çalışması için WDT açık olmalı.

reset_etiketi:  
asm
@clear
@clrf PCLATH
@goto 0
endasm
goto reset_etiketi

Görüldüğü gibi kod parçacığı yazılımı ilk adres satırına ulaştırmakta. 10f 12f ve 16f serisi piclerde bu kodu kullanabilirsiniz. Bu asm kodlarını diğer derleyici ve dillerde de kullanabilirsiniz. İstediğiniz zaman pic mcu yu baştan başlatmanızı sağlayacaktır.

Kodun çalışabilmesi için watch dog timer açık olmalıdır. Tabi watch dog timer a güvenemiyorsanız bu komutu kodların arasına serpiştirmenizde fayda var:

clearwdt

Reset işlemi yaptığınız alt program dışında her alt programa bu satırı ekleyebilirsiniz. Eğer programınızda wdt yi devreye sokacak uzun süreli pause gibi bug lar varsa onları da elden geçirmeniz gerekir.


devamını oku ...