CCS PCWH 3.184

Başlatan ahmetu, 01 Mart 2004, 00:47:45

ahmetu

3.188 iyi gibi duruyor bende onu kullanıyorum birde şu 3.202 yi bulabilirsek iyi olacak, olacak ama nasıl dur bakalım bir hayırsever çıkar inşallah :D

Erol YILMAZ

Evet 3.201 daha once yaptigim bir programi derlemedi.
Ben de 3.187 ye geri dondum. Bu ara kafalari biraz karisik heralde...

ahmetu

sende 3.201 mi var? bir yerlere upload edersen sevinirim, derleme sorunu için #ORG 5 yada #ORG 7 direktiflerini bir denermisin sanırım işini görür.

Erol YILMAZ

3.200 yerine 3.201 yazmisim kusura bakma.
Kaynak : Sonsivri->Byka

http://www.ccsinfo.com/versions.shtml   3.201 hicbir zaman uretilmedi !

Heralde #OPT 5 demek istedin. Ama yine de olmuyor.
ADC ayarlari ile ilgili bir problem veriyor 3.200 versiyonu.
#include <12F675.h>
#DEVICE ADC=10
#use  delay(clock=4000000,restart_wdt)
#fuses   INTRC_IO,NOMCLR,noWDT,NOCPD,NOPROTECT,PUT,BROWNOUT
#ROM 0x3ff = {0x349C}
//*********************** VARIABLES ********************************************

int durum=0;
unsigned int interrupt_timer=0;
unsigned long int ad_value=0;
unsigned long int ad_value_1=0;
unsigned long int ad_value_2=0;
unsigned long int ad_value_3=0;
unsigned long int ad_value_4=0;
unsigned long int ad_value_5=0;
unsigned long int sn_sayici=0;
unsigned long int tepe_gerilim=0;
unsigned int i;

//******************************************************************************
#define LEDLER    PIN_A2
#define BUTON     PIN_A3
#define MOSFET    PIN_A4
#define SHUTDOWN  PIN_A5

#define kyak   1
#define yyak   2
#define sondur 0

#define BOSTABEKLE      0
#define PILBOSALTILIYOR 2
#define PILDOLDURULUYOR 3
#define PILDOLU         4

//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
void Led(int gelen);
int1 ButonKontrol();
void StandartGecikme();
void Led_PilYok();
void Led_ButonlaCikis();
int1 lm35_okuma();
int1 DeltaV();

//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

#INT_RTCC
interrupt_service()
{
   interrupt_timer++;
   if(interrupt_timer==245)
   {
      interrupt_timer=0;
      sn_sayici++;
   }

   if(durum==PILBOSALTILIYOR)
   {
      if((interrupt_timer>0&&interrupt_timer<32)||(interrupt_timer>81&&interrupt_timer<112)||(interrupt_timer>161&&interrupt_timer<193))  Led(kyak);
      else Led(sondur);
   }

   if(durum==PILDOLDURULUYOR)
   {
      if((interrupt_timer>0&&interrupt_timer<32)||(interrupt_timer>81&&interrupt_timer<112)||(interrupt_timer>161&&interrupt_timer<193))  Led(yyak);
      else Led(sondur);
   }

   if(durum==PILDOLU)
   {
      if((interrupt_timer>0&&interrupt_timer<120))  Led(yyak);
      else Led(sondur);
   }

}

//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&


void led(int gelen)
{
   if(gelen==yyak)   output_high(LEDLER);
   if(gelen==kyak)   output_low(LEDLER);
   if(gelen==sondur) input(LEDLER);
}

int1 ButonKontrol()
{
   if(input(BUTON)==0)  return 1;   // tusa basildi ise 1 dondur
   else                 return 0;   // basilmadi ise 0
}

void StandartGecikme()
{
   delay_ms(50);
}

void Led_PilYok()
{
durum=BOSTABEKLE;
for(i=0;i<10;i++)     // pil yok ise 5 kere yak sondur.
   {
      Led(kyak);  delay_ms(200); Led(sondur);  delay_ms(400);
   }
}

void Led_ButonlaCikis()
{
durum=BOSTABEKLE;
for(i=0;i<10;i++)     // islemlerden cikildi ise 10 kere calkala
   {
      Led(kyak);  delay_ms(100);    Led(yyak);  delay_ms(100);
   }
Led(sondur);
}

int1 lm35_okuma()
{
set_adc_channel(1);
ad_value=read_adc();
if(ad_value>=90)  return 1;      // 45 C den buyuk ise
else return 0;                   // kucuk ise
}

int1 DeltaV()
{
   set_adc_channel(0);

   delay_ms(3);      ad_value_1=read_adc();     // random read
   delay_ms(8);      ad_value_2=read_adc();
   delay_ms(15);     ad_value_3=read_adc();
   delay_ms(8);      ad_value_4=read_adc();
   delay_ms(15);     ad_value_5=read_adc();

   ad_value = ad_value_1;                          // ilk deger atamasi
   if(ad_value_2<ad_value)  ad_value=ad_value_2;   // karsilastirma
   if(ad_value_3<ad_value)  ad_value=ad_value_3;   // karsilastirma
   if(ad_value_4<ad_value)  ad_value=ad_value_4;   // karsilastirma
   if(ad_value_5<ad_value)  ad_value=ad_value_5;   // karsilastirma

   if(ad_value > tepe_gerilim)   tepe_gerilim=ad_value;

// 6 pil 20 mV   120 mV yapar o da 25 sayisina denk gelir. 5 te benden / 3


   if( ad_value < (tepe_gerilim-13) )     return 1;
   else                                   return 0;


}

