12F683 Mclr pin

Başlatan ChiliPepper, 31 Ocak 2024, 14:15:19

ChiliPepper

Merhaba, bir kartın çalışma mantığıyla ilgili fikrinizi soracaktım. 12F683 entegresi olan bir rgb kartı var elimde. Mclr pini 4.7 ile pull up yapılmış ve mclr ucu 12VAC giriş pinlerinden birinden 1n4148 ve 4.7k ile bc817 basesine girmiş. Mantık şu 12VAC doğrultularak entegre kısmını besliyor ve arada 1000uf kondansatör olduğu için bir kaç saniye geç kapanıyor entegre kısmı. Kartın enerjisini hızlıca kapat aç yapınca rgb modu değişiyor. Benim anlamaya çalıştığım nokta kartta enerji varken Mclr ucu 2.6v gösteriyor enerji kesilince 5V çıkıyor ve geri iniyor bu aralıkta pic voltaj değişimini nasıl algılıyor onu merak ediyorum. Interrupt on change denedim olmadı.

mehmet

#1
MCLR pinini input yapın ve buton olarak
kullanın. Kondansatör mcuyu beslerken
MCLR daha önce konum değiştiriyor.
Böylece ana döngüdeki bazı değişkenler
farklı değerler alıyor.

Cihaz çalışırken; MCLR pinini anlık GND
yaparsanız da modlar değişecektir.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

ChiliPepper

Alıntı yapılan: mehmet - 31 Ocak 2024, 15:53:03MCLR pinini input yapın ve buton olarak
kullanın. Kondansatör mcuyu beslerken
MCLR daha önce konum değiştiriyor.
Böylece ana döngüdeki bazı değişkenler
farklı değerler alıyor.

Cihaz çalışırken; MCLR pinini anlık GND
yaparsanız da modlar değişecektir.
Normalde ben de dediğiniz şekilde yapıyorum fakat ben bu sistemi merak ettim. 12VAC 4 diyot ile doğrultulmuş acaba bc817nin basesine gelen voltaj stabil olmadığı için mi mclr'yi gndye çekemeyip 2.6v kalıyor. Mclr pinine 2.6v ve 5V değişimi algılayacak ne gibi bir yazılım olabilir bunu merak ediyorum. Normalde 2.6v float şekilde kalıp kararsız çalışması gerekmez mi

mehmet

İlgili mcunun VBOR gerilimi min 2.0V
görünüyor. Bu gerilimden düşük olursa mcu
resette kalıyor.
"DS41211D-page 129"
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

M.Salim GÜLLÜCE

Genelde AC voltaj kesilmesini besleme dışında DC kapasitöre girmeden bir direnç kondansatör ile alarak değerlendirirler. MCLR üzerinden de olmayabilir.


alikeskinkilic

bana kalırsa mclr pini değil işin sırrı aynı kaynaktan beslenen bir başka analog kanal var tek tuşla mod geçişi ve reseti halledebilmek için mclr yüksek değerli bir kapasitör ile zamanlanmış o esnada analog kanal okumayı yapıyor olmalı uzun süre kesmezsen enerjiyi mclr reset atmıyor ama analog okuma değişimi algılıyor devre şeması yada resmi varsa atarmısınız severiz bulmacaları
Hep meraktan

alikeskinkilic

