pic18f4550 ve osilator ayarları nasıl yapılır

Başlatan klax, 29 Kasım 2009, 03:54:57

klax

ccs c de osc yarları yapmaya calıstım fakat led flashor programım kaplumbaga gıbı  yanıp soner.pll ayarlarını defalarca kontrol etım
ama ne fayda hattamı goremedım.
main.h
#include <18F4550.h>
#device adc=8
#FUSES NOWDT                    //No Watch Dog Timer 
#FUSES HSPLL                    //High Speed Crystal/Resonator with PLL enabled 
#FUSES NOPROTECT                //Code not protected from reading 
#FUSES BROWNOUT                 //Reset when brownout detected 
#FUSES BORV20                   //Brownout reset at 2.0V 
#FUSES PUT                      //Power Up Timer 
#FUSES NOCPD                    //No EE protection 
#FUSES STVREN                   //Stack full/underflow will cause reset 
#FUSES NODEBUG                  //No Debug mode for ICD 
#FUSES NOLVP                      //Low Voltage Programming on B3(PIC16) or B5(PIC18) 
#FUSES NOWRT                    //Program memory not write protected 
#FUSES NOWRTD                   //Data EEPROM not write protected 
#FUSES IESO                     //Internal External Switch Over mode enabled 
#FUSES FCMEN                    //Fail-safe clock monitor enabled 
#FUSES PBADEN                   //PORTB pins are configured as analog input channels on RESET 
#FUSES NOWRTC                   //configuration not registers write protected 
#FUSES NOWRTB                   //Boot block not write protected 
#FUSES NOEBTR                   //Memory not protected from table reads 
#FUSES NOEBTRB                  //Boot block not protected from table reads 
#FUSES NOCPB                    //No Boot Block code protection 
#FUSES LPT1OSC                  //Timer1 configured for low-power operation 
#FUSES MCLR                     //Master Clear pin enabled 
#FUSES NOXINST                    //Extended set extension and Indexed Addressing mode enabled 
#FUSES PLL5                     //Divide By 5(20MHz oscillator input) 
#FUSES USBDIV                   //USB clock source comes from PLL divide by 2 
#FUSES CPUDIV2                  //System Clock /1 
#FUSES VREGEN                   //USB voltage regulator enabled 

#use delay(clock=48000000)



main.c
#include "C:\Belgelerim\main.h"
#DEFINE GLCD_CS1 PIN_D3
#DEFINE GLCD_CS2 PIN_D4
#DEFINE GLCD_DI  PIN_D5
#DEFINE GLCD_RW  PIN_D6
#DEFINE GLCD_E   PIN_D7
#include "HDM64GS12.c"
#include "graphics.c"


void main()
{

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
//Setup_Oscillator parameter not selected from Intr Oscillotar Config tab

   // TODO: USER CODE!!
glcd_init(ON);                               // Must initialize the LCD

while(TRUE) {
 OUTPUT_LOW(PIN_D2);
 DELAY_MS(1000);
 OUTPUT_HIGH(PIN_D2);
 DELAY_MS(1000);
}
}
TB2EOS

kemalak

#include <18F4550.h>
 
//Bu fuses değeri 20MHZ  kristaller ile 48 MHZ de çalışır
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN //Doğru
 
#use delay(clock=48000000)

//Bu program 40. pine (RB.7) bağlı Ledi yakıp söndürür

main() {
   set_tris_b(0x00);

  while(1)
  {
 output_high(PIN_B7); //ledi yak


 delay_ms(500);     // yarım saniye yanık kalsın
output_low(PIN_B7);  //pini çıkış olarak ayarla ve L yap


 delay_ms(500);      // yarım saniye sönük
 }
 }

klax

