Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,597
Sanki 2 tane kafam var.
Biriyle yapıp diğeriyle yaptığımın yanlış olduğunu anlıuıyorum.

Ben wgm13 set etmiyoruym ama ICR1 registerine hesap yapıyorum
 

Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,597
bu ne biçim datasheet yazmış bunlar bi tablo 5 sayfa ilerde diğeri 10 sayfa geride ileri geri kafam karıştı bir saatdir cs10-11-12 yerine başka cs tablosuna bakıyormuşum
 

Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,597
offff.png

abi bu seferde bu 2 mavi çizgi arası 1 saniye oldu olur mu böyle
 

Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,597
Böyle olmaz ki
1 zamanı 900ms
0 zamanı 100ms

900ms+100ms = 1 saniye.

bana lazım olan 1000ms açık kalma + 10ms kapalı kalma
 

Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,597
gün boyunca her türlü sayıyı değiştirdim her türlü registeri denedim birşeyi atlıyorum ama görmüyorum atladığımı.

yarın devam edicem sıra regülatör çıkışı güçlendirmede.
 

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
13,798
Şimdi datasheete baktım Ahmet. Üç tane timer var Atmega328'de. Timer0 ve Timer2 8 bitlik, Timer1 ise 16 bitlik. Frekansı sayarken mutlaka 16 bitlik counteri kullanmamız lazım, çünkü taşma olması çok daha uzun sürer. Mesela 10 MHz lik bir sinyali ölçüyorken, saniyede 153 kez taşma olur. Sen de bir kesme tanımlayıp kesmenin içinde başka 16 bitlik bir counter'i arttırırsan, efektif olarak 32 bitlik bir counter elde edersin. Ama 8 bitlik bir counter saniyede 39000 küsür kez taşar, bunu kesme ile yakalaman mümkün değil. Eğer dediğim gibi başka bir 16 bit timer daha olsaydı belki ilk 16 bit timerin ikincisini hardware olarak saydırmasını sağlayabilirdik. Ama başka timer yok.

Yani frekansı saymak için 16 bit olan Timer1 i kullanman lazım.
 

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
13,798
1 s palsi üretmek için diğer timer'ları bir şekilde kullanmamız lazım. Baktığımız zaman Timer2 ile 1024 lük prescale elde edebiliyoruz. Timer 8 bit olduğu için 256 da oradan bölebiliriz. Bir de sadece pozitif palsi kullandığımız için oradan da bir 2 ye bölme geliyor. Ana clock sinyali 16 MHz.

[math]\frac{16 \times 10^6}{1024 \times 256 \times 2} = 30.51\ Hz[/math]
Yani tek bir 8 bitlik timer bizi 0.5 Hz e indirmiyor. O yüzden iki tane 8 bitlik timer kullanmamız lazım. ikincisi, birincisinin çıkışından beslenecek. Bu doğrultuda düşünüp timer'ları yapılandırmaya çalış bakalım.
 

Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,597
1 s palsi üretmek için diğer timer'ları bir şekilde kullanmamız lazım. Baktığımız zaman Timer2 ile 1024 lük prescale elde edebiliyoruz. Timer 8 bit olduğu için 256 da oradan bölebiliriz. Bir de sadece pozitif palsi kullandığımız için oradan da bir 2 ye bölme geliyor. Ana clock sinyali 16 MHz.

[math]\frac{16 \times 10^6}{1024 \times 256 \times 2} = 30.51\ Hz[/math]
Yani tek bir 8 bitlik timer bizi 1 Hz e indirmiyor. O yüzden iki tane 8 bitlik timer kullanmamız lazım. ikincisi, birincisinin çıkışından beslenecek. Bu doğrultuda düşünüp timer'ları yapılandırmaya çalış bakalım.
Son 3 günde uyuduğum zamanlar hariç tamamen elektrik-elektronik-programlama ile uğraştım.

Uğraştığım hiçbirinde olumlu sonuç alamıyorum.

Daha önce birkaç hafta uğraşıp kompanzasyon hesabını yaptığım fabrika cezaya girmiş bu ay onu dengelemek için uğraştım olmuyor eldeki boş kademeler ile.

Frekans metre adına 1 adım dahi atamadım.

LM2596 çıkışını güçlendirmek adına mos bağlamak istedim oda olmadı.

Neyse yola çıkalı çok olmuş artık vazgeçemem hiçbirinden mecbur bunları yapacağım.
Hepsine aynı anda daldığım için hiçbiri düzgün gitmiyor herhalde.


Yani bu dediğinden yola çıkarak saatlerce uğraştığım yapamadığımın sebebi benden kaynaklı değilmiş öyle mi normal şartlarda zaten 1 herz çıkaramıyormuş.

Sabah 7de devam edeceğim gösterdiğin yoldan.

