Ccs C de i2c fonksiyonları neden hata veriyor?

Başlatan yldzelektronik, 19 Temmuz 2013, 16:57:12

yldzelektronik

Selamlar.

Ccs kullanarak i2c üzerinden sensör okumak istiyorum ancak ccs nin özellikle i2c_write fonksiyonunu derlemiyor.

expect ;
close parent vs gibi uyarılar çıkıyor.Başına gelen varmı?Yada çözümü bilen?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

omereliusuk

eger parantezini içine fazla değer koyduysanız mesela i2c_write(byte,byet);ama olması gereken i2c_write(byte); ise bu tür hataları verir. ikincisinin yerine parantezi kapatmanı bekliyor olmayınca expect ; veya parantezi kapat diyor.

yldzelektronik

Alıntı yapılan: omereliusuk - 19 Temmuz 2013, 21:43:51
eger parantezini içine fazla değer koyduysanız mesela i2c_write(byte,byet);ama olması gereken i2c_write(byte); ise bu tür hataları verir. ikincisinin yerine parantezi kapatmanı bekliyor olmayınca expect ; veya parantezi kapat diyor.

Yazdığım değer cihazın adresi, o da 0x28 oluyor en fazla.Yani tek byte veri.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

omereliusuk

expect yazan yerde satır numarası var. oraya bir bakarsan. bir de üst kısımlarda bir yerde ; atlamışsan oraya kadar sirayet eder. baktın onlar da olmadı i2c ile ilgili  kodları #use i2c de dahil olmak üzere yazarsan en azından başka yorumlar da yapabilirim veya yapabiliriz. :)

yldzelektronik

Alıntı yapılan: omereliusuk - 19 Temmuz 2013, 22:09:09
expect yazan yerde satır numarası var. oraya bir bakarsan. bir de üst kısımlarda bir yerde ; atlamışsan oraya kadar sirayet eder. baktın onlar da olmadı i2c ile ilgili  kodları #use i2c de dahil olmak üzere yazarsan en azından başka yorumlar da yapabilirim veya yapabiliriz. :)

Kodlar iş yerinde.Orada iken uygun şekilde paylaşırım.Ancak satır numarası o fonksiyonu gösteriyor.Daha önceki taraflarında bir şey yok.Sorun sadece i2c_write(); fonksiyonunda.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

yldzelektronik

Hatanın sebebini anladım.Herhangi bir yerde define ettiğimiz herhangi bir şey herhangi bir fonksiyonla büyük küçük harf ayrımı yapmaksızın uyuşuyorsa define ile fonksiyonu karıştırıyor.Derleyici orada abuk subuk davranabiliyor.Büyük küçük harf ayrımı  yapmıyor.Teşekkürler.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.


yldzelektronik

@JKramer teşekkürler.Cevabınızı fark etmemişim.Üzgünüm.

Ana program içerisinde her hangi bir yerde mcuyu resetlemek istiyorum.Bunun için ccs helpinde reset_cpu() gibi bir fonksiyon olduğunu gördüm ancak sadece 0. adrese jump mı oluyor yoksa bildiğimiz reset mi kestiremedim.Gerçi her halükarda reset almadığı belli çünkü resetten sonra while içinde beklemesini istediğim yerde beklemiyor.Benim istediğim mcu resetlensin ve bütünüyle yeniden başlasın.Bunun için bir yol var mı?Mümkün mü?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

JKramer

Kullandığınız çipin kataloğunu inceleyip reset durumlarında register,vs. değerlerine bakmak lazım. Duruma göre resetlemeden önce kesmelerin hepsini kapatıp ilgili register'lara başlangıç değerlerini yüklemek gerekebilir. Bir de her seride (eski 16 serisinde mesela) reset instruction yok sanırım; bu durumda istediğiniz yerde sonsuz döngüye girip watchdog ile resetleyebilirsiniz.