PİC16F88 İLE EEPROM KAYIT VE PWM'DEN ANALOG ÇIKIŞ

Başlatan anti_cheist, 19 Şubat 2014, 22:32:01

anti_cheist

arkadaşlar merhaba,

16f88 mikrodenetleyicisinin analog girişindeki belli bir süre sonraki voltaj değerini hafızaya alıp pic yeniden enerjilenince pwm çıkışından bunu çıkışa yansıtmak istiyorum.

#include <16F88.h>
#device adc=10

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES RC                       //Resistor/Capacitor Osc with CLKOUT
#FUSES NOPUT                    //No Power Up Timer
#FUSES MCLR                     //Master Clear pin enabled
#FUSES BROWNOUT                 //Reset when brownout detected
#FUSES LVP                      //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOPROTECT                //Code not protected from reading
#FUSES FCMEN                    //Fail-safe clock monitor enabled
#FUSES IESO                     //Internal External Switch Over mode enabled

#use delay(clock=8000000)


int i=0;
unsigned long int dijital;
float a;


#int_timer1
void timer1_kesme()
{
set_timer1(57724);
i=0;
i++;

if(i==5)
{
a=read_eeprom(1);
}
}





void main()
{

    setup_adc_ports(ALL_ANALOG);
    setup_adc(ADC_CLOCK_DIV_32);
    set_adc_channel(0);
    delay_us(50); //muhakkak verilmeli

     dijital=read_adc();
     a=0.0048828125*dijital;

     setup_spi(FALSE);
     setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

     setup_timer_1(RTCC_INTERNAL|RTCC_DIV_256);
     set_timer1(57724);

     set_tris_b(0b11011111);// pin_B2 Pwm çıkışı olarak ayarlandı.
     set_tris_a(0b11111111); //pin_A0 giriş olarak alındı.

     setup_comparator(NC_NC_NC_NC);
     setup_vref(FALSE);
     setup_oscillator(False);


     setup_timer_2(T2_DIV_BY_16,255,2);
     setup_ccp1(CCP_PWM);

    enable_interrupts(INT_TIMER0);
    enable_interrupts(INT_TIMER1);
    enable_interrupts(GLOBAL);


  // TODO: USER CODE!!
while(1)
{
write_eeprom(1,a); // EEPROM'un 0x01 adresine degişken yazılıyor


}


}

esas olarak da bir anahtar vasıtayla istenildiği zaman analog giriş verilince belli bir süre içerisinde örn.20 s boyunca bunu pwm pininden çıkışa yansıtmak.Anahtarın diğer konumunda da giriş analog değerini belli bir süre sonra hafızaya alıp pic resetlenince bu değeri direkt olarak çıkışa yansıtmak.

yardımlarınızı bekliyorum arkadaşlar..

anti_cheist


xoom

void timer1_kesme()
{
set_timer1(57724);
i=0;
i++;

if(i==5)
{
a=read_eeprom(1);
}
}

İlk gözüme çarpan i hiçbir zaman 5 olmaz..