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)
Eger voltaj cokmesinden supheleniyorsan roleleri tetikledikten sonra hemen eepromu okuma, mesela 100ms gecsin sonra eepromu okumayi dene.
Ya da guc kaynagini iyilestir.
evet haklısınız güvenlik amacıyla 500 ms koymuştum ama işe yaramadı
Atmega328 de flash memory'e EEPROM daki gibi veri kaydetmek için bir yöntem var mı? yani elektrik gittiğinde verinin silinmemesini istiyorum...
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.
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.
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ı.
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...
Rolelerin ne kadar akim cekiyor ki besleme bundan etkilniyor?
Guc kaynagini guclendirsen sorun bitecek gibi.
Belki de pcb tasarimin sorunlu.
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.
Surekli veri yazma durumu var mı?
Ne sıklıkla yazdırma yapıyorsunuz?
5 saniyede bir veri yazıyorum, röleler ile Atmega328 arasında opto coupler var
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.
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"
Besleme ile ilgili sorun olduğunu düşünüyorum daha önce başıma gelmişti.
Alıntı yapılan: Okan AKÇA - 27 Ocak 2021, 23:58:06Besleme ile ilgili sorun olduğunu düşünüyorum daha önce başıma gelmişti.
bencede beslemeden kaynaklanıyor, CPU frekansını dahili 1 MHz e aldım, BOD Fuse bitini 2.7 Volta aktif ettim, zaman zaman gerilim düşse bile düşük frekanslarda, düşük voltajlarda çalışabildiği için voltaj düşmesinden etkilenmeyeceğini düşünüyorum. testlerini yapıyorum galiba sorun çözüldü...