Atmega328 Harici Kristal ve EEPROM Yazma Sorunu

Başlatan berkay_91, 27 Ocak 2021, 11:31:54

berkay_91

Merhaba, bir proje için 500 adet kart dizgiye verildi ve üzerinde 16 MHz kristal bulunan Atmega328 le birlikte kartlar geldi, devre istediğimiz gibi çalışıyor fakat bazen EEPROM yazmada sorunlar çıkıyor ve hatalı veriler okuyabiliyoruz, bunun sebebinin rölelerin ilk tetiklendiği andaki 5V hattında oluşturduğu gerilim düşümünden olduğunu düşünüyorum... bu yüzden kartların üzerindeki kristalleri sökmeden mikrodenetleyiciyi dahili 1 MHz e alsam çalışırken harici kristalin sinyalleri etkiler mi? (1 MHz de 2.7 V gibi düşük gerilimlerde çalışabiliyor)

z

Eger voltaj cokmesinden supheleniyorsan roleleri tetikledikten sonra hemen eepromu okuma, mesela 100ms gecsin sonra eepromu okumayi dene.

Ya da guc kaynagini iyilestir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

berkay_91

evet haklısınız güvenlik amacıyla 500 ms koymuştum ama işe yaramadı

berkay_91

Atmega328 de flash memory'e EEPROM daki gibi veri kaydetmek için bir yöntem var mı? yani elektrik gittiğinde verinin silinmemesini istiyorum...

z

Mantikli bir debug stratejisi ile mevcut donanimdaki sorunu bul.

Her karsilasilan sorunda donanimda buyuk degisiklige gitmemek gerekli.

Mesela role cektikten sonra mcu sapitiyormu tespit et.

Scop yoksa;

Mesela roleye tik tik muzigi caldir.

& 100 ms bekle anlaminda olmak uzere

Tik && tik && tik & tik & tik & tik basa don.

Melodik olarak bir 5 dakika dongude calissin. Sesten hata durumunu takip et.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

M_B

Alıntı yapılan: z - 27 Ocak 2021, 13:32:05Mantikli bir debug stratejisi ile mevcut donanimdaki sorunu bul.

& 100 ms bekle anlaminda olmak uzere

Tik && tik && tik & tik & tik & tik basa don.
Hocam bu yontemi Sony CRT TV ler Led le yapıyordu.
Yanma sayısına gore arızayı soyluyordu.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

JOKERAS

#6
Alıntı yapılan: berkay_91 - 27 Ocak 2021, 13:01:45Atmega328 de flash memory'e EEPROM daki gibi veri kaydetmek için bir yöntem var mı? yani elektrik gittiğinde verinin silinmemesini istiyorum...

Harici EEprom'mu yoksa Dahili EEprom'mumu  kullanıyorsunuz?
Eğer EEprom harici ise, Muhtemelen i2C'dir Eğer i2C ise Pullup Dirençlerinin değerlerini yükseltip deneyin.
Role Çalışınca 5V'u düşürüyorsa Beslemenizin akımı çok düşük olmalı.

Dahili EEprom kullanıyorsanız Dahili EEprom ile Flash arasında bir fark yok.
Falsh'a kaydetmenin mantığı yok.
Dahili EEprom veya Flash farketmez,özellikle Yazma Rutini belli kurallarla yapılır.
Bu kurallar harfiyen uygulanmalı Aksi halde sorun olmasına sebep olabilir.
Yani şöyle bir durum olmaz.Yazdım yazamadım,yanlış yazdım tam yazcaktım Elektrikler kesildi vs
gibi durumlar olmaz.Çünkü Yazma Rutini içinde bir yazma Bayrağı datanın yazılıp yazılmadığını
kontrol eder.while(!WrEPp);Bu döngü kırılmazsa yazma başarısızdır gibi.
Yazma esnasında Voltaj zıplamaları olduğunda hata olmasına sebep olabilir.Bunun için İşlemci Sigorta ayarlarından BrownOutReset Aktif ederseniz,Hatalı beseleme durumunda İşlemci Reset Edilir.

