Atmega168 PWM capture nasıl yapılır ?

Başlatan emretunali, 19 Aralık 2011, 20:44:31

emretunali

Merhaba arkadaşlar işlemci olarak atmega168 kullanıyorum. En kısa yoldan kesmeleri kullanarak örnegin PCINT17 pinini kullanarak gelen pwm sinyalinin yüksekte kalma süresini nasıl ölçeriz. Kullandığım derleyici winavr. Asıl amacım servo pulslerini ölçmek.

Saygılarımla

Erol YILMAZ

Atmega168 datasheet Capture bölümünü okuyarak tabi ki :)

Kabil ATICI

Hatırladığım kadar int0 ve int1 bacaklarında kesmenin gelen darbenin hangi kenarında tetiklenmesi gerektiğini belirten bir register var.

EICRA – harici kesme kontrol registeri A ile int0 veya int1 çıkan kenarda tetiklemeyi atıyorsun
EIMSK – harici kesme maskesi registeri ile int0 veya int1 kesmene izin veriyorsun.
bu noktada zamanlayıcı registerlerini temizliyorsun ve saat kaynağı olarak iç saat atamasını yapıyor ama zamanlayıcıyı çalıştırmıyorsun (zamanlayıcı registerlerini bildiğin ve atamasını yapabildiğin var sayılmıştır.)
sistem int0 veya int1'den yükselen sinyal gelmesini bekliyor, yükselen sinyal gelirse
kesmede zamanlayıcıyı muhtemelen Timer1  aktif ediyorsun. Şimdi int0 veya int1 kesmenin tetikleme seviyesini inen kenar olarak atıyorsun.
kesme girişinde inen kenar  görüldüğü zaman kesme kodundan zamanlayıcıyı durdur,kesme sinyal girişini tekrar yükselen kenar olarak ata. Zamanlayıcı registerindeki değerler senindir oku ve registerleri sıfırla.
sistem int0 veya int1'den yükselen sinyal gelmesini bekliyor bölümünden devam ettir.

kolay gelsin
Diğer uçlardan yapılan işlemleri aşağı yukarı bu şakilde yapılıyor. PCINT17 pin hakkında bilgi sahibi değilim bu işlemciyi daha önce kullanmadım.
ambar7