Ebubekir9742
Üye
normalde sadece okuduğum analog bilgi ile dc motor sürüyorum sorun yok fakat timer 0 kesmesini kullanmak istediğimde ne ccp1 çalışıyor nede timer 0 problem nerede acaba ?
Kod:
#include <PotMotorCNTRL.h>
#include <stdio.h>
#include <lcd.c>
#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#priority timer2,timer0
unsigned long potdgr,motorcks;
int led_dgr;
#int_timer0
void timer0_kesme(){
if(led_dgr>0 && led_dgr<=10){output_high(pin_b0);}
else if(led_dgr>10 && led_dgr<=20){output_high(pin_b1);}
else if(led_dgr>20 && led_dgr<=30){output_high(pin_b2);}
else if(led_dgr>30 && led_dgr<=40){output_high(pin_b3);}
else if(led_dgr>40 && led_dgr<=50){output_high(pin_b4);}
else if(led_dgr>50 && led_dgr<=60){output_high(pin_b5);}
else if(led_dgr>60 && led_dgr<=70){output_high(pin_b6);}
else if(led_dgr>70 && led_dgr<=80){output_high(pin_b7);}
else break;}
void main()
{ set_tris_c(0x00);
set_tris_a(0xFF);
set_tris_b(0x00);
output_a(0x00);
output_b(0x00);
output_c(0x00);
setup_adc_ports(AN0_AN1_AN2_AN3_AN4);
setup_adc(ADC_CLOCK_INTERNAL);
enable_interrupts(INT_TIMER2);
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
lcd_init();
set_adc_channel (0);
setup_timer_2(T2_DIV_BY_16,1023,1);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2|RTCC_8_BIT);
set_timer0(0);
setup_ccp1(CCP_PWM);
while(TRUE)
{
printf(lcd_putc"\f%lu\n%lu %d",potdgr,motorcks,led_dgr);
delay_ms(250);
potdgr=read_adc();
motorcks=(potdgr/64.061583577);
led_dgr=(potdgr/819.1875);
set_pwm1_duty(motorcks);
}
}