pic16f877 ye yazılımsal olarak reset atmak...

Başlatan mckmk03, 17 Aralık 2005, 23:52:29

mckmk03

merhaba arkadaşlar. ben pic e MCLR ucundan değilde yazılım içerisinde reset atmak istiyorum.internetten ve kitaplardan araştırdım.Fakat kesin bir sonuca ulaşamadım.
          teşekkür ederim.

z

Watch dog devresini aktif edersin, reset yemek istediginde Watch dog'la ilgilenmeyi birakirsin.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mckmk03

bunalmış dimiş ki :   "Watch dog devresini aktif edersin, reset yemek istediginde Watch dog'la ilgilenmeyi birakirsin."


bunu biraz daha açarmısın.watch dog haricinde başka bir şekilde yapılabilir mi peki.programı reset vektörüne yönlendirebilirmiyiz.Böyle bişey mümkün mü acaba.teşekkür ederim

z

Reset vektorune ucmak sadece program counter'i sifirlamak olur. PIC in yuzlerce resetlenmesi yada set edilmesi gereken biti var.

Eger islemci ve cevrebirimi registerlerini yazilimla kurarak reset degerlerini veririm dersen bu da cozum olur.

Katalogda butun registerlerin reset anindaki ilk degerleri belirtilmis.

Ama bu kadar uzun boylu bir seye gerek yok. 0000 vektorune uctuktan hemen sonra Int lari temizler ve yasaklarsin, cevre birimlerini disable edersen de isin gorulebilir.

Gene de en iyisi watch dog.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mckmk03

goto komutu ile org 0x000 satırına dallanmış olsam programı yeniden başlatmış olurmuyum acaba

piedos

Alıntı yapılan: "mckmk03"goto komutu ile org 0x000 satırına dallanmış olsam programı yeniden başlatmış olurmuyum acaba


eğer ram de sakladığın değerler değişmişse 000 adresine gidince bunlar aynen kalır, bu yüzden gerçek bi reset olmaz.

bak küçük bir donanım ekleyerek yazılım kontrollü reset yaptırabilirsin, gerçek bir reset 8O
Einstein: "Only two things are infinite, the universe and human stupidity, and I'm not sure about the former."

elektroombank

bende pıc basic topicse sormuştum.Gerçektende çok onemli bir şey olduğunu anladım.İnşallah bir çözüme ulaşırız...

z

Piedos,

Hardware reset Ram içeriğine dokunmaz, sadece register içeriklerini düzenler.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

piedos

Alıntı yapılan: "bunalmis"Piedos,

Hardware reset Ram içeriğine dokunmaz, sadece register içeriklerini düzenler.

o zaman hardware reset sonrası yazılımda ilk yaptıracağın iş RAM i bir döngü ile silmek olur , böylece RAM i de hazırlamış olursun dostum.
Einstein: "Only two things are infinite, the universe and human stupidity, and I'm not sure about the former."

Petek

Alıntı yapılan: "piedos"o zaman hardware reset sonrası yazılımda ilk yaptıracağın iş RAM i bir döngü ile silmek olur , böylece RAM i de hazırlamış olursun dostum.
Bu ne işine yarayacak merak ettim.
“Önyargıları yıkmak atomu parçalamaktan zordur” A.Einstein

elektroombank

ben bir çözüm buldum ama benim işime yaramıyor.Size anlatayım isterseniz.

PIC'in bir portunu reset çıkışı olarak belirliyoruz.Mesela PORTC.0

PORTC.0 ıncı bacağını 4.7k ile bc 237 bağlayıp şaseyi köprülüyor.
bu çaseyi MCLR ucuna bağlıyoruz.

Daha sonra yazılımda

  HIGH PORTC.0


dediğimizde PIC resetlenmiş oluyor..

piedos

Alıntı yapılan: "elektroombank"ben bir çözüm buldum ama benim işime yaramıyor.Size anlatayım isterseniz.

PIC'in bir portunu reset çıkışı olarak belirliyoruz.Mesela PORTC.0

PORTC.0 ıncı bacağını 4.7k ile bc 237 bağlayıp şaseyi köprülüyor.
bu çaseyi MCLR ucuna bağlıyoruz.

Daha sonra yazılımda

  HIGH PORTC.0


dediğimizde PIC resetlenmiş oluyor..


GÜNAYDIN...... :D
bakınız....-->

Alıntı yapılan: "piedos"
Alıntı yapılan: "mckmk03"goto komutu ile org 0x000 satırına dallanmış olsam programı yeniden başlatmış olurmuyum acaba


eğer ram de sakladığın değerler değişmişse 000 adresine gidince bunlar aynen kalır, bu yüzden gerçek bi reset olmaz.

bak küçük bir donanım ekleyerek yazılım kontrollü reset yaptırabilirsin, gerçek bir reset 8O

----> yalnız PORTC.0 (transistörün base i) ile toprak arasına 10nF lik bir kapasitör bağlarsansan reset süren kapasitörün yükü boşalana kadar devam eder, böylece daha kararlı bir reset oluşturursun, çünkü MCLR yi birkaç mikro saniye 0V'ta tutmak gerekebilir.
Einstein: "Only two things are infinite, the universe and human stupidity, and I'm not sure about the former."

Veli B.

Arkadaşlar aynı konuda bu hafta 3 farklı konu başlığı açılmış durumda. .Gereken bütün cevaplar zaten verilmiş durumda.Başlık açmadan önce lütfen bir arama yapalım.Pek çoğumuzun bildiği gibi benzer konular defalarca tartışılmış ve sonuca bağlanmış durumda.

mckmk03

aslında benim problemin için registerların yada ram ın temizlenmesi çok önemli değil gibi geliyo bana.sadece programı baş satırdan başlatmak yeerli olucak gibi.bi deniyim olmazsa...

MICROCEBEL

kardeş bazı arkadaşların dediği gibi watchdog timer'ı kullanarak resetleyebilirsin yada diğer bi arkadaş öneri sunmuş çıkış olan herhangibir portun bir pinini mclr ucuna bağlayarakta sorunu çözebilirsin...