Öğrenciyim ve atmel atmega8 serisini C ile programlamaya merak sardım.Program ve derleyici olarak avr stuio 4 ve winavr'yi kullanıyorum.Yapmak istediğim program PB0'nın 18 dk boyunca lojik 1 olmasını sağlamak daha sonrada yine PB0'ın 8 saniye boyunca lojik 0 olarak kalmasını sağlamak işlem sonsuz döngü halinde devam edecektir. yazdığım program şu geciktirme'de takıldım.
#include <avr/io.h>
#define F_CPU 4000000UL
#include <util/delay.h>
void main()
{
DDRB = 0xFF;
PORTB = 0x00;
do{
PORTB = 0x01;
_delay_ms(1080000);
PORTB = 0x00;
_delay_ms(480000);
}while(1);
return 0;
}
gecikme komutunu düzgün yapamıyorum.Lütfen yardım edin acemiyim yeni öğreniyorum şimdiden çok teşekkür ederim.
tyildizak hocam öncelikle yardımın için çok teşekkür ederim.Programı avr ile derledim isis'te devreyi kurdum crystal bağlantıyı da 4mhz olarak yaptım.Senin verdiğin programın hex dosyasınıda gösterip devreyi çalıştırdım.Ancak 18 dk dolduğunda Pb0 hala lojik 1'di. 18 dk sonunda yapması gerekn 8 sn sürecek lojik 0 olmadı.Daha sonra programı avr studio 4 ile koşturttum ordada port hep lojik 1'di.Sanırım hala bir hata var.
Hocam programda bir hata yok proteusta simulasyon yaparken bekledim.19 dakika 29 saniyede program pb0'ı lojik 0 yaptı.Büyük ihtimal similasyon sapıtıyor değerler doğru kart üzerinde düzgün çalışması lazım demi?Sayende kendime yeni bişeyler daha kattım hocam sana çok teşekkür ederim similasyon hakkındaki düşüncelerinide bekliyorum.
Bildiklerimden yola çıkarak 1 saniyelik bir sayıcı (veya hassasiyetiniz ne ise) yapıp senaryoyu sayıcının aktüel değerine göre tasarlarsanız. Gecikmelerde Loop un tıkanmasını önler aynı değişken adlarını farklı koşullarda kullanabilirsiniz.