16f877a yavaş çalışıyor

Başlatan Atima, 23 Ekim 2021, 20:32:41

Atima

Isin bir diger kismida normal led yakma sondurme kodu duzgun calisiyor.. boyle olunca kristalde toplaklama da mclr direncinde sorun olmadigini dusunuyor insan..

yas

Alıntı yapılan: Atima - 24 Ekim 2021, 11:16:03Kristal kullaniyorum 4mhz lik xt yazmaman gerektigini soyluyorsunuz, deneyecegim. Hs ise 10mhz ustune yaziliyor diye biliyordum ama yanlisim varsa duzeltin.

Alıntı yapılan: ete - 24 Ekim 2021, 11:28:43Bildiğim kadarı ile XT 6 Mhz ve altı çalışma frekansları için geçerli bir parametre. Kristal rezonatör farketmiyor. Sonuçta rezonatör de kondansatörleri üzerinde olan bir kristal değilmidir.?
4mHz çalışma için XT seçilmesi gerekir. HS parametresi yanlızca 6Mhz ve üzeri frekanslar için seçilmelidir.

@ete hocam çalışmasında sorun yaratmıyor gibi görünebilir tam olarak değil, konfigürasyonda rc,lp,xt,hs seçimi bildiğiniz üzer osc pinlerini donanımsal olarak değiştiriyor. Kristal (kuvars) osilatörü ile rezenatör (seramik) osilatörü sonuçta aynı işi yapıyor görünseler de karalı çalışma için farklı çalışma genliklerine ihtiyaç duyarlar. Aynı frekansta çalışan mcu için xt ve hs seçim denemeleri yapıldığında skop yada voltmetre ile ölçümler karşılaştırıldığında fark olduğu görülür. Bu genlik farkının sebebi mcu nun osc konfigürasyonu sebebiyle donanım pinlerindeki değişikliktir. Rezenatör(seramik) osc ile kristal (kuvars) osc arasındaki tek farkın gnd ye bağlanan kondansatörlerin genelde rezenatörde içinde olduğu sanırlır (iki bacaklı olanlarda yoktur) ama asıl önemli olan fark kristal (kuvars) osc rezenatöre göre çok daha keskin ve ısı değişimi ile frekans kayması çok daha azdır.

@Atima sorunun hala bulunamamasına ilginç diye düşünüyordum, ama gönderdiğin resmi görünce donanımsal olması ihtimali çok yüksek diye düşünüyorum, temassızlık yada RC5 ve RC6 pinlerini mcu tarafından gnd ye çekerek denermisin. @ete hocanın besleme ile ilgili söylediklerini de es geçme. Eğer devreleri bilgisayarın usb üzerinden besliyorsan bilgisayardan tamamen ayırarak deneme yap belki bilgisayarından gürültü alıyor olabilir. Sonuç olumsuz olursa PCB nin alttan çekilmiş bir resmini de yükleyebilir misin.

tekosis

Kristale bağlı kondansatörleri yerinden söküp alttan kristalin bacaklarına doğrudan lehimlemen iyi olur. Pcb tasarımı baya sıkıntılı görünüyor. Kristalin gövdesini bir tel ile devrenin gnd hattına bağlayabilirsin. kristale gelen hatlar ne durumda?
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

elmaalma

Mikrodenetleyicinin 11+32 (Vdd) bacaklarını ve 12+31 (Vss) bir birine bağlamadıysan bağla ve de en kısa noktadan 100 nF + 100uF koy. Devrende kristale bağlı olan dışında (varsa dahi)kapasitör göremedim.

Atima




Resimdeki isaretli yere 100nf koydum, 11 32 ve 12 31 uclari birbirine baglidir. Devrede kisa devre yok. Ayrica tum pinlerden 2saniye led yakma sondurme duzgun caisiyor.

Atima


tekosis



Kırmızı okla gösterdiğim kısımda osilatör kısmında bir bakir hat kısa devre yapıyor gibi. Burayı düzeltmeniz lazım.
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

Atima

Alıntı yapılan: tekosis - 25 Ekim 2021, 19:30:36
Kırmızı okla gösterdiğim kısımda osilatör kısmında bir bakir hat kısa devre yapıyor gibi. Burayı düzeltmeniz lazım.

Multimetre ile olctum tek tek kisa devre olmamasi lazim

tekosis

O arayı temizlers3n iyi olur.
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

Atima


Atima

#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)
#define mavi input(pin_c4)
#define yesil input(pin_c5)
#define kirmizi input(pin_c3)
#define tanimsiz input(pin_c2)
#include <lcd.c>
void main()
{
   lcd_init();
   while(TRUE)
   {
      if(mavi==1 && yesil==0 && kirmizi==0 && tanimsiz==0)
      {
         output_high(pin_b0);
         output_low(pin_b1);
         output_low(pin_b2);
         printf(lcd_putc,"\fmavi renk !!"); delay_ms(100);
      }
      else if(yesil==1 && mavi==0  &&kirmizi==0 && tanimsiz==0)
      {
         output_high(pin_b1);
         output_low(pin_b0);
         output_low(pin_b2);
         printf(lcd_putc,"\fyesil renk !!"); delay_ms(100);
      }
      else if(kirmizi==1 && yesil==0 && mavi==0 && tanimsiz==0)
      {
         output_high(pin_b2);
         output_low(pin_b1);
         output_low(pin_b0);
         printf(lcd_putc,"\fkirmizi renk !!"); delay_ms(100);
      }
      else if(kirmizi==0 && yesil==0 && mavi==0 && tanimsiz==1)
      {
         output_high(pin_b3);
         output_low(pin_b1);
         output_low(pin_b2);
         output_low(pin_b0);
         printf(lcd_putc,"\ftanimsiz renk !!"); delay_ms(100);
      }


      
   }

}

kodu düzenledim tekrar, simülasyonda çalışıyor. Gerçekte pcb bozuktur dedim breadboarda kurdum olmadı. kapasitör yerleştirdim olmadı. bor ile lvp kapattım olmadı. Uzaktan elim hafif yaklaşınca hala çalışıyor ama öbür türlü tepki vermiyor..

fide

Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

Atima


aliveli

lcd_init(); den önce delay_ms(100); kullanarak deneyin
çok lazım değilse ışığını kapatın

Atima

#29
Alıntı yapılan: aliveli - 26 Ekim 2021, 00:18:56lcd_init(); den önce delay_ms(100); kullanarak deneyin
çok lazım değilse ışığını kapatın
Deneyecegim baska tavsiyesi olan var midir ?
https://www.microchip.com/forums/m/tm.aspx?m=628745&p=1
Bu linkte bazi seyler diyor ne dusunuyorsunuz ?