Attiny 2313A harici kristal ve güç sorunu

8tga7cmind

Üye
Katılım
16 Şub 2019
Mesajlar
9
Puanları
1
Yaş
20
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.
 

mehmet.bey

Katılımcı Üye
Katılım
19 Ara 2011
Mesajlar
737
Puanları
58
http://www.engbedded.com/fusecalc/
Sigorta ayarlarını buradan kontrol ediniz.
Ayrıca yazdığınız kodları da paylaşırsanız
daha fazla yardım alacağınızı düşünüyorum.
 
Konu Sah
8

8tga7cmind

Üye
Katılım
16 Şub 2019
Mesajlar
9
Puanları
1
Yaş
20
# 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:

mehmet.bey

Katılımcı Üye
Katılım
19 Ara 2011
Mesajlar
737
Puanları
58
Şemanızı da görsek? Led ayağındaki direnç
değeri nedir?
 

Sponsor Bağlantı

Forum istatistikleri

Konular
105,544
Mesajlar
743,353
Kullanıcılar
392,304
Son üye
Elif Şahin

Yeni konular

Üst