Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

Ccs zero crossing soru....

Başlatan vardal57, 25 Kasım 2018, 14:34:13

vardal57

Arkadaşlar merhabalar
Aşağıda zero crossing ile portb.0 pininden giriş yaparak e0 pini ile triyaki tetikliyorum fakat şu tarz bir ihtiyacım var e1 pininden duty seviyesinin e0 a göre daha ilerde olmasını ıstıyorum mesela
E0 %20 açarken E1 in %40 Açmasını ıstıyorum bunu nasıl yapabilirim sizce ?

#include <18f452.h>
#device ADC=10
#FUSES HS
#FUSES NOLVP                    
#FUSES NOPROTECT
#FUSES NOWDT
#FUSES OSCSEN

#use   delay(clock=20000000) 
 


//////////////////////////ADC VE PWM DEĞİŞKENLER/////////////////
unsigned long trigger_time = 16550;
 
 


void main()
{
setup_adc(adc_clock_div_32);   // ADC clock frekansı fosc/32 
setup_adc_ports(AN0_AN1_AN2_AN3_AN4);       //ayarlar
ext_int_edge( H_TO_L );
enable_interrupts(INT_EXT);
enable_interrupts(INT_TIMER1);
setup_timer_1 ( T1_DISABLED );
disable_interrupts(GLOBAL);

set_tris_a(0b00001111);
set_tris_b(0b00000001);
set_tris_c(0b00000000);
set_tris_d(0b00000000);
set_tris_e(0b000);
 
 
 


calisma:
enable_interrupts(INT_EXT);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL); 
 
   
goto calisma;
 
}







#INT_TIMER1
void trigger_pulse()
{
output_high(pin_e0);
}
// E1 Pinini devreye alıp ve daha ilerde olmasını ıstıyorum ... _?
#INT_EXT
void ext_isr()
{
output_low(pin_e0);
if(input(PIN_B0)==1 )
{
ext_int_edge( H_TO_L );    
set_timer1(trigger_time); 
setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
}
else
{
ext_int_edge( L_TO_H );  
set_timer1(trigger_time);  
setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
}
}

fide

Bir timer tanımla.

100mikrosaniyede bir kesme oluşturun.

Bu kesme saniyede 100 defa oluşur. Eğer bu kesme içindeki sayaç değerini  zero crossing de temizlersin saniyeyi eşit bir şekilde 100'e bölersin.
Bunu yaptıktan sonra kesme içindeki sayaç 20 iken istediğin bir pini, 40 iken başka bir pini set edebilirsin.
Ben dimmer devresinde bu şekilde kullanıyorum.

http://fidenetgaraj.blogspot.com/2018/07/analog-ve-dijital-dimmerleri-inceleyelim.html?m=0

İnceleyebilirsin
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

vardal57

Sayın fide cevap için teşekkür ederim
Şu tarz bır sorun var bu sistem trifaze timer ların hepsi dolu timer1 r fazı timer0 s fazı timer3 t fazı için çalışıyor ve 3 dış kesmede açık