Daha da olmadı EEprom'a  yazdığınız datayı yazdıktan sonra hemen okur ve yazdığınız data
ile okuduğunuz data aynımı diye bir döngü ile sorgularsınız.
Hata varsa Return 1, Yoksa  Return 0 dönersiniz veya Bloke şekilde beklersiniz.

Eğer kullanılıyorsanız Özellikle İnterrupt durum bayraklarının durumu, yazma rutinine girmeden önce Temp edilip İnterrupt kapatılmalı.Yazma işlemi bitince Temp Kaydının durumuna göre İnterrupt kurulmalı.


berkay_91

dahili EEPROM kullanıyorum
Alıntı YapDaha da olmadı EEprom'a  yazdığınız datayı yazdıktan sonra hemen okur ve yazdığınız data
ile okuduğunuz data aynımı diye bir döngü ile sorgularsınız.
Hata varsa Return 1, Yoksa  Return 0 dönersiniz veya Bloke şekilde beklersiniz.

bu dediğinizi yapmıştım, brown out detection fuse bitlerini 4.3 Volta aktif ettiğimde, rölelerin çekilme anında işlemci kendini resetliyor, ve arada bir EEPROM dan okuma yaptığımda çok büyü veriler görüyorum, sanırım düşük voltaj EEPROM daki verileri bozuyor...

z

Rolelerin ne kadar akim cekiyor ki besleme bundan etkilniyor?

Guc kaynagini guclendirsen sorun bitecek gibi.

Belki de pcb tasarimin sorunlu.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

JOKERAS

Alıntı yapılan: berkay_91 - 27 Ocak 2021, 16:51:52dahili EEPROM kullanıyorum
bu dediğinizi yapmıştım, brown out detection fuse bitlerini 4.3 Volta aktif ettiğimde, rölelerin çekilme anında işlemci kendini resetliyor, ve arada bir EEPROM dan okuma yaptığımda çok büyü veriler görüyorum, sanırım düşük voltaj EEPROM daki verileri bozuyor...
EEprom'daki verileri Votaj Zıplaması ile bozamazsınız.Muhtemelen
Role Kontaklarına Snubber eklemediniz,Role çektiği anda oluşan ark,Emi vs.
EEprom verilerinin bozulmasında en büyük etkendirler.
İşlemcinin kendini Role çekince reset etmesi ile ilgili çok konu oldu forumda
araştırın.

ilyas KAYA

Surekli veri yazma durumu var mı?
Ne sıklıkla yazdırma yapıyorsunuz?

berkay_91

5 saniyede bir veri yazıyorum, röleler ile Atmega328 arasında opto coupler var

ilyas KAYA

#12
Sorun yüksek ihtimal bu. Yazma ve silme ömrü olduğunu unuttunuz sanırım. Sadece değişiklik olursa yazma yapın. Eger çok sık değişiyor ise elektrik kesildiğinde yazma yapacak şekle getirin. Aksi halde epromunuz bu kadar sık yazmaya dayanmaz ve her yazma anında kesmeler kapatılması gerekir.
Bu şekilde yazmaya yaparsaniz 24 saat çalışırsa  6 gün sonra bozuluyor bilginiz olsun.

berkay_91

Alıntı yapılan: ilyas KAYA - 27 Ocak 2021, 20:17:22Sorun yüksek ihtimal bu. Yazma ve silme ömrü olduğunu unuttunuz sanırım. Sadece değişiklik olursa yazma yapın. Eger çok sık değişiyor ise elektrik kesildiğinde yazma yapacak şekle getirin. Aksi halde epromunuz bu kadar sık yazmaya dayanmaz ve her yazma anında kesmeler kapatılması gerekir.
Bu şekilde yazmaya yaparsaniz 24 saat çalışırsa  6 gün sonra bozuluyor bilginiz olsun.

yazma işlemini dediğiniz gibi sadece değişiklik olduğunda yapıyorum (EEPROM.update() komutu ile), 15 saatte bir yazdığım verinin EEPROM adresini kaydırıyorum 1000. adrese ulaştığında tekrar ilk yazma adresine dönüyor. her adresin yazma-silme kapasitesi: "100000" bin adresin yazma-silme kapasitesi: "100000000"

Okan AKÇA

Besleme ile ilgili sorun olduğunu düşünüyorum daha önce başıma gelmişti.