Arduino millis() konusunda yardıma ihtiyacım var.

Ümidi kesecek bir durum yok, olayın aslını anlamak lazım.
Yav varya elimi attığım eleman kuruyor. Uğursuz muyum nedir? Sadece bir kere tamir edicem diye açtığım monitörün diyodunu değiştirdim çalıştı. Onun dışında neye elimi attıysam enaz bir hafta uğraştırdı :katil1:

Kardeşim sen micro denetleyicisin işte al kodunu çalış, yok illa bir aksilik çıkacak bana gelince. Şuraya bak millis diye açtığım konu osiloskop ile ölçülecek duruma geldi yav :katil2:
 
Anladığım kadarıyla bu ATTiny için yüklediğimiz MicroCore denen board destek paketi, delay fonksiyonunu değiştiriyor.

~/.arduino15/packages/MicroCore/hardware/avr/2.1.0/cores/microcore/wiring.c:
void delay(uint16_t ms)
{
  while(ms--)
    _delay_ms(1);
}

Yani bu board destek paketini yazanın yarattığı bir problem. ATTiny için muhtemelen başka board destek paketleri vardır, onları kullanmak lazım. Veya idare etmek için şöyle bir fonksiyon yazabilirsin:

C++:
void delay_seconds(unsigned long seconds)
{
    for (unsigned long i = 0; i < seconds; ++i)
    {
        delay(1000);
    }
}
 
ATtiny 13a için Nano shield'i yaptım.
Artık sadece bir kaç jumper yerini değiştirerek hem programlama, hemde buton, kullanma, led yakma gibi testleri kolayca yapabileceğim.

Belki öğrenebilirsem arduinonun kodlarına bağımlı kalmadan direk C yada C++ gibi kodlama ile yapabilirim bu işi.

20210815_160821.jpg
 
Aslında bu arduino IDE ile denemeden ben MPLAB IDE ile programlamayı denedim. Orada kullanılan kütüphaneler ve board destek paketleri çok daha iyidir. Ama programlama adaptörü konusu sıkıntılı. Elimde ICD4 ve Pickit3 var, bunlarla programlanmıyor. MPLAB IDE bunları seçmene dahi izin vermiyor. Pickit4 seçilebiliyor, ama onun da bağlantısı nasıl yapılacak araştırıp öğrenmek lazım. Bir de J-LİNK seçilebiliyor, ama işte gene bağlantı olayı nasıl olacak onu araştırmak lazım.
 
Senin Yazdığın;

Aslında bu arduino IDE ile denemeden ben MPLAB IDE ile programlamayı denedim. Orada kullanılan kütüphaneler ve board destek paketleri çok daha iyidir. Ama programlama adaptörü konusu sıkıntılı. Elimde ICD4 ve Pickit3 var, bunlarla programlanmıyor. MPLAB IDE bunları seçmene dahi izin vermiyor. Pickit4 seçilebiliyor, ama onun da bağlantısı nasıl yapılacak araştırıp öğrenmek lazım. Bir de J-LİNK seçilebiliyor, ama işte gene bağlantı olayı nasıl olacak onu araştırmak lazım.

Benim gördüğüm; :katil1:

На самом деле, я пробовал программировать с помощью MPLAB IDE, не пытаясь использовать эту среду разработки arduino. Используемые библиотеки и пакеты поддержки плат намного лучше. Но проблема с программным адаптером проблематична. У меня есть ICD4 и Pickit3, с ними не запрограммирован. Его можно запрограммировать с помощью Pickit4, но необходимо изучить и узнать, как его подключить.
 
Senin Yazdığın;



Benim gördüğüm;
:katil1:

На самом деле, я пробовал программировать с помощью MPLAB IDE, не пытаясь использовать эту среду разработки arduino. Используемые библиотеки и пакеты поддержки плат намного лучше. Но проблема с программным адаптером проблематична. У меня есть ICD4 и Pickit3, с ними не запрограммирован. Его можно запрограммировать с помощью Pickit4, но необходимо изучить и узнать, как его подключить.

Bu sıralar fazla Rus hack sitelerine takılıyorsun galiba :D Aslında çok iyi projeler var heriflerde.
 
Bu sıralar fazla Rus hack sitelerine takılıyorsun galiba :D Aslında çok iyi projeler var heriflerde.
Tabi tabi ingilizceyi hallettim de ruslar kaldı :D
Rusların bir tek torrent sitelerini seviyorum. Herifler kırıp kırıp yüklüyor programları. Elektronik konusunda hiç merak etmedim ne yaptıklarını.
Bu bahsi kapatalım. Rusların nelerini sevdiğimizi konuşmaya devam edersek varacağımız nokta az çok belli :katil1:
 
Bu kodun neresinde yanlışlık var yav? Ne yaptımsa low'a çekemedim ledi.

Kod:
#define dk15 4
#define role 0

