Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

18F4550 ile programlama

Başlatan kara_kalem, 16 Mart 2009, 17:39:37

kara_kalem

877 artık biyere kadar diye düşündüm ve 18f4550 ile usb ile ilgili programlar yazmak için yola çıktım ancak yazdıgım ilk basit led flip flop programında tekledim. CCS de proje hazırladım ama led yanıp sönmüyor bile... Acaba hazırlık için bişeyler mi eklemeliyim?

wosvol

pki biligsayar programı mevcutmu cihazı pc ye tanıttın mı

kara_kalem

Aşağıdaki programı ISIS üzerinde smüle ediyorum

--------------------başlık dosyası-----------------------------------
#include <18F4550.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES XT                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPROTECT                //Code not protected from reading
#FUSES BROWNOUT                 //Reset when brownout detected
#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 LVP                      //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 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
#FUSES ICPRT                    //ICPRT enabled

#use delay(clock=4000000)
--------------------CCS dosyası------------------------------------------
#include "main.h"


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_timer_3(T3_DISABLED|T3_DIV_BY_1);
  setup_comparator(NC_NC_NC_NC);
  setup_vref(FALSE);
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab

  while(1)
  {
  output_high(pin_c0);
  delay_ms(500);
  output_low(pin_c0);
  delay_ms(500);
 
  }

}

cetinkaya

usta bu ne ya fuse ayarlari programin 10 kati bu ccs c beni korkutuyor :)

kara_kalem

O kısmı proje oluştururken şunu kullan bunu kullanma seçeneklerinden kendisi oluşturuyor. Korkacak bişey yok, en kolay pic C dili CCS...

erkan06

Bu kod isis üzerinde çalışıp, gerçek devrede çalışmıyosa donanımsal bir sıkıntı olabilir mi? Pic arızalıdır belki de.
Ne mutlu Türküm diyene!

aliveli

kullanmayacağın fuse lar kilitliyo programı aşağıdakileri kullanman yeterli
#fuses XT,NOWDT,PUT,NOPROTECT,BROWNOUT,NOLVP

kara_kalem

Verilen FUSES ile denedim yine değişiklik yok.
Programı sorunsuz derledim ve ISIS'te denedim. Devreyi  kurup denemedim... C0 portundaki tek ledi yakıp söndürmüyor..

Salih

Sizin programı kopyalayıp derledim ve gerçek devre üzerinde denedim devre çalışıyor. Yalnız 4 Mhz kristal bağlı iken Delay_ms(500) yanlış değerde çalışıyor. O problemde
#FUSES CPUDIV1

değişikliğini yapınca düzeliyor.
Büyük ihtimalle sizin işlemcide veya devrede bir problem var.
Kolay gelsin

kara_kalem

Sorunu çözdüm ama sebebini çözemedim:)

877 ile ISIS'te yaptığım smilasyonlarda MCLR pinini Vcc ye bağlamadan sorunsuz çalışıyordu fakat 4550 de boşta bırakmıştım  sorun çıkarıyor. MCLR ye +5V verince çalışmaya başladı...

Salih

Alıntı yapılan: "kara_kalem"Sorunu çözdüm ama sebebini çözemedim:)

877 ile ISIS'te yaptığım smilasyonlarda MCLR pinini Vcc ye bağlamadan sorunsuz çalışıyordu fakat 4550 de boşta bırakmıştım  sorun çıkarıyor. MCLR ye +5V verince çalışmaya başladı...
Çünkü
#FUSES MCLR //Master Clear pin enabled

Reset girişini harici ucla kullanacak şekilde ayarlamışsın.
Isis bu model için dikkate alıyor demekki.

kara_kalem

Başka alternatifleri neler?

Salih

Alıntı yapılan: "kara_kalem"Başka alternatifleri neler?

Yanılmıyorsam,

#FUSES   NOMCRL


Olarak yazarsan reset işlemi dahili olarak yapılır. MCRL ucunuda
giriş çıkış işlemi olarak kullanabilirsin.
18F4550 ile bende yeni çalışmaya başladım.

kara_kalem

O zaman resetlemeyi yazılımla yapabiliriz?

Tagli

Aslında @salih'in dediği fuse ile MCLR dahili olarak +5 V'a bağlanır ve o pin boşa çıkar.

18 serisi PIC'lerde cihaza reset atmaya yarayan bir komut var, gerçi bilmiyorum istediğin bu mu...
Gökçe Tağlıoğlu