teskurler denedım fakat degısen bır sey olmadı.benım pc de bır problem var dıye dusunuyorum cunku yokluktan wın98 kulanıyorum yenı pc almanın yolu gozukuyor.:(
TB2EOS

kemalak

Kodları yeniden denedim  sorunsuz çalıştı
Pic i programlarken bir sorun yaşıyor olabilirsiniz

Kolay gelsin

klax

pickit2 kullanıyorum problem ondamı acaba :?
TB2EOS

kemalak

Sorun nereden kaynaklanıyor bilemem ama  ben kendi çalışmalarımda
bu değerleri denedim  sorunsuz çalışıyorlar  Hatta USB üzerinden çalışan bazı uygulamalar üzerinde çalışıyorum    Bilgisayar ve pic sorunsuz haberleşiyor Eğer fuses değerlerinde bir hata olsaydı  pic ile bilgisayardaki
program iletişim kuramazdı diye düşünüyorum  Birde aşağıdaki değerleri
değişik frekansta kristaller  ile bir dene bakalım Ben hepsini denedim sorunsuz olduğuna karar verdim
Bazı kristallerde kararsız çalışabiliyor  mümkünse başka bir pic le dene
Kolay gelsin
#include <18F2550.h>

//Bu fuses değeri ile 4 MHZ kristal ile 48 MHZ de çalışır
#fuses XTPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,PLL1,CPUDIV1,VREGEN,NOPBADEN //doğru

#use delay(clock=48000000)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

//Bu fuses değeri 20MHZ  kristaller ile 48 MHZ de çalışır

#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN //Doğru
#use delay(clock=48000000)

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

//Bu fuses değeri ile 4 MHZ kristal ile 4 MHZ de çalışır
#fuses XT,NOWDT,NOPROTECT,NOLVP,NODEBUG,PLL1,CPUDIV1,VREGEN // Denendi

#use delay(clock=4000000)

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxx
// Bu fuses değeri ile  12 MHZ kristal ile  48 MHZ de çalışır
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN
#use delay(clock=48000000)

klax

bugun pic16f877 aldim deneyecem.ccs de yaziyom kodlari fakat fuse ayarlari degisik microC  de ayarliyom fuse farkli cikiyor.buyuk olasilik benim pcden kaynaklaniyor
TB2EOS

klax

foruma girmek her zaman nasip olmuyor gene koptu telekomun adsl portlari galiba.pic 18f877 aldim degisen bir sey olmadi yeni bir pc alacam baska care yok p3 433 ile olmuyor isler.garibanligi gozu kor olsun :(
TB2EOS

hasangurlek

Hex kodunu MCU e 8086 makine ile bile atabilirsiniz. PC tiplerinin bu işle bir ilgisi olmaz !

#FUSES CPUDIV2                  //System Clock /1
#use delay(clock=48000000)

Bu hızda çalışabilmek için PCB tasarladınızmı, yoksa delikli pertinaks, breadboard tipi bir şeydemi çalışıyorsunuz ? PCB var ise ufak tefek tasarım hataları bile bu hızda problem çıkartır. Diğerlerinde ise çalışmak neredeyse mümkün değildir. Denemeler için CPU saatini PLL/6 olarak ayarlarsanız işinizi görür.
Osilatör ayarları için buraya bakabilirsiniz

FCMEN harici osilatör problemli olduğunda dahili osilatörü devreye sokar ve OSCCON ile belirlediğiniz hız ne ise CPU o hızda çalışır, kaplumbalığın sebebi budur. Bu ikisini kapatın;

#FUSES IESO                     //Internal External Switch Over mode enabled
#FUSES FCMEN                    //Fail-safe clock monitor enabled

Gerekli değilse bunuda kapatın;
#FUSES MCLR                     //Master Clear pin enabled

Ayrıca Vusb pininde +3.3 volt okumalısınız. Eğer burada bu voltaj yoksa harici osilatörünüz problemlidir. Birde bu pinde 220nf tantal kapasitör yoksa problem yaşarsınız.

Bir diğer ihtimalde aygıtınız hosttan sürekli reset (SE0 durumu değil) alıyor olabilir. Vusb hattından beyaz led yakan bazı arkadaşlarım aksini iddia etsede :( eğer hosta bildirdiğiniz güç ihtiyacını aşıyorsanız; host bulduğu ilk fırsatta yani en fazla bir kaç yüz milisaniye içinde (hattaki diğer aygıtlar nedeniyle) Vusb hattını kısa süreli 0 a çeker ve cihazınızın donanımsal reset yemesine sebep olur.
http://www.cyber-warrior.org, Although they like whiteness, sometimes twilight is required...  Hala evlilermi bilinmez ama kesinlikle artık uygun değiller !!!

klax

breadboard ile calisiyorum yarin deneyecem.harici osilatorun problemli oldugunda dahili osilatoru devreye aldigini bilmiyordum ogrendigim iyi oldu.Vusb voltajina 220pf takmadim .usb baglantisi su anlik yok tasarimimda ama onuda Vusb voltajinida kontrol edecem
TB2EOS

klax

pic18f877 ile devrem calisti.sorun benim kullandigim pc`de derleme yaparken duzgun calismiyor.internetten derlenmis hex indirdim pic18f4550 ile ilgili calisti.fakat ben derleme yaparken 18fn serisinde yanlis derliyor.Xp isletim sistemi duzgun calimadigi icin.arkadaslar yardimlariniz icin teşekkür ederim
TB2EOS

klax

TB2EOS

muhittin_kaplan

nasıl olur anlamadım 98 olduğu için derleme yapmıyordur da da xp olunca oldu mu yani garip