Attiny 2313A harici kristal ve güç sorunu

8tga7cmind

Üye
Katılım
16 Şub 2019
Mesajlar
11
Puanları
1
Yaş
25
Herkese iyi günler,
AVR mimarisinde c ile kodlamaya başladım ve bir sorunla karşılaştım.
Attiny2313A mikrodenetleyicisinde sigorta ayarlarını yapıyorum altta vereceğim yaptığım ayarları. Harici kristal kullanıyorum. 22pF mercimek kondansatörler kullanıyorum datasheette anladığım kadarıyla belirtilen değerler bunlar. Mikrodenetleyiciyi 20MHz de kullanmak istiyorum fakat harici herhangi bir osilatör bağladığımda pinlerden ledi sönük bir şekilde yakacak kadar güç çekebiliyorum. Bunun sebebinin yaptığım sigorta ayarlarından olduğunu düşünüyorum. Sigorta ayarlarım:
CKDIV8 = 1
CKOUT = 0
SUT1 = 1
SUT0 = 1
CKSEL3 = 1
CKSEL2 = 1
CKSEL1 = 1
CKSEL0 = 1
DWEN = 1
EESAVE = 1
SPIEN = 0 (SPI üzerinden programladığım için zaten değişmiyor)
WDTON = 1
BODLEVEL2 = 1
BODLEVEL1 = 1
BODLEVEL0 = 1
RSTDİSBL = 1
SELFPRGEN = 0
LB2 = 1
LB1 = 1

Datasheet:http://ww1.microchip.com/downloads/en/DeviceDoc/doc8246.pdf
Yaptıklarım ve anladıklarımı yazıyorum yanlışlarımı düzeltirseniz sevinirim bu konuyu internette benzer sorunlarla karşılaşanlara çözüm olsun diye uzun uzadıya yazıyorum.
İlk olarak 30. Sayfada tabloda eğer 0.4 - 0.9 MHz de kullanacaksan kondansatör bağlama onun üzerinde 20MHz ye kadar 12-22pF kondansatör bağla diyor.
Aynı tabloda 8MHz ve üzeri kristal kullanacaksan CKSEL3-2-1 sigortalarını 1 yap diyor.
Sayfanın en altında CKSEL0 ın SUT sigortalarıyla beraber başlangıç zamanını ve yükselmesini seçeceğini söylüyor.
"The CKSEL0 Fuse together with the SUT1..0 Fuses select the start-up times as shown in Table 6-7. "
31. Sayfadaki tabloda kristal kullanıyosan ve yavaş yükselme olcaksa (okuduğum bir kaynakta elinizdeki kristal hakkında bilgi sahibi değilseniz en uzun olan rising time seçin diyordu mantıklı geldi sonradan tüm rising time larıda denedim.)CKSEL0, SUT1, SUT0 sigortalarını 1 yapın diyor.
Diğer sigorta değerlerini de buradaki kaynaktan edindim. Attiny44 datasheetinden alıntı: kaynak:http://archive.fabacademy.org/archives/2016/opendot/students/182/embeddedprogramming.html

Mikrodenetleyici yi 5v ile besliyorum. Yeterli akımı sağlayamaması düşüncesi ile harici 1A adaptör ile besledim ama bir ledi bile doğru düzgün yakamıyorum. sadece 20MHz değil 8 ve 4 Mhz ile de denedim ama olmuyor yine çok çok sönük yanıyor.
198. sayfada pin başına 40mA verebileceğini söylüyor. E arduino da pin başına 40mA veriyor ve düzgünce yakıyor. Amacım led yakmak değil ama analog gir sensör bağladığımda yada ı2c uart spı kullanırken sorun olacağını düşünüyorum. Zaten dahili osilatör kullanırken böyle bir sorun yok. Ama nedense kristal bağlayınca böyle.
 
# define F_CPU 20000000UL
#include <avr/io.h>
#include <util/delay.h>

int main (void)
{
DDRD = 0b00100000;
while (1)
{
PORTD = 0b00100000;
_delay_ms(500);
PORTD = 0b00000000;
_delay_ms(500);
}

return 1;
}
yazdığım kod heryerde bulunabilen basit bir blink kodu sorunum kodun çalışmaması değil pinlerden yeterli güç çekememem. Sorunun sigortalarda olduğunu düşündüm sizin attığınız linkten kontrol edicem şimdi.Teşekkürler.
Ama sorunu hallettim gibi arada yine oluyor fakat devre breadboard üzerinde ve kristalle kondansatörlerin yerleri biraz uzaktı devreyi söküp adamakıllı tekrar kurdum çalıştı.
 
Son düzenleme:
Şemanızı da görsek? Led ayağındaki direnç
değeri nedir?
 

Forum istatistikleri

Konular
127,969
Mesajlar
913,975
Kullanıcılar
449,614
Son üye
Canipk

Yeni konular

Geri
Üst