PIC 16F777 RGB LED PWM fuse error hatası

Başlatan lazut08, 26 Aralık 2013, 16:53:55

lazut08

Herkese merhaba arkadaşlar.Uzaktan bluettooth ile kontrollü projemiz için  kullandığımız 16f877 entegresinde pwm için  2 bacak olduğu için pic16f777 entegresini aldık.proje için yazıdığımız kodu pic 16f877 için çalıştırdık ancak programı 16f777 için tekrar oluşturduğumuzda oluşan hex dosyasını entegreye atarken programlayıcı(diy150) fuse error 0x2008 Good 0x03FBC Bad 0X3FFF gibi bir hata veriyor.programıda atamıyor bu yüzden.Acaba sebebi  ne olabilir   :-\

#include <16F777.h>
#device adc=8
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES BORV45                   //Brownout reset at 4.5V
#FUSES MCLR                     //Master Clear pin enabled
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOFCMEN                  //Fail-safe clock monitor disabled
#FUSES NOIESO                   //Internal External Switch Over mode disabled
#FUSES NOBORSEN                 //See Datasheet

#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

#int_RDA
char a;
char b;
char c;
char r;

void  RDA_isr(void)
{
disable_interrupts(INT_RDA);
}



void main()
{

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF|ADC_TAD_MUL_0);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DIV_BY_16,255,1);
   setup_ccp1(CCP_PWM);
   setup_ccp2(CCP_PWM);
   setup_ccp3(CCP_PWM);
   set_pwm1_duty(0);
   set_pwm2_duty(0);
   set_pwm3_duty(0);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);
while(1)
{
r=getc();
 if(r=='G')
{
 a=getc();
 b=getc();
 c=getc();
 set_pwm1_duty((a-48)*100+(b-48)*10+c-48);
}
else if(r=='R')
{
 a=getc();
 b=getc();
 c=getc();
 set_pwm2_duty((a-48)*100+(b-48)*10+c-48);
 }
else if(r=='B')
{
 a=getc();
 b=getc();
 c=getc();
 set_pwm3_duty((a-48)*100+(b-48)*10+c-48);
 }
}}

Mr.Java

#include <16F877A.h>
#device adc=8
#FUSES NOWDT      //No Watch Dog Timer
#FUSES HS         //Highspeed Osc > 4mhz
#FUSES PUT        //Power Up Timer
#FUSES NOPROTECT  //Code not protected from reading
#FUSES NODEBUG    //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP      //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD      //No EE protection

bu şekil denermisin.Ayrıca program size uygun olarak fuse ayarlarını good olarak hex olrak vermiş.Datasheetten bakabilirsin tek tek fuse ayarlarına.Aklıma gelen ilk şey kristal tipi nedir ?

lazut08

#2
kullanmam gereken entegre 777 3 pwm lazım bana . 877 de 2 pwm var onla çalışıyor zaten.  4mhz harici kristal kullanıyorum. teşekkürkler

Mr.Java

#3
Pardon gözümden kaçmış işlemci türü  ::)

CCS bilmiyorum fakat destekliyordur paylaşacağım komut satırını..

CONFIG1 = 0x3869
CONFIG2 = 0x0043

Bu şekilde yazıp deneyebilirmisiniz ?

pwm.c

hex dosyasının yazılamaması ile derleyicinin ne alakası var?
sorun donanımsal da olabilir. belki PIC bozuktur. birde ICSP ile programlamayı dene bakalım.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

OG

K128 listesinde olmasına rağmen 16f777 yi programlayamıyor, muhtemelen K150 de öyledir. PicKit2 öneririm.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Mr.Java

#6
@pwm.c
Şöyle ki k150 yanlış fuse ayarlarında hata veriyor,yazmıyor.Sorun derleyicide değil

lazut08

Arkadaşlar öncelikle herkese teşekkür ederim değerli cevaplarınız için icsp moddada aynı hatayı veriyor malesef.Pickit2 im olmadığı için deneyemedim.ancak pwm ler bazen doğru çalışıyor bazen doğru çalışmıyor.Buda büyük ihtimal düzgün programlayamadığından. fuse ayarlarından neyi değiştirmeliyim acaba  yanlışsa ?

Mr.Java

OSC=XT
Watchdog=off
PWT=OFF
MCLR=ON
Brown-out=on
Brown-out reset voltage=4.5V
Debug=off
CCP2 Multiplex=CCP2 on RC1
Flash code protected=off
fail-safe clock=ON
Internal external switch=ON
Brown-out reset software=ON

denermisin bu şekilde

lazut08

#9
Hocam malesef o şekildede olmadı yine teşekkür ederim bilgiler için.

mesaj birleştirme:: 28 Aralık 2013, 00:50:54

Arkadaşlar sonunda oldu galiba ilginç bi şekilde programı chip selector kısmından 16f777 yerine 16f767 ye atarmış gibi  attım.sorunsuz bi şekilde programladı.Şimdi çalışıyor.Daha iyi bi programlayıcı şart galiba.Herkese tekrar teşekkür ederim bilgiler için.