Buradaki Registerları söyleyebilir misiniz?

Amedarus

Üye
Katılım
4 Mar 2021
Mesajlar
8
Puanları
1
Yaş
25
timer16.gif


Şimdiden çok teşekkür ederim buradaki elemanların görevlerini bir iki cümle ile açıklayabilir misiniz acaba internette çok aradım bulamadım türkçe kaynak.
 
peki bu timer sistemin pwm ile bağlantısı nedir acaba
 
TCCR1A: çoğunlukla portun pwm özelliğini ayarlamak için kullanılır. 0 yapılırsa pwm etkin olmaz.
TCCR1B: clock kaynağı ve prescaler değeri için ayarlanır örneğin TCCR1B = 0x04 yapılırsa 1/256 olur ve 16Mhz lik kristal varsa her timer vuruşu 16,000,000/256 frekansta olur ve 16ns periyotta olur.

TCNT1: Timer vuruş sayısını buraya kaydeder ve her vurduğunda buradaki sayı bir artar. örneğin bir ses sinyali gönderilip bu register 0 yapılırsa ve sinyal bir yere çarpıp geri döndüğünde bu registerdaki değer okunup ses hızıyla çarpılırsa mesafe bulunur. Genellikle bu iş için kullanılır.

OCR1: Bu registerdaki değer kullanıcı tarafından yazılırsa TCNT1 içindeki değer bu değere ulaşınca eğer TIMSK1 registerindeki OCIE1A/B biti 1 yapıldıysa TIFR1 registerindaki OCF1A/B biti 1 olur ve kullanıcı bu biti kullanarak kesme üretir. Tüm timer kesmeleri bu register üzerinden verilir.

TIMSK: Yukarıda bahsettiğim gibi timer kesmesinin nasıl olacağına karar verir TOE1 biti aktifse timer1 overflow olunca yani register 16 bit olduğuna göre 65565 kere timer vuruşundan sora kesme verir veya OCIE1A/B biti aktifse yukarıda yazdığım gibi OCR1B registerinde tutulan değere ulaşınca kesme verir.

ICR1: eğer TCCR1B içinden ICNC1 ICES1 bitleri aktif olursa port pini üzerindeki değişikliklere göre kesme üretir. örneğin yükselen kenar olarak ICES1 ayarlanırsa pin üzerindeki voltaj bir değere ulaştığı anda TIFR1 içindeki ICF1 biti 1 olur ve TCNT değeri otomatik olarak kaydedilir. Bu özellik ise dışarıdan gelen bir sinyalin periyodunu ölçmek için kullanılabilir.

İnşallah bu soruyu ödev filan olduğu için değil gerçekten işine yaracağı için sordun. Türkçe kaynak yok dedin diye belki ileride birileri aratırsa işine yarar diye cevap yazdım. Benim kanaatime göre datasheet okuyacak kadar ingilzcesi olmayan bu işi bıraksın yada oturup ingilizce öğrensin.

Belki birilerinin işine yarar diye bir video bırakıyorum maalesef bu videoda ingilizce bilgi veriyor ama en azından timer1 kullanılarak 1 saniyelik bir kesme nasıl verilir onu öğrenebilirsin.

 
teşekkürler ödev için değil arduino timer sistemin pwm ile bağlantısı nedir acaba yapılan kare dalgalar pulse'lar sadece tccr1a için mi acaba ?bunu da çözemedim öğrenmeye çalışıyorum fazla zorlamaya başladı yardım alıyorum sizlerden.
 
Arduino framework, kullanıcıların registerlarla uğraşmaması için avr kitaplığındaki özel fonksiyonları basit fonksiyonlara dönüştürmüştür. Senin aradığın şey arduinoyla değil doğrudan atmegayla alakalı. O yüzden datasheet sana en doğru bilgiyi verecektir. Yine bütün nokta ingilizceye dayanıyor maalesef.

pwm fonksiyonu TCCR1A ve TCCR1B registerlarındaki Bit 1:0 – WGM11:0: Waveform Generation Mode bitleri içinde yazılan değere göre üretilir.

Untitled.png


Bu örnek avr kodu sana bir fikir verecektir. Kaynak: https://sites.google.com/site/qeewiki/books/avr-guide/pwm-on-the-atmega328

Kod:
// this code sets up counter0 for an 8kHz Fast PWM wave @ 16Mhz Clock


#include <avr/io.h>


int main(void)
{
    DDRD |= (1 << DDD6);
    // PD6 is now an output

    OCR0A = 128;
    // set PWM for 50% duty cycle


    TCCR0A |= (1 << COM0A1);
    // set none-inverting mode

    TCCR0A |= (1 << WGM01) | (1 << WGM00);
    // set fast PWM Mode

    TCCR0B |= (1 << CS01);
    // set prescaler to 8 and starts PWM


    while (1);
    {
        // we have a working Fast PWM
    }
}
 
Anladım sanırım prescaler clocku bölecek ve pwm'in yaptığı dalgaların %50lik duty cycle frekansına geldiğinde ocr tcnt ile kıyaslayacak ve istenen bit değerine gelince kesim olacak gibi düşündüm
 
Hayır, pwm özel bir fonksiyondur. Eğer ayarlanırsa kesmeyle şunla bunla uğraşmaz ocr1a içindeki değere göre otomatik kare dalga üretir.
 
o zaman prescaler verdiği değerler system clocku bölücek ve ocrdeki duty cycle frekansına gelince direk işlemi yapacak mı?Kızma ne olursun öğrenmeye çalışıyorum.
 

Yeni mesajlar

Forum istatistikleri

Konular
129,360
Mesajlar
925,764
Kullanıcılar
451,847
Son üye
serh4n

Yeni konular

Geri
Üst