O zaman bu entegreden hiç sinyal çıkmıyor. Yada sinyal çıkış bacağı yanlış. En iyisi bacakları tek tek ölçerek sinyal arayayım.@Gokrtl Osiloskopta görülen şey sadece gürültü. 80mV kadar. Diğer pinlerden veya iç osilatörden geliyor.
Pinlerin HIGH, LOW olması konusunda bir sıkıntı yok. Çünkü denedim, led yakıp sondürüyor pinler. Sadece osilatör ile ilgili bir sıkıntı var. Onu aşmaya çalışıyorum.İstersen adım adım git. Bir pin seçip 1 konumuna getir, bakalım çıkış veriyor mu.
Bu kodu deneyebilmem için içindeki iki tane kütüphaneyi bulmam gerek. Biraz bakınayım, bulursam denerim.Eğer o çalışıyorsa Buradaki kodu deneyebilir misin? Arduino fonksiyonları yerine doğrudan registerları kullanarak hardware PWM yapmış: https://blog.podkalicki.com/attiny13-hardware-pwm/
Süre sorunu daha çok overflow durumuna benziyor, saniye sinyali veren bir kesme ayarlayıp saniye saydırabilirsin. kalibrasyonu da timer'ın registerlerinden yapılabilir. Tamamen aylaklıktan, kabaca kronometre tutarak elimdeki bir attiny13'e 9.6MHZ dahili osilatörle saniye değişkenini her saniye artıracak bir kesme hazırladım. PORTB3'e bağlı ledle sınıyor zamanlayıcıyı.Şimdi geldik zurnanın zırt dediği yere. Dünkü Frekans eşitlememde 71 sayısını bulmuştum.
Bu günkü bulduğum kare dalga ile tekrar kalibrasyon yaptığımda uno'nun frekansına eşitlemek için yine 71 adım ilerledim.
Ve bu işe yaramıyor. Entegre hep 14:35dk dan ileri gidemiyor.
Resimde görüleceği üzere kare dalga formları birbirine ikiz gibi benzedi.
/*
* timer_deneme.c
*
* Created: 14.08.2021 21:47:18
* Author : brehk
*/
#include <avr/io.h>
#include <stdlib.h>
#include <stdint.h>
#include <avr/interrupt.h>
volatile int saniye,sayac;
ISR(TIM0_COMPA_vect)
{
sayac++;
if(sayac>42)
{
sayac=0;
saniye++;
}
}
int main(void)
{
DDRB |=1<<3;
PORTB=0;
OCR0A=210; //
TCCR0A |= (1<<WGM01); // CTC timer sayacı OCR0A ile eşitlendiğinde timer sıfırlanır
TCCR0B |= 0b101;//prescaler 0b101 için 1024
TIMSK0 |= 1<<OCIE0A; // OCR0A timer sayacı eşitlenmesinde kesmeyi etkinleştirir.
sei();
while (1)
{
if(saniye>4)
{
saniye=0;
PORTB^=(1<<3);
}
}
}
Bunlar arduino kodu değil. Bunu kullanabilmek için başka program yüklemek lazım sanırım.Süre sorunu daha çok overflow durumuna benziyor, saniye sinyali veren bir kesme ayarlayıp saniye saydırabilirsin. kalibrasyonu da timer'ın registerlerinden yapılabilir. Tamamen aylaklıktan, kabaca kronometre tutarak elimdeki bir attiny13'e 9.6MHZ dahili osilatörle saniye değişkenini her saniye artıracak bir kesme hazırladım. PORTB3'e bağlı ledle sınıyor zamanlayıcıyı.
timer deneme:/* * timer_deneme.c * * Created: 14.08.2021 21:47:18 * Author : brehk */ #include <avr/io.h> #include <stdlib.h> #include <stdint.h> #include <avr/interrupt.h> volatile int saniye,sayac; ISR(TIM0_COMPA_vect) { sayac++; if(sayac>42) { sayac=0; saniye++; } } int main(void) { DDRB |=1<<3; PORTB=0; OCR0A=210; // TCCR0A |= (1<<WGM01); // CTC timer sayacı OCR0A ile eşitlendiğinde timer sıfırlanır TCCR0B |= 0b101;//prescaler 0b101 için 1024 TIMSK0 |= 1<<OCIE0A; // OCR0A timer sayacı eşitlenmesinde kesmeyi etkinleştirir. sei(); while (1) { if(saniye>4) { saniye=0; PORTB^=(1<<3); } } }
setup
fonksiyonunda OSCCAL
registerine değer yazdım.void setup() {
OSCCAL = 0x4c;
// initialize pin 4 (ATtiny leg 3) as an output.
pinMode(4, OUTPUT);
}
void loop() {
digitalWrite(4, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(4, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
Benim uyguladığım adımların pin bağlantılarına kadar aynısı. Burada tek farklı gördüğüm ben osccal değerini int yazdım, sen hex yazmışsın.ATTiny'yi ben de kurdum şimdi breadboard'a. Şuradaki prosedürü takip ettim:
Arduino Project Hub
Arduino Project Hub is a website for sharing tutorials and descriptions of projects made with Arduino boardscreate.arduino.cc
12979 eklentisine bak
Çalışmıyor derken, bu entegrelerden zamanlama konusunda ümidi keselim mi diyorsun abi?60 saiyeye kadar delay doğru çalışıyor, ondan daha büyük delay'ler çalışmıyor
Çalışmıyor derken, bu entegrelerden zamanlama konusunda ümidi keselim mi diyorsun abi?
Sadece pinleri aç kapa olarak mı kullanılır?