Teşekkür ederim abi iyi geceler.
 

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
13,798
Evet Atmega328p timer'ları biraz limitli. Mesela 0.5 Hz sinyali çıkarmak mümkün olur gibi duruyor ama timer'i senkron çalıştırmak, yani 1 s lik pals üretip durdurmak sonra tekrar çalıştırma mümkün olur mu bilemiyorum. Neyse önce sen 0.5 Hz gate sinyali ile çalış, 1 s boşa gitsin. Sonra o 1 s boşluk olmaması için çalışılabilir.

Bu işlerde genelde ilerleme ani oluyor, düzenli bir ilerleme oluyor. Ben bazan bir hafta sürünüyorum bir projede, zerre ilerleme yok. Sonra birden bir lamba yanıyor ve o gün büyük bir ilerleme katediyorum. O yüzden düzenli ilerlemiyorum diye moralini bozma. Bu projeleri bitirince duyacağın keyfi düşün ve uğraşmaya devam et.
 

Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,597
Evet Atmega328p timer'ları biraz limitli. Mesela 0.5 Hz sinyali çıkarmak mümkün olur gibi duruyor ama timer'i senkron çalıştırmak, yani 1 s lik pals üretip durdurmak sonra tekrar çalıştırma mümkün olur mu bilemiyorum. Neyse önce sen 0.5 Hz gate sinyali ile çalış, 1 s boşa gitsin. Sonra o 1 s boşluk olmaması için çalışılabilir.

Bu işlerde genelde ilerleme ani oluyor, düzenli bir ilerleme oluyor. Ben bazan bir hafta sürünüyorum bir projede, zerre ilerleme yok. Sonra birden bir lamba yanıyor ve o gün büyük bir ilerleme katediyorum. O yüzden düzenli ilerlemiyorum diye moralini bozma. Bu projeleri bitirince duyacağın keyfi düşün ve uğraşmaya devam et.
Sırf bu hevese kendi kendime proje yapmaya başladım.
Yaptığımı kullanınca bambaşka oluyor sanki daha iyi yok gibi hissediyorum:katil2:
Benim odaya yaptığım RGB kontrolcüye soft kapanma eklemiştim o soft kapamayı izlemek bile en kaliteli filmden güzel geliyor bana.

Asla sıkılmıyorum başarızlık biraz hararet yaptırsada benim motorun daha nerden baksan 200bin km yolu var burada harareti umursayıp duramam bir şekilde sonuca ulaştırırım.


Bu gün hiç mi birşey öğrenmedim o kadar register ile uğraşınca. Öğrendim.

Mesela D5 ve D6ya bağlı timeri yapılandırınca hiçbir delay, delayMicroseconds, pulseIn gibi komutlar çalışmıyor.

Arduino alt yapısı bu komutlar için oraya bağlı timerX'i kullanmışlar biz kendimiz yapılandırınca bozuluyor herhalde.
 

semih_s

Aktif Üye
Katılım
16 Aralık 2020
Mesajlar
261
Mesela D5 ve D6ya bağlı timeri yapılandırınca hiçbir delay, delayMicroseconds, pulseIn gibi komutlar çalışmıyor.

Arduino alt yapısı bu komutlar için oraya bağlı timerX'i kullanmışlar biz kendimiz yapılandırınca bozuluyor herhalde.
:) Aynen! Arduino timer0'ı kendisi kullanıyor. Bir çok farklı kütüphanede her fonksiyon için olmasa da bazı fonksiyonlar bu timer0'ı yeniden yapılandırdığında çalışmıyor. "Bana millis() lazım değil" deyip birkaç gün çalıştığım projede kan ve göz yaşı dökerek çalışmayan kodlarımın timer0'ı kullanan kütüphanelerden kaynaklandığını farketim. Sonra timer0'ı kuzu kuzu arduinoya bırakıp devre kartı dahil her şeyi baştan planlamam gerekti. Saçımda daha yok ama galiba sakalımdaki bir kaç beyazın sebebi bu olmuştur.
 

Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,597
:) Aynen! Arduino timer0'ı kendisi kullanıyor. Bir çok farklı kütüphanede her fonksiyon için olmasa da bazı fonksiyonlar bu timer0'ı yeniden yapılandırdığında çalışmıyor. "Bana millis() lazım değil" deyip birkaç gün çalıştığım projede kan ve göz yaşı dökerek çalışmayan kodlarımın timer0'ı kullanan kütüphanelerden kaynaklandığını farketim. Sonra timer0'ı kuzu kuzu arduinoya bırakıp devre kartı dahil her şeyi baştan planlamam gerekti. Saçımda daha yok ama galiba sakalımdaki bir kaç beyazın sebebi bu olmuştur.
Ben paranoyağım. Kullandığım kartın şeması olmazssa onu kullanmam,kullandığım kütüphane dosyalarına göz atmadan kullanmam. Böyle akışkanlar mı paranoyaklık mı desem arasında bir huyum var.

Bütün projelerime ara verdim çok fazla kafam bulandı elimdeki kopanzasyon işimi halledince geri döneceğim
 
Top