void setup() {
 
  pinMode(dk15, INPUT);
  pinMode(role, OUTPUT);

  digitalWrite(role, LOW);
}

void delay_seconds(unsigned long saniye)
{
  digitalWrite(role, HIGH);
    for (unsigned long i = 0; i < saniye; i++)
    {
        delay(1000);
          
    }
    digitalWrite(role, LOW);
}

void loop() {
  if (digitalRead(dk15))
  {
    unsigned long san = 60000;
    delay_seconds(san); //900,000 15dk
    
  }
}
 
Yav 60000 saniye ne kadar süre? Neredeyse 1 gün. Sen çalıştır, yarın bak röleye :katil2:
 
void delay_seconds fonksiyonu adedi verilen kadar 1sn(1000ms) delay veriyor. 15 dk için de 1sn(1000ms) x 60 x 15 = 900 olacak galiba. 15 yerine abi sen bir 2 dk dene sonra 15 i de denersin.
 
Yav 60000 saniye ne kadar süre? Neredeyse 1 gün. Sen çalıştır, yarın bak röleye :katil2:
Hesap hatası olmuş herhalde ben onu 1dk diye hesaplamıştım :katil2:

void delay_seconds fonksiyonu adedi verilen kadar 1sn(1000ms) delay veriyor. 15 dk için de 1sn(1000ms) x 60 x 15 = 900 olacak galiba. 15 yerine abi sen bir 2 dk dene sonra 15 i de denersin.

for döngüsü 900 defa dönünce 900x1000 = 900,000 oluyor doğru.
Benim hatam 1000ms yi, 1 milisaniye kabul edip for döngüsünü 900,000 kere döndürmeye çalışmak olmuş anlaşılan. :)
 
1dk ve 15dk denemelerini yaptım.
1dk için 4sn,
15dk için 52sn geç kapandı.
30 ve 60dk ları deniyorum şimdi.
 
Kristal frekansı dediğim gibi hep sapıyormuş ben de duyduğumu söylüyorum.
1dk için 4sn, 15 dk için 52sn lik gecikme oldukça orantılı sayılır.

for (unsigned long i = 0; i < saniye; i++)
{
delay(1000); //yerine 996-997 yazıp bir dene abi şu anda tam düşünemedim 995 de olabilir hangisi daha iyi olursa karar verirsin.

}

Bu sayede kristalin sapmasını düzeltemesek de sistemin çalışmasını daha hassaslaştırabiliriz. Burada da zaten önemli olan kristalin sabit bir frekans üretmesi her zaman. Oradaki tek sıkıntı da sıcaklık faktörü. Sıcaklık kristalin çalışma frekansını değiştirmediği sürece senin yaptığın düzeltme oldukça işleri düzene sokacaktır diye düşünüyorum. 1-2 saatlik denemelerle hata payını ölçerek işine gelen bir değere ayarlarsın. Kolay gelsin abi. Mutlu son yakın sanırım :D
 
Kristal frekansı dediğim gibi hep sapıyormuş ben de duyduğumu söylüyorum.
1dk için 4sn, 15 dk için 52sn lik gecikme oldukça orantılı sayılır.

for (unsigned long i = 0; i < saniye; i++)
{
delay(1000); //yerine 996-997 yazıp bir dene abi şu anda tam düşünemedim 995 de olabilir hangisi daha iyi olursa karar verirsin.

}

Bu sayede kristalin sapmasını düzeltemesek de sistemin çalışmasını daha hassaslaştırabiliriz. Burada da zaten önemli olan kristalin sabit bir frekans üretmesi her zaman. Oradaki tek sıkıntı da sıcaklık faktörü. Sıcaklık kristalin çalışma frekansını değiştirmediği sürece senin yaptığın düzeltme oldukça işleri düzene sokacaktır diye düşünüyorum. 1-2 saatlik denemelerle hata payını ölçerek işine gelen bir değere ayarlarsın. Kolay gelsin abi. Mutlu son yakın sanırım :D
Bir kaç dakikanın hiç önemi yok. Düzeltme hesaplamaya bile değmez. Varsın 15dk yerine 16dk çalışsın :)

millis kullanabilseydim tam mutlu son olacaktı ama bunada şükür.
 
