Programlama sorusu (ATMEL)

yahya255

Üye
Katılım
12 Ara 2010
Mesajlar
25
Puanları
1
Yaş
31
Merhaba arkadaşlar;

Bir uygulama devremde 22 adet çıkışın, ne kadar zaman çıkış verdiğini hesaplamam lazım ve bunu lcd ye saat formatında yazdırmam gerekiyor bu iş için volantile değişken tanımlıyorum fakat çıkışların her birinin zamanını ayrı ayrı nasıl tutabilirim veya başka bir yöntem varmı yardımlarınız için şimdiden teşekkürler.

atmega128 kullanıyorum bu arada.
 
Array kullanacaksın arkadaşım.
Örnek:
strt = 0,0,0,0,0,0,0,0,.... //22 tane sıfır. yani start zamanları
ends = 55,15,22,34,56,87,43, /22 tane durma zamanı

Her start aldığında ilgili tüpün (listenin(strt)) o indexli elemanına 0 sıfır değeri yazacaksınız.
Her stop aldığında ilgili tüpün (listenin(ends)) o indexli elemanına değeri atacaksınız.

Şayet tüm çıkışların toplamda ne kadar çıkış verdiğini kaydetmek için başka bir tüp (liste) tanımlayıp geçerli konumdaki elemanına her duruşda zamanı toplayacaksınız..

Kolay gelsin
 
volatile unsigned int *strt=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); şu şekilde bir dizi tanımladığımda "initializer element is not constant" bu şekilde bir hata alıyorum ayrıca tam olarak mantığı anlayamadım kusura bakmayın :)
 
Arkadaşlar soruyu şu şekilde değiştirsem daha uygun olucak; giriş aktif olduğunda bir sayaç çalışacak bu sorun değil yapılabilir ancak bu aynı zamanda lcd de gözükücek ve bu girişlerden 22 adet var bir ekranda 2 adet gözükücek şekilde ayarlandı. Yardımlarınız için şimdiden teşekkürler
 
volatile unsigned int *strt=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); şu şekilde bir dizi tanımladığımda "initializer element is not constant" bu şekilde bir hata alıyorum ayrıca tam olarak mantığı anlayamadım kusura bakmayın :)

asd = (1,2,3,4,5)
asd ="1,2,3,4,5"

Aradaki fark nedir ? kullanım yerine göre değişir.
projenizde sabit olan zamandır(peh amma salladım)
Yapmanız gerekern belirli bir periyotda tüm giriş ve çıkışlar içerisinde for döngüsü ile iterasyon çalıştırmaktır.
Eşleşen zamanları ve kontak konumları bir nesneye atayıp sonradan ilgili çıktıları almanız gerekmektedir.

int salla [22]={12,12,5,8,7,9,.........};
int salla [1]= 15; //ilk eleman 15 oldu

C ve türevi konusunda pek bilgim yok... Okurum anlarım ama yazamam...
 
Anlıyorum sizi for döngüsü ile itrerasyon yaptığımda program orda takılı kalıyor bu normal mi yoksa ben mi bazı şeyleri yanlış yapıyorum sizce isterseniz kodları paylaşabilirim burada.
 
Her ana (mainloop) döngü alt döngüler içerir ve alt döngülerde oluşan hatalar ana döngünün life cycle (ömürünü) tamamlamasını engeller.
Bu ne demek ? Hayatımız bir mainloop ise pazara bostan almaya gittiğimizde kimliği belirsiz (tanımlanmamış) kişiler tarafından kaçırılmamız hayat döngümüzün orada sonlanacağı anlamına gelir. Bu normal şartlar altında torunu kucağımıza alıp sevemeyeceğimiz anlamına gelir. Bu durumda elbette torunumuzun adını asla öğreneyemeyeceğiz anlamına gelir.

For döngüleri kullanırken dikkatli olmamız gerekir.
İlk önce eşleşen durumlar mı yoksa eşitsizlikler mi çoğunlukta olduğunu tespit etmemiz gerekmektedir.
For döngüsü ile Tanrı'yı tanımlamaya çalışırsak.

for Allah in space:
if Allah != "Allah" : return None

Burada eşitsizlik kavramını kullandık çünkü Allah ın ne olacağını tanımlamaktansa ne olmayacağını tanımlamak biz ölümlüler için daha kolaydır.Yoksa Allah ağaç değildir, taş değildir diye kainatdaki tüm nesneleri saymamız gerekirdi bu boş işten başka bir şey değildir.

Kolay gelsin...
 
22 adet çıkışın ne kadar zaman çıkış verdiğini senin bilmen lazım. zira çıkış demişsin.

hadi bunları girişe çevirelim sonradan giriş demişsin.

1. eğer bu 22 çıkışın 22'si birden farklı farklı zamanlarda rastgele aktif oluyorlarsa
2. aktif olma süreleri mili saniyeler mertebesinde fark ediyorsa
3. yapman gereken ölçüm çok hassas ise;

bunu atmel ile yapabileceğini pek sanmıyorum.

eğer o kadar hassas bir ölçüme ihtiyacın yoksa, bir tane timer tanımlayıp belli periyotlarla çıkışları okuyarak sürelerini tutabilirsin.
 

Forum istatistikleri

Konular
128,130
Mesajlar
915,292
Kullanıcılar
449,847
Son üye
AhmetK06

Yeni konular

Geri
Üst