isoment01
Üye
- Katılım
- 26 Haz 2016
- Mesajlar
- 197
- Puanları
- 1
- Yaş
- 32
Arkadaşlar merhaba, serial haberleşmede çok sıkıntı yaşıyorum bana yardımcı olabilir misiniz? 15 gündür bir motoru pc den süremedim.
normalde pwm ya da timer kurarak sinyal üretip motorumu sürdüm fakat buna rs232 yi eklediğimde sıkıntılar yaşıyorum kodlarımı paylaşacağım fakat öncesinde yaşadığım sıkıntıları sıralayayım:
1) printf le yazdırdıklarımın hiç birini serial monitörde göremiyorum, bağlantıyı kuruyorum pice kodları atıyorum o sırada baudrate vs vs ayarlarını yapıyorum serial portun fakat hiç bir şekilde yazdırdıklarım görünmüyor, basit bir led yakma yaptım r ye basınca led yanıyor felan bu calışıyor yanı bilgi gidiyor fakat ekranda hiç birşey göremiyorum.
2) pwm ile kurduğum yazılımda pice kodu gömer gömmez pwm sinyalim çalışıyor bekleme felan yok bunu da bir türlü çözemedim bunu yapabilirsem timer ile kurduğum esas koduma geçiş yapabilirim ama burada takılı kaldım.
pwm için yaptığım kodlar: ( pwm saydırma yapmadım burda kodu görecek arkadaşlar uyarabilir çalışması için basit bi çalışma bu rs232 siz calısıyor bu kodlar)
bu da basit led aç-kapa kodlarım.
arkadaşlar bana yardım edin neden böyle oluyor çözmem lazım şu işi .
normalde pwm ya da timer kurarak sinyal üretip motorumu sürdüm fakat buna rs232 yi eklediğimde sıkıntılar yaşıyorum kodlarımı paylaşacağım fakat öncesinde yaşadığım sıkıntıları sıralayayım:
1) printf le yazdırdıklarımın hiç birini serial monitörde göremiyorum, bağlantıyı kuruyorum pice kodları atıyorum o sırada baudrate vs vs ayarlarını yapıyorum serial portun fakat hiç bir şekilde yazdırdıklarım görünmüyor, basit bir led yakma yaptım r ye basınca led yanıyor felan bu calışıyor yanı bilgi gidiyor fakat ekranda hiç birşey göremiyorum.
2) pwm ile kurduğum yazılımda pice kodu gömer gömmez pwm sinyalim çalışıyor bekleme felan yok bunu da bir türlü çözemedim bunu yapabilirsem timer ile kurduğum esas koduma geçiş yapabilirim ama burada takılı kaldım.
pwm için yaptığım kodlar: ( pwm saydırma yapmadım burda kodu görecek arkadaşlar uyarabilir çalışması için basit bi çalışma bu rs232 siz calısıyor bu kodlar)
Kod:
#device PIC18F4680
#include <18f4680.h>
#fuses xt,nowdt,noprotect, nobrownout, nolvp, noput, nowrt, nocpd
#use delay (clock=4000000)
#include <stdio.h>
unsigned int16 sayac = 0, hedef = 0;
#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1,stream=deneme)
char islem="";
void main()
{
setup_psp(PSP_DISABLED);
setup_timer_1(T1_DISABLED);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_timer_2(T2_DIV_BY_16,155,1); //16,0 us overflow, 16,0 us interrupt
setup_ccp1(CCP_PWM);
set_tris_c(0x00);
output_c(0x00);
set_tris_b(0x00);
output_b(0x00);
while(1)
{
hedef=20; //400*8
sayac=0;
output_high(pin_b0);
delay_ms(3000);
output_low(pin_b0);
delay_ms(1000);
printf("\n\rYapmak istediginiz islemi seciniz>");
islem=getch();
putc(islem);
if(islem=="r" || islem=="R")
{
do
{
output_high(pin_c3);// motor aktif
delay_ms(100);
output_high(pin_c1);// motor yönü belirlendi
delay_us(50);
sayac++;
set_pwm1_duty((int16)1);
}while(sayac<=hedef);
hedef=20; //400*8
sayac=0;
do
{
output_high(pin_c3);// motor aktif
delay_ms(100);
output_low(pin_c1);// motor yönü belirlendi
delay_us(50);
sayac++;
set_pwm1_duty((int16)1);
}while(sayac<=hedef);
set_pwm1_duty((int16)0);
}
}
}
Kod:
#device PIC18F4680
#device icd=true
#include <18f4680.h>
#include <stdio.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000) // 4MHz kristal
#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1,stream=deneme)
// RS232 protokolü ayarları belirtiliyor
char islem="";
char durum = 0;
void main()
{
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF); // ADC birimi devre dışı
setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı
set_tris_b(0x00);
output_b(0x00); // c portu çıkışı başlangıçta sıfırlanıyor
/****************MENÜ**********************************/
printf("Hello world/r/n");
printf("\n************************************************");
printf("\n\r led kontrol ");
printf("\n\r************************************************");
printf("\n\n");
printf("\n\rIslem Seciniz:\n");
printf("\n\r------------------------------------------------");
printf("\n\r------------------------------------------------");
printf("\n\rYapmak istediginiz islemi seciniz>");
output_high(pin_b0);
delay_ms(1000);
output_low(pin_b0);
delay_ms(1000);
While(1)
{
islem=getchar();
putc(islem);
if (islem=="R" || islem=="r")
{
if (durum == 0)
{
printf(deneme,"\n\rlambalar yanıyor...");
durum = 1;
output_high(pin_b0);
delay_ms(250);
}
else
{
printf(deneme,"\n\rlambalar yanMIyor...");
durum = 0;
output_high(pin_b0);
delay_ms(500);
output_low(pin_b0);
delay_ms(250);
}
}
}
}