void main()
{
//((((((((((((((((((((((((((((((((((((((((((((((((((((((( initialize (((((((((((

	SETUP_COUNTERS(RTCC_INTERNAL,RTCC_DIV_16);			// 4000000 / 4 * 256 * 16  =  244 pals/sn
   SETUP_TIMER_1(T1_DISABLED);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_adc_ports(AN0_ANALOG || AN1_ANALOG);   // pil gerilimi, lm35

   enable_interrupts(INT_RTCC);
   enable_interrupts(GLOBAL);
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
output_high(SHUTDOWN);  // SMPS i kapat
StandartGecikme();
StandartGecikme();

   for(i=0;i<5;i++)
   {
      led(kyak);  delay_ms(70);  led(sondur);   delay_ms(500);
      led(yyak);  delay_ms(70);  led(sondur);   delay_ms(500);
   }

START:

output_high(SHUTDOWN);  // SMPS i kapat
StandartGecikme();
tepe_gerilim=0;

//-----------------------------------------------------  Buton bekleme bolumu
//-----------------------------------------------------
while(ButonKontrol()==0);  // basmayi bekle
StandartGecikme();
while(ButonKontrol()==1);  // birakmayi bekle
StandartGecikme();

//-----------------------------------------------------  Pil var mi? bolumu
//-----------------------------------------------------

//set_adc_channel(0);
//ad_value = read_adc();

//if(ad_value<273)  // (4 Volt / 3) / 5 * 1024 = 273
//{
//   output_high(SHUTDOWN);  // SMPS i kapat
//   durum = BOSTABEKLE;

//   Led_PilYok();
//   goto START;
//}

//-----------------------------------------------------  Pil desarj bolumu
//-----------------------------------------------------

durum=PILBOSALTILIYOR;

output_high(SHUTDOWN);  // SMPS i kapat
StandartGecikme();
output_high(MOSFET);

delay_ms(1000);      // ampullerin direnci normale gelsin

DESARJ:

if(ButonKontrol()==1)
{
   output_high(SHUTDOWN);  // SMPS'i kapat
   output_low(MOSFET);     // MOSFET'i kapat

   durum=BOSTABEKLE;

   while(ButonKontrol()==1);
   StandartGecikme();

   Led_ButonlaCikis();
   goto START;
}

delay_ms(1);

set_adc_channel(0);
ad_value=read_adc();
if(ad_value>355)  goto DESARJ;      // (5.2 Volt / 3) / 5 * 1024 = 340, 5V'tan buyuk ise

//-----------------------------------------------------  Pil desarjda iken cikartilirsa
durum=BOSTABEKLE;
delay_ms(1000);

set_adc_channel(0);
ad_value=read_adc();
if(ad_value<=20)
{
   output_high(SHUTDOWN);  // SMPS'i kapat
   output_low(MOSFET);     // MOSFET'i kapat
   Led_ButonlaCikis(); goto START;
}

//-----------------------------------------------------  Pil sarj bolumu
//-----------------------------------------------------
durum=PILDOLDURULUYOR;
output_low(MOSFET);     // bosaltmayi bitir
output_high(SHUTDOWN);  // SMPS i kapat
StandartGecikme();

sn_sayici=0;            // ilk 6 dk. boyunca -dv/dt kontrol edilmeyecek.
interrupt_timer=0;

output_low(SHUTDOWN);   // smps'i ac
delay_ms(2000);

SARJ:

if(ButonKontrol()==1)
{  output_high(SHUTDOWN);  // SMPS'i kapat
   output_low(MOSFET);     // MOSFET'i kapat
   Led_ButonlaCikis();
   goto START;
}

if(sn_sayici<360)    goto  SARJ;    // ilk 6 dk da dususler onemsenmeyecek

if(sn_sayici>500)    sn_sayici=500;    // tasmayi engellemek icin

delay_ms(300);    // sistemi 300 mS de 1 kere kontrol edecek

if(lm35_okuma()==1 || DeltaV()==1)       // sarji bitir.
{

delay_ms(100); if(DeltaV()==0)  goto SARJ;      // parazit etkilerden kurtulmak icin
delay_ms(200); if(DeltaV()==0)  goto SARJ;
delay_ms(300); if(DeltaV()==0)  goto SARJ;


   output_high(SHUTDOWN);  // SMPS i kapat
   output_low(MOSFET);     // bosaltmayi bitir
   durum=PILDOLU;          // led ler pil dolu sinyali versin

   while(ButonKontrol()==0);  // butona basincaya kadar bekle
   StandartGecikme();         // biraz gecikme

   Led(sondur);
   durum=BOSTABEKLE;       // ledleri bosa al
   goto START;             //
}
else goto SARJ;
}

ahmetu

:cry:  bir an için sevinmiştim, haklısın #OPT demek istiyordum, kolay gelsin.

Erol YILMAZ

Nereden Bulacaz bunu?
Sonsivri de kapandi...
Alıntı YapA new release of the CCS C compiler for PICmicro(r) microcontrollers
has been released. The new version is: 3.203

Recent changes include:
3.203  Floating point multiply for PIC18 is now much faster
3.203  A bug in 3.202 accessing bit fields in constant structures is
fixed
3.203  Some optimization bugs including one involving & is fixed