18f2550 hız ve port çıkış problemi

Başlatan mcn, 05 Ocak 2012, 11:12:22

mcn

Merhabalar,

Daha önce pic ile defalarca uygulama yaptım.Ancak ilk defa 18f2550 kullanıyorum.Garip garip sorunlarla karşılaşıyorum.

Yazdığım kod basit olarak şu şekilde:

#include <18F2550.h>


#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES HS                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES BORV20                   //Brownout reset at 2.0V
#FUSES NOPUT                    //No 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                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#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 MCLR                     //Master Clear pin enabled
#FUSES LPT1OSC                  //Timer1 configured for low-power operation
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES PLL12                    //Divide By 12(48MHz oscillator input)
#FUSES CPUDIV4                  //System Clock by 4
#FUSES USBDIV                   //USB clock source comes from PLL divide by 2
#FUSES VREGEN                   //USB voltage regulator enabled

#use delay(clock=20000000)


#use fast_io(c)


void main()
{

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_CLOCK_DIV_2);
   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 Oscillator Config tab


   set_tris_c(0b00000000); // B portu tümüyle çıkış olarak yönlendiriliyor

   output_c(0x00);


   // TODO: USER CODE!!

while(1)
{
   output_c(0xFF);
   delay_ms(500);
   output_c(0x00);
   delay_ms(500);
}

}


En basit şekilde C portunu 500 ms 1,500 ms de 0 konumunda tutuyorum.Ancak:

-Süreyi 500 ms ayarlamama rağmen,yani 500 ms 1,500 ms 0 olması gerekirsen,  2 saniye 1, 2 saniye de 0 konumunda çalışıyor.Osiloskopta kristalimin bacağını inceledim 20 mhz tam olarak sağlıyor.

-İkincisi C portunu komple çıkış yapmama rağmen, C4 ve C5 pinlerinden hiçbir tepki alamıyorum.C portunun diğer pinlerinde sorun yok.A ve B portlarına da aynı şeyi denediğimde de onlarda da problem yok.

Devremi pertinaksa kurdum.ISIS ta 18f2550 de kodumu denediğimde hiçbir sorun görünmüyor port çıkışı ve zamanlama konusunda.

Baştaki konfigurasyon bitlerindemidir sorun nerdedir bir türlü anlayamadım.Daha önce 18f2550 ile çalışan arkadaşlar dikkat etmem gereken ek bişey mi var bu işlemcide?

şimdiden teşekkürler.


----
#Şimdi aynı devrede 16f876 denedim problemsiz çalışıyor
www.teknikyazi.com --üşenme,erteleme,vazgeçme...

skara1214

#include <18F2550.h>
#FUSES HS,NOWDT                  
#use delay(clock=20000000)
void main()
{
   output_c(0x00);
while(1)
{
   output_c(0xFF);
   delay_ms(500);
   output_c(0x00);
   delay_ms(500);
}
}


hocam ne kadar az fuses o kadar iyi.Birde şu sekilde deneyip haber verirmisiniz
Herkes ölür ama herkes gerçekten yaşamaz

mcn

@skara1214 hocam,malesef değişen bişey yok.o ilk baştaki FUSES ayarları CCS de otomatik proje oluşturduğumda karşıma çıkanlardı.
www.teknikyazi.com --üşenme,erteleme,vazgeçme...

muhittin_kaplan

#FUSES PLL12                    //Divide By 12(48MHz oscillator input)
#FUSES CPUDIV4                  //System Clock by 4
#FUSES USBDIV                   //USB clock source comes from PLL divide by 2
#FUSES VREGEN                   //USB voltage regulator enabled



Kodları ile aslında siz 20mhz ile çalıştırmıyor PLL i devreye veriyorsunuz.

#FUSES PLL12                    //Divide By 12(48MHz oscillator input)
Hatalı PLL girişine 4 mhz olacak Şekilde Ayar yapmanız
#FUSES PLL5                    //Divide By 12(20MHz oscillator input)
şeklinde yazmanız gerekir.
PLL ayarlarını Kontrol ediniz.

mcn

@muhittin_kaplan kaplan hocam teşekkürler,onlar gözümden kaçmış,

#FUSES PLL12                    //Divide By 12(48MHz oscillator input)
#FUSES CPUDIV4                  //System Clock by 4

ayarlarını şu şekilde değiştirince zaman problemi düzeldi:

#FUSES PLL5                    //Divide By 12(48MHz oscillator input)
#FUSES CPUDIV1                  //System Clock by 4

Burda dikkat edilmesi gereken bunları silince düzelmiyor,bu şekilde ayarlamak gerekiyor.

Ancak C4 ve C5 portlarından hala tepki alamıyorum,sanırım onlarda FUSES ayarlarından tekrar bir kontrol edeyim.
www.teknikyazi.com --üşenme,erteleme,vazgeçme...

mcn

C4 VE C5 USB data pinleri olduğu için kullanamıyoruz sanırım istediğimiz gibi.FUSES ayarlarından USB ile ilgili herşeyi kapatmama,hatta diğer açık herşeyide kapatmama rağmen değişen bişey olmadı.

FUSES ayarları son hali:

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES HS                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES BORV20                   //Brownout reset at 2.0V
#FUSES NOPUT                    //No 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                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOWRT                    //Program memory not write protected
#FUSES NOWRTD                   //Data EEPROM not write protected
#FUSES NOIESO                     //Internal External Switch Over mode enabled
#FUSES NOFCMEN                    //Fail-safe clock monitor enabled
#FUSES NOPBADEN                   //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 MCLR                     //Master Clear pin enabled
#FUSES NOLPT1OSC                  //Timer1 configured for low-power operation
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES PLL5                    //Divide By 12(48MHz oscillator input)
#FUSES CPUDIV1                  //System Clock by 4
#FUSES NOUSBDIV                   //USB clock source comes from PLL divide by 2
#FUSES NOVREGEN                   //USB voltage regulator enabled
www.teknikyazi.com --üşenme,erteleme,vazgeçme...

muhittin_kaplan

Alıntı YapOn a Power-on Reset, these pins, except RC4 and RC5, are configured as digital inputs. To use pins RC4 and RC5 as digital inputs, the USB module must be disabled (UCON<3> = 0) and the on-chip USB transceiver must be disabled (UCFG<3> = 1).


mcn

hmm anladım,gereken ayarları yaptım ancak bu şekilde de o pinleri dijital girişi olarak kullanabiliyorum.Sanırım bu pinlerden çıkış yok  :)

www.teknikyazi.com --üşenme,erteleme,vazgeçme...

drmp

datasheet page=118
pc4 ve p5 ancak giriş olabilir usb iptal olduğu zaman
18f2550 ile ilk çalışmalarımda tam bir kaosun içine düsmüştüm  beni aldatan konu ise isiste bu portların çıkış olarak çalışmasıydı   

mcn

aynen hocam,beni yanıltanda o oldu.bu yüzden ISIS tan olabildiğince uzak durmaya çalışıyorum artık,sadece kodu denemek için açıp bakayım dedim gene kandırdı beni.
www.teknikyazi.com --üşenme,erteleme,vazgeçme...