Stm32f10xx & OV7670 & Tft

Başlatan yldzelektronik, 27 Mayıs 2013, 03:55:03

Mucit23

Hocam sadece dediğiniz satırı kapatsam program sürekli while içerisinde takıldığı için fonkisyondan çıkarmıyor. Bütün While'leri kapatsam yine program fonksiyondan çıkamıyor fakat bu sefer nerede takılıyor bilmiyorum. Büyük ihtimal I2C_SendData içerisinde takılıyor.

Bildiğiniz başka I2C kütüphanesi varmı? Low level felan farketmez benim için. Yani ST kütüphanesi kullanılmasada olur. Ben ciddi ciddi I2C kütüphanesinde problem olduğunu düşünüyorum. STM32F10x de de çünkü aynı problemleri yaşamıştım.

mistek

Sayfanın altında http://www.expkits.com/?s=ex33ds.htm
Stm32f107 için olan örnek dosyasını indirin içerisinde eeprom örneğini inceleyin. Low level i2c var içerisinde.
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R

Mucit23

Evet hocam 10x için low level rutinleri bende var. Acaba 4x ilede çalışırmı? Registerler aynımıdır.

mistek

Konu başlığı f10 olunca kafam oraya gitti. Emin değilim bir takım farklılıklar olabilir.
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R

Mucit23

Anladım hocam,

Bari eeprom devresi kurup onun üzerinde i2c donanımını test edeyim.

Anlam veremiyorum. Send7Bit_Adress fonkdiyonundan sonra program while içerisinde takılıp kalıyor. Bu kameranın çalışmadığı anlamınamı gelir? Yani sanki i2cde birşeyler gönderiyor sonra alındımı alınmadımı bunun cevabı için bekliyor. Cevap gelmeyince takılıp kalıyor... Birçok I2C rutini inceledim mantık olarak hep aynı. Başkada aklıma gelen birşey yok.  :'(

mistek

Örnek ararken aynı fonksiyonla başkalarınında problem yaşadığını gördüm(detaylı bakmadım sadece başlıkları benzerdi) muhtemelen çözüm oralarda biyerdedir.
Modül arızalı olma ihtimali var mı? I2C donanımı adresi gönderip ACK-NACK bekliyor olabilir NACK cevabı gelince muhtemelen boşuna çalışmayalım deyip kapatıyor.

keil stm32 i2c example
keil stm32f1 i2c example
keil stm32f4 i2c example
stm32f4 i2c lib
gibi aramalar yapmışım.
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R

Mucit23

Hocam modülün arızalı olduğunu düşünmüyorum çünkü aldığımdan beri ilk defa kullanıyorum. Bozuk ürün gelmediyse sağlam olması gerek..

Yarın akşama kadar araştırma yapayım. Umarım çözüm bulabilirim.

Mucit23

Bu I2C beni çıldırtacak. Eepromla denedim ondada benzer problemlerle karşılaşıyorum. Hep While içerisinde tıkanıp kalıyor program.... Problemin çözümüne dair her türlü görüş ve önerileri deneyebilirim.. Kamerayı geçtim, I2C yi çalıştırmak ilk hedefim.. Yardıma ihtiyacım var.

z

ZIOS ile e2rom calismasini bir dene.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Mucit23

Hocam ziosu birazdan deneyeceğim. Ama ilk önce şu soruyu cevaplamam gerekiyor.

Resimden bakalım.

resim yükle

Kameraya I2C_Send7bitAddress fonksiyonuyla 0xAA değerini gönderdim. Hattı lojik anayser ile izliyorum. Sonuç yukarıdaki gibi
Gönderdiğim adres datasını gördüm. Fakat başında ve sonunda anlam veremediğim hareketlilikler görülüyor. Özellikle Adresin başında oluşan şey nedir?  En baştaki bir anlık low olma start biti olsa diğerleri neler? Adresin sonunda neden 1 adet fazla clock sinyali var? Birde biz 7 bit adres gönderiyoruz ama hatta gönderdiğim 8 bitlik datanın 8'ini birden görüyorum. Bu yanlış değilmi.

