pic programları hakkında bir kaç öneri

gunerdr

Antcom Temsilcisi
Katılım
28 Eyl 2006
Mesajlar
364
Puanları
6
Konum
Eyüp
mikroişlemci donanım ve programlarında başlıca sorunlar resetlerdir bu resetlerden korunmanın bazı yolları var

en önce donanımınızı iyi tasarlamanız gerekmekte bu konu epey geniş bir konu ama kısaca
PCB kartınızı bölüm bölüm yapın güç katı digital kontrol katı ve besleme katı bunlar birbirinden izoleli veya uzak olsun
bir çok denemelerin sonunca MCRL pinine 4k7 direnç ve bir ters diyot attığınızda problem kalmıyor eğer kondansatör köymak istiyorsanız kesinlikler bir iki direnç seri bağlayınız

sizler ile paylaşmak istediğim konu, resetleri donanım olarak engellemek zordur zaten parazitleri yok edemezsiniz sadece biraz düşürebilirsiniz

yazılımda bazı tedbirlerden bahsedeceğim sizelere; işlemcilerde reset registerleri var bu bölümlerden yola çıkarak reset gelse bile kaldığınız yerden devam edebilirsiniz.
yazılımda eğer her hangi bir sebebten dolayı reset oluşmuş ise bunu yazılımın ilk başında kontrol edip yazılımın kaldığı yerden devam ettirebilirsiniz ayrıca reset durumlarında iç registerlede bu değişiklik olmuyor yani eğer üzerine çalıştığınız sayı 255 ise aynen öyle kalıyor ve pin durumlarındada bir değişiklik olmuyor,
bu mantıktan yola çıkarak reset gelse bile yazılım aynen devam edebilir çalışmasına çünkü bu işlemler çok hızlı oluyor
ayrıca bir hatırlatma Analog veya EEPROM işlemlerinizi yan int. içinde yapın yada int kapatın

kısa bir örnek
Device = 18F452
XTAL = 20
Dim hata As Byte
hata = RCON ' hata register
Config = %00100001100010 ' config ayarlanıyor

T1CON = 0
TRISA = %11111111 'gırısler 1
TRISB = %11101011 'cikislar 0
TRISC = %00001110
TRISD = %00110011
TRISE = %111

LCD_DTPIN = PORTC.4 ' Lcd tanıtım
LCD_RSPIN = PORTD.3
LCD_ENPIN = PORTD.2
LCD_LINES = 4
LCD_INTERFACE = 4
LCD_TYPE = 0

Declare ADIN_RES = 10 ' 10-bit result required
Declare ADIN_TAD FRC ' RC OSC chosen
Declare ADIN_STIME 10 ' Allow 50us sample time

Symbol cikis = PORTD.1
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
If hata.1 = 1 Then ' resetlenme sonucu başladı
sayac = 0

else ' normal başlangıç çıkışlar kapatılıyor
sayac = 1
cikis = 0
cls
endif

'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
main:
Program kısmı

goto main
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…