İlerde proje olarak yapmak istediğim bir sinyal jeneratörü var. Hazır si5351 modülü. Aynı zamanda telsiz işlerinde osilatör olarak bunu kullanacağım. si5351 üzerinde ana çip dışında da kristal var ve sapıyormuş fabrikadan hatalı olarak. Sen 10MHz diyorsun o 9.996.578 MHz üretiyor mesela. Aradaki farkı buluncaya kadar koddaki kristalin referans değerini değiştiriyorsun tam 10Mhz üretiyor. Benim hayalimdeki gibi işin suyunu çıkarıyım gibi bir derdin varsa yani sıcaklık değişiminden bile hiç etkilenmesin diyorsan GPS modülü ekliyorsun bu üretece. GPS'in sadece 1sn de 1 kere pulse üreten kısmını referans alıyorsun. Bu 1Hz referans sinyali uydulardan geliyor. Uydulardaki da sanırım yeryüzündeki atom saatlerinden veya direkt uydudan geliyor. Yani GPS ekleyince kristalin hatasını otomatik süspanse edebildiğin gibi, sıcaklık değişimlerine karşı bile otomatik düzeltme yapıyor sistem. Ben bunu telsizin içinde pek kullanacağımı zannetmiyorum ama yapacağım harici frekans jeneratöründe kullanacağım. Bugün aklıma başka bir fikir geldi daha önceden saat yapmak için 2032 pille çalışan RTC DS1307 modülü kullanmıştım zamanı aklında tutuyordu @taydin abi acaba bunun 1Hz sinyali iş görmez mi? Uzun vadede bu modüllerin de sapması çok düşük diye biliyorum. GPS kadar olmaz da. Bunlar neyi esas alarak doğru frekans üretiyorlar acaba. Bunda da kristal var ama o da sapacak :dusun1:
 
Benim hayalimdeki gibi işin suyunu çıkarıyım gibi bir derdin varsa yani sıcaklık değişiminden bile hiç etkilenmesin diyorsan GPS modülü ekliyorsun bu üretece. GPS'in sadece 1sn de 1 kere pulse üreten kısmını referans alıyorsun. Bu 1Hz referans sinyali uydulardan geliyor. Uydulardaki da sanırım yeryüzündeki atom saatlerinden veya direkt uydudan geliyor. Yani GPS ekleyince kristalin hatasını otomatik süspanse edebildiğin gibi, sıcaklık değişimlerine karşı bile otomatik düzeltme yapıyor sistem.

Düşük frekanslı iletişim için TCXO, OCXO veya GPS gerekmiyor ancak çok yüksek frekanslı iletişimde fark ediyor (mesela 2.4GHz ve 10GHz ile çalışan QO-100 uydusu). Eğer GPSDO yapmaya niyetliyseniz elimdeki OCXOlardan gönderebilirim. Tek şart projeyi foruma koymak :) Ben de yakında yapacağım, STM32 tabanlı çok güzel bir tasarım buldum: https://www.eevblog.com/forum/projects/yet-another-diy-gpsdo-yes-another-one/ Bende bu board (STM32F411) yok ama STM32F401 var. Umarım port ederken sorun çıkmaz. Bir de NEO-8M yerine uyduruk NEO-6M'lerden var, zavallı modül zar zor kilitleniyor, kendine hayrı yok.
 
Düşük frekanslı iletişim için TCXO, OCXO veya GPS gerekmiyor ancak çok yüksek frekanslı iletişimde fark ediyor (mesela 2.4GHz ve 10GHz ile çalışan QO-100 uydusu). Eğer GPSDO yapmaya niyetliyseniz elimdeki OCXOlardan gönderebilirim. Tek şart projeyi foruma koymak :) Ben de yakında yapacağım, STM32 tabanlı çok güzel bir tasarım buldum: https://www.eevblog.com/forum/projects/yet-another-diy-gpsdo-yes-another-one/ Bende bu board (STM32F411) yok ama STM32F401 var. Umarım port ederken sorun çıkmaz. Bir de NEO-8M yerine uyduruk NEO-6M'lerden var, zavallı modül zar zor kilitleniyor, kendine hayrı yok.
Teklifiniz için çok teşekkür ederim daha araştırma kısmındayım, henüz teklifinizi değerlendirebilecek tecrübede değilim. Özellikle sizdeki kristalle sanırım voltaj kontrollü olanlardan. Bu kristal tipleri de çok ilginç gerçekten her geçen gün başka bir tane duyuyorum. Ben GPSDO yapmayı planlamıştım
bu videodan sonra. Benim bunu yapmamdaki amaç da çinden ucuz ama araştırdığım kadarıyla iş görür bir frekans metre sipariş vereceğim 8 digitlik 10MHz'e kadar 1Hz çözünürlüğü var. Eğer GPSDO yapmazsam yapacağım si5351 osilatörleri ayarlarken esas alabileceğim tek şey çinden aldığım frekansmetre olacak. Ona da %100 güvenmediğim için GPS ile bu işe girişmeyi düşündüm. Elimde doğruluğuna güvendiğim ucuz yollu bir ürün olsun istiyorum.

İki soru sorsam müsaadenizle eğer güvendiğim bir alet ile si5351 i ölçsem ve kalibre etsem frekansta çok bir kayma olmaz mı demek istiyorsunuz? Diğer sorum da NEO-6M olandan sipariş edecektim işe yaramaz mı gerçekten?
 

Çevrimiçi personel

Forum istatistikleri

Konular
6,957
Mesajlar
118,808
Üyeler
2,825
Son üye
karahanli7

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top