#6
yada bir yol daha var her tekrar başlamada eepromda bir adreste bulunan veri okunur ve bir arttırılıp belli limitlerde bir döngü kurulacak şekilde geri yazılır(bir sonraki açılışta adres değişmek için) bu kaç renk kombinasyonu yapılacaksa rgb için 3 bytelik alan kaplayacak şekilde renk adedince sabit yazılmıştır (256 byte için max 85 kombinaysyon çıkıyor bunun bikaç bytesi adres ve bayrakları tutsa 80 ayrı rgb renk kaydedileblir.her açılışta adres bir sonrakine geçer ve ordaki değeri alınabilir.tabi bu senin cihazda öyle olmayabilir sadece bir senaryo ama çalışan örnekleri var
Hep meraktan

ChiliPepper

Alıntı yapılan: alikeskinkilic - 31 Ocak 2024, 22:50:30bana kalırsa mclr pini değil işin sırrı aynı kaynaktan beslenen bir başka analog kanal var tek tuşla mod geçişi ve reseti halledebilmek için mclr yüksek değerli bir kapasitör ile zamanlanmış o esnada analog kanal okumayı yapıyor olmalı uzun süre kesmezsen enerjiyi mclr reset atmıyor ama analog okuma değişimi algılıyor devre şeması yada resmi varsa atarmısınız severiz bulmacaları
Malesef devre şeması yok, resmini eklerim basit bir devre zaten. Başka boşta analog kanal yok çünkü 8 bacaklı pic 2 pin besleme 2 pin kristal 3 pin mosfet geriye 1 pin kalıyor mclr o da analog pin değil. Eeproma kaydedilmiyor çünkü entegrenin enerjisi bittiğinde mod başa dönüyor. 1000uf boşalmadan aç kapa yapınca mod değiştiriyor.

alikeskinkilic

#8
 .devreyi gösteren önlü arkalı resim fena olmaz merak ettim doğrusu
Hep meraktan

triyak

mclr pini input olarak tanımlanmıştır.

sizin tarifinize göre orada 2.5volt görmeniz, ac voltajin doğrultuktan sonra, filtrelemmemesinden kaynaklanıyor.  O pine scopla bakarsanız ip gibi bir dc sinyal görmeyeceksiniz, 50hz lik bir sinyal göreceksiniz. Bu yüzden 5 v yerine 2.5v görüyorsunuz.

işlemci o pinde 50hzyi görmezse enerjinin kesildiğini algılayıp işlem yapıyordur.

JOKERAS

Alıntı yapılan: ChiliPepper - 31 Ocak 2024, 14:15:19Merhaba, bir kartın çalışma mantığıyla ilgili fikrinizi soracaktım. 12F683 entegresi olan bir rgb kartı var elimde. Mclr pini 4.7 ile pull up yapılmış ve mclr ucu 12VAC giriş pinlerinden birinden 1n4148 ve 4.7k ile bc817 basesine girmiş. Mantık şu 12VAC doğrultularak entegre kısmını besliyor ve arada 1000uf kondansatör olduğu için bir kaç saniye geç kapanıyor entegre kısmı. Kartın enerjisini hızlıca kapat aç yapınca rgb modu değişiyor. Benim anlamaya çalıştığım nokta kartta enerji varken Mclr ucu 2.6v gösteriyor enerji kesilince 5V çıkıyor ve geri iniyor bu aralıkta pic voltaj değişimini nasıl algılıyor onu merak ediyorum. Interrupt on change denedim olmadı.
Şema olsaydı daha güzel olurdu.

Bu olayın püf noktası işlemciyi Reset etmekte.Bir şey yapmanıza gerek yokki.

MCLR Pinini Reset olarak ayarlayın.
İşlemciyi Reset ettiğinizde bir değişkeni belirlediğiniz sayıda arttırın.
Zaten işlemci VDD'sinde büyük kapasite var diyorsunuz.Ram'deki datalar olduğu gibi duruyor.

İşlemci Reset olduğunda PC Reset vektörüne zıplar, Global değişkenler veya yerel initalize değişkenler
değerlerini olduğu gibi muhafaza eder.Taaki POR Reset olana kadar.

Ac Hattan alınan Sinyal bahsettiğiniz Transitöre,Ac kesilir kesilmez veya gelir gelmez Reset işlemi
yaptırıyor olmalı.

ChiliPepper

Alıntı yapılan: JOKERAS - 01 Şubat 2024, 22:12:59Şema olsaydı daha güzel olurdu.

Bu olayın püf noktası işlemciyi Reset etmekte.Bir şey yapmanıza gerek yokki.

MCLR Pinini Reset olarak ayarlayın.
İşlemciyi Reset ettiğinizde bir değişkeni belirlediğiniz sayıda arttırın.
Zaten işlemci VDD'sinde büyük kapasite var diyorsunuz.Ram'deki datalar olduğu gibi duruyor.

İşlemci Reset olduğunda PC Reset vektörüne zıplar, Global değişkenler veya yerel initalize değişkenler
değerlerini olduğu gibi muhafaza eder.Taaki POR Reset olana kadar.

Ac Hattan alınan Sinyal bahsettiğiniz Transitöre,Ac kesilir kesilmez veya gelir gelmez Reset işlemi
yaptırıyor olmalı.

Evet bu şekilde ama mclr gnd çekilince resetlenmesi gerekmiyor mu. Calisir halde 2.6v enerji kesilince 5v cikiyor ve reset aliyor. Elimdeki 12f675 ile denedigimde 2.6v verdigimde mclr bacagina kararsiz kaliyor

JOKERAS

MCLR Portu Lojik Level-Schmit Trigger özellikli bir port.
Giriş olarak ayarladığınızda Lojik-Flash seviyesine ulaştığında
aktif olur.Evet,sizin tahmin ettiğimiz devrede de bu oluyor diye tahmin ediyorum.
Sorun, Lojik seviyesinin alt eşiği.Bu sizin yapıda hiç bir zaman sıfıra veya Lojik
eşiğin altına düşmez.Sizin devrede sürekli 25Hz bir sinyal var.O zaman sürekli 25Hz'de
reset olurdu sistem hiç çalışmazdı.

işte siz ilk Reset Pulse i geldiğinde Reset Vektörüne Dallandığınız Noktada
İnput olarak ayarladığınız MCLR pinini Hemen Output olarak değiştirip Sonra İnput olarak
kurmak icab eder.Bu sayede Portu Tek Pulse yapısı gibi kullanmış olacaksınız.

Reset vektöründe MCLR TRIS Out yapıp sonra İnput yaptığınızda Portun tekrar input olabilmesi
için Portun giriş Lojik yapısının Konum değiştirmesi gerekir.Bunun yoluda Ac Reset hattının bir anlık kesilmesi.
Yani şunu demek istiyorum, siz bir Portu dışarıdan bir şekilde etkilerseniz Portun Latch Donanımı
kilitlenir kalır.Dolayısı ile girişinde Değişim olmadığı sürece Latch yapısını değiştiremez.
Hatta bu durum Port okumalarında bayağı sorun olur.
Onun için İşlemcilerde Port çıkış yapılacaksa LAT, Port okunacaksa Direkt Pin, yani Port okunur vs.

Port Donanımı veya bir çok Donanım Reset Vektörüne Dallandığı anda Default duruma geçer.

Siz Reset olduğu anda Girişi Çıkış olarak değiştirin.

TRISAbits.MCLR = 0;
Artık Bu port çıkış oldu.Dışarıdaki hiç bir şeyi duymuyor.

Sonra Tekrar giriş olarak ayarlandı.
TRISAbits.MCLR = 1;
++Val;

MCLR Portu giriş olarak ayarlandı ama Port hala çıkış pozisyonunda bekliyor.
Sebebi Portun dışarıdaki durumunun Lacth yapısını kilitlemesi.
Onun için dediğiniz gibi 5V'a yükselince Reset oluyor.Çünkü Ac kesildiği anda
Transistör Portu serbest bıraktığı anda,Portun Latch hafızasına yazdığımız İnput "1"
Latch'ın konumu değiştiriyor.


Bu şekilde deneyin bakın ne oluyor.

mehmet

İşin ilginç yanı; bu mcunun mclr
pini asla çıkış olmuyor.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

JOKERAS

Alıntı yapılan: mehmet - 03 Şubat 2024, 01:12:53İşin ilginç yanı; bu mcunun mclr
pini asla çıkış olmuyor.

Evet MLCR sadece giriş ama içerde Port donanımı aynen mevcut.
Tabii birde Portun Reset durumunun ne olduğuda önemli.Datashette Unable diyor rastgele bir durumda
olabilir.İşlemci ilk reset olduğu anda MCLR'nin portunun yazmacını Boşaltmak gerekir.
Çünkü İşlemci VDD devam ediyor Ram ve Latch kayıtları durumunu koruyor.
Geriye tek bir seçenek kalıyor Portu Dummy Okumak.

Aksi halde İşlemci 50hz sinyal ile sürekli reset olur, iş yapmaz.
WDT Reset gibi.

Şimdi Adım adım mantığımı anlatmaya çalışayım.
MCLR Zaten dediğin gibi Default giriş.Tek kontrolü Fuseden MCLR ON veya OFF.
Configten MCLR aktif ettik.İşlemci Reset olmaya hazır.
Dışarıdan ilk Pulse'te işlemci reset oldu ve vectöre dallandı.MCLR TRISI'ına hiç müdahele etmedik,
zira dediğin gibi zaten sadece giriş.Peki işlemci Reset olduğu an ne oldu?
Bunu bilmiyoruz?Yapabileceğimiz tek hareket kalıyor Portu okumak ve bu aynı şey.
Ha birde şu var,MCLR'nin çıkış donanımı olmaya bilir ama Registeri olabilir.
Bu durumda registere yazma yapılabilir.Fuseden nasıl kapatılıp açılıyor onuda incelemek gerekir.

Sonuç ne oldu ChiliPepper söyleyecek.Nispeten olduğunu ama kararsız çalıştığını
söylüyor ben öyle anladım.

Bunu yapan vatandaş neden Eeeprom'a kaydedip yapmamış o da ayrı bir mevzu.
Neden acaba böyle eksantrik bir yöntemle bunu yapmış.

Aslında bunu kurup denemek gerekir.