Belkide kamera bunlara anlam veremiyor? Tamam start biti geliyor. Sonra bir şekilde adreste yollanıyor ama kamera gönderilen adres bilgisini anlamadığı için ack yollamıyor. Sonra program while içerisinde ACK beklesin. Ben böyle yorumluyorum...

z

1 bit de R/W sinyali var. Ondan dolayi 8 ediyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mistek

ADRES+R/W biti göndermen lazım. Yani sen kameraya onu okumak veya yazmak istediğini söylemiyor musun?

i2c 8 bit olarak veri aktarır. 7 bit adres + 1 bit Okuma/yazma bildirici.

8 clock darbesinden sonra 9. clockta data hattında ACK belirmesi lazım yani low olması gerekiyor ama kamera cevap vermemiş.

İlk baştaki kısa süreli low high nedir bilmiyorum ama hemen sonra gelen Data hattı 0 iken clock hattının 1 olması start anlamına geliyor. Start biti yani. Tam terside olabilir. İletişimin başladığı yer en soldaki dikey kırmızı çizginin olduğu yer.


boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R

Ramiz

Sondaki ACK ama baştakine bende anlam veremiyorum..

Hiç software i2c ile denemeler yaptınızmı? nette kütüphaneler vardır diye tahmin ediyorum ve bu öneriyi kamera ile bir an önce konuşabilmeniz için tavsiye ediyorum. Öncelikle bir kameradan bilgiler gelsin, sonra donanımsal i2c ye geçersiniz.
Electrical & Electronics Engineering -> Step one

Mucit23

Evet bende onu söylüyorum işte. Benim Bildiğim Adres+RW toplam 8 bit etmesi gerekir. Bunda sıkıntı yok galiba. Çünkü gönderdiğim data 0XAA(10101010) olduğu için 0. bit zaten lojik sıfır. Ben Transmitter modunda data gönderdiğim için 0. bit otomatikmen 0 olması gerekiyor. Doğrulamak için adres gönderme işlemin Reciever modunda yaptım sonuç aşağıdaki gibi.

gif upload

Dikkat ederseniz 0. bit lojik bir oldu. Yani adreste sıkıntı yok. Benim çözemediğim konu en baştaki kısa süreli lojik sıfır sinyali, Bu hiçbir kitaba kurala uymuyor. Sanırım kamera bunu bir sinyal olarak algılayıp sonrasında şaşırıyor...

Birde hattın uzaktan görünüşüne bakın.

gif upload
Kırmızı ile işaretlediğim noktalar hareketliliğin olduğu yerler. En son neden SCL hattı lojik sıfırda kalıp belli bir süre sonra lojik bir oluyor onuda anlayamadım.

Bence en baştaki kısa süreli lojik sıfır sinyalden kurtulursam kameradan ack alabilirim. Bunun sebebi ne olabilir. Start vermeden önce başka birşeymi yapmam gerekiyor?

@Ramiz onuda düşünmüyor değilim. Herhalde en sonunda öyle yapacam. Kayışın atmasını bekliyorum.

yldzelektronik

#29
@Mucit peki eeprom denemelerinde de aynı paraziti alıyor musun?(en baştaki iniş çıkışları kastediyorum) Bir de işin ilginç yanı, dikkat edilirse her veri gönderme gerçekleştiğinde tekrarlayan bir periyodu var..

Ekleme:Mucit sen o sinyali gördüğünde fonksiyona tekrar girmiş mi oluyor?Çünkü bu durum pic ile olan maceralarımdan hatırladığım kadarıyla restart condution durumunda oluyordu.Tam olarak restart con olmayabilir fakat senaryo şöyle;

i2cstart,i2cwrite,i2cstop,i2cstart,x byte i2cread,i2cstop.

Bu cycle içinde o sinyali sürekli gördüğümü hatırlıyorum.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.