kare dalga üretip lcd gösterme

Başlatan Oracle1, 16 Nisan 2016, 16:04:11

Oracle1

merhaba kare dalga üretip LCD göstermeye çalıştım ama olmadı yardımcı olurmusunuz.


'OPTION_REG =%00111111
PORTA=0:TRISA=%00000001
PORTB=0:TRISB=%00000000
PORTC=0:TRISC=%00000000
PORTD=0:TRISD=%00000000
ADCON1= %10001110 '
T2CON = %00000101
PR2=249
'-----------------------------------------------------------------
@ DEVICE PIC16F877                                                   
@ DEVICE PIC16F877, WDT_OFF             
@ DEVICE PIC16F877, PWRT_OFF           
@ DEVICE PIC16F877, PROTECT_OFF       
@ DEVICE PIC16F877, XT_OSC             
'-----------------------------------------------------------------
DEFINE LCD_DREG     PORTB 'LCD DATA BACAKLARI PORTB'YE BAGLI
DEFINE LCD_DBIT     4     'LCD DATA BITLERI HANGİ BITTEN BASLIYOR
DEFINE LCD_EREG     PORTB 'LCD ENABLE BACAGI HANGI PORTA BAGLI
DEFINE LCD_EBIT     3     'LCD ENABLE BITI HANGI PORTA BAGLI
DEFINE LCD_RSREG    PORTB 'LCD RS BACAGI HANGI PORTA BAGLI
DEFINE LCD_RSBIT    2     'LCD RS BACAGI HANGI BITE BAGLI
DEFINE LCD_BITS     4     'LCD 4 BIT BAGLI
DEFINE LCD_LINES    2     'LCD KAC SIRADAN OLUSUYOR

'**************** ADC chanel setting  ************************   
DEFINE ADC_BITS 10    ' ADCIN çözünürlük  (Bits)
DEFINE ADC_CLOCK 1    ' ADC clock kaynağı  (Fosc/8)
DEFINE ADC_SAMPLEUS 3 ' ADC örnekleme zamanı (uSec)
'****************HPWM PRESETİNG*********************
DEFINE CCP1_REG   PORTC    'Hpwm 1 pin port
DEFINE CCP1_BIT     2      'Hpwm 1 pin bit
DEFINE CCP2_REG   PORTC    'Hpwm 2 pin port
DEFINE CCP2_BIT     1      'Hpwm 2 pin bit
'******************* DEĞİŞKENLER  ********************
HAM var word
X   VAR WORD
DUTY VAR BYTE   
'---------------------------------------------------------------------------

CCP1CON.2=1
CCP1CON.3=1

BASLA:
      DUTY=50
      GOSUB POTOKU
      LCDOUT $FE,$80,"HAM ",#HAM,"  2",#X
      LCDOUT $FE,$C0,"2 ",#DUTY
     
     
      GOTO BASLA
     
POTOKU:
       ADCIN 0,HAM
       PR2=((1024-HAM)*/5625)/100+24
       
       X=(PR2+1)* DUTY /25
       CCP1CON.4=X.0
       CCP1CON.5=X.1
       CCPR1L=x>>2
       RETURN

F®T

Progda 16f877 kullanmışsın isiste 16f876 kullanmışsın.Sorunu tam anlayamadım.Ne yapmak istiyorsun?Problem nedir?
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ete

Olmayan nedir?.
Programda işlemci 16F876 olarak gözüküyor ama ekranda 16F877 var.
Simulasyonda işlemci frekansı 8Mhz seçilmiş ama programda XT OSC kullanılmışki bu en fazla 4Mhz olduğu anlamına gelir.
Ayrıca DEFINE OSC4 şeklinde işlemciye programın hangi frekansta çalışacağı bildirilmemiş. Buu bildirmezise rastgele bir frekans esas alınır.

LCD de bir değer gösterirken  #Değişken şeklinde gösterim yaparsan sayılarbüyüyüp küçüldükçe hane değişir ve ekranda gördüklerin seni yanıltır.
Değişken=10 iken ekranda 10 görürsün. Değişken=8 iken bu sefer 80 görürsün çünki bir hane geriye gelir ve 10 dan kalan sıfır silinmez. Bunu önlemek için daima #Değişken,"  " şeklinde sonrasına 2 adet boşluk ekleyin böylece eski değerleri bu silerek doğru değer görüntülenir.

Ete

Oracle1

#3
özür dilerekten yeniden ekliyorum çıkışta üretilen pwm sinayalıni LCD göstermek istiyorum yani çıkış frekansını ne gibi bir ekleme yapmam gerekiyor

F®T

http://etepic.com/index.php?topic=635.0

çok basit bir satır ile iş halloldu.Biraz daha araştırma yapmak lazım.

'****************************************************************
'*  Name    : HPWM-2.BAS                                        *
'*  Author  : [ETE-EROLEC-ERO]                                  *
'*  Notice  : Copyright (c) 2007 [E.T.E]                        *
'*          : All Rights Reserved                               *
'*  Date    : 16.04.2007                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************

'OPTION_REG =%00111111
PORTA=0:TRISA=%00000001
PORTB=0:TRISB=%00000000
PORTC=0:TRISC=%00000000
ADCON1= %10001110 '
T2CON = %00000101
PR2=249
'-----------------------------------------------------------------
         
'-----------------------------------------------------------------
DEFINE LCD_DREG     PORTB 'LCD DATA BACAKLARI PORTB'YE BAGLI
DEFINE LCD_DBIT     4     'LCD DATA BITLERI HANGİ BITTEN BASLIYOR
DEFINE LCD_EREG     PORTB 'LCD ENABLE BACAGI HANGI PORTA BAGLI
DEFINE LCD_EBIT     3     'LCD ENABLE BITI HANGI PORTA BAGLI
DEFINE LCD_RSREG    PORTB 'LCD RS BACAGI HANGI PORTA BAGLI
DEFINE LCD_RSBIT    2     'LCD RS BACAGI HANGI BITE BAGLI
DEFINE LCD_BITS     4     'LCD 4 BIT BAGLI
DEFINE LCD_LINES    2     'LCD KAC SIRADAN OLUSUYOR

DEFINE OSC4
'**************** ADC chanel setting  ************************   
DEFINE ADC_BITS 10    ' ADCIN çözünürlük  (Bits)
DEFINE ADC_CLOCK 1    ' ADC clock kaynağı  (Fosc/8)
DEFINE ADC_SAMPLEUS 3 ' ADC örnekleme zamanı (uSec)
'****************HPWM PRESETİNG*********************
DEFINE CCP1_REG   PORTC    'Hpwm 1 pin port
DEFINE CCP1_BIT     2      'Hpwm 1 pin bit
DEFINE CCP2_REG   PORTC    'Hpwm 2 pin port
DEFINE CCP2_BIT     1      'Hpwm 2 pin bit
'******************* DEĞİŞKENLER  ********************
HAM var word
X   VAR WORD
DUTY VAR BYTE
freq   VAR WORD   
'---------------------------------------------------------------------------

CCP1CON.2=1
CCP1CON.3=1

BASLA:
      DUTY=50
      GOSUB POTOKU
      LCDOUT $FE,$80,"HAM ",#HAM," F ",#freq,"  "
      LCDOUT $FE,$C0,"2 ",#DUTY
     
     
      GOTO BASLA
     
POTOKU:
       ADCIN 0,HAM
       PR2=((1024-HAM)*/5625)/100+24
       
       X=(PR2+1)* DUTY /25
       CCP1CON.4=X.0
       CCP1CON.5=X.1
       CCPR1L=x>>2
       Freq=62500/(PR2+1)
       freq=freq*4
       RETURN
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Oracle1

#5
teşekkürler ferit peki bu frekans aralığını 1khz ile 50khz arası yapabilirmiyiz

F®T

vermiş olduğum konuyu iyi okuyup anlamaya çalışırsan çözersin.olup olmayacağını?
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Oracle1

tamam okudum frekasn okuma mantığını anladım çıkış frekansını 1khz ile 10 khz bir çıkış alıyorum bunu 1khz ile 50khz arası yapabilirmiyim

F®T

Burdan hesaplayabilirsin.Neyin neyi etkilediği çok güzel görünüyor.

http://eng-serve.com/pic/pic_pwm.html
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Oracle1

#9
ETE hocam bu kodda bir sorun var çözemedim tam olarak düzgün çalışmıyor yadımcı olurmsusun
ra1 portuna bağlı pot ile kontrol edilen ccp2 kanalı tam olarak bir çıkış alamadım bir sıkıntı var ama çözemedim tam olarak



'OPTION_REG =%00111111
PORTA=0:TRISA=%00000011
PORTB=0:TRISB=%00000000
PORTC=0:TRISC=%00000000
TRISA=255
ADCON1= %10001110 '
T2CON = %00000101
PR2=249
'-----------------------------------------------------------------
         
'-----------------------------------------------------------------
DEFINE LCD_DREG     PORTB 'LCD DATA BACAKLARI PORTB'YE BAGLI
DEFINE LCD_DBIT     4     'LCD DATA BITLERI HANGİ BITTEN BASLIYOR
DEFINE LCD_EREG     PORTB 'LCD ENABLE BACAGI HANGI PORTA BAGLI
DEFINE LCD_EBIT     3     'LCD ENABLE BITI HANGI PORTA BAGLI
DEFINE LCD_RSREG    PORTB 'LCD RS BACAGI HANGI PORTA BAGLI
DEFINE LCD_RSBIT    2     'LCD RS BACAGI HANGI BITE BAGLI
DEFINE LCD_BITS     4     'LCD 4 BIT BAGLI
DEFINE LCD_LINES    2     'LCD KAC SIRADAN OLUSUYOR

DEFINE OSC4
'**************** ADC chanel setting  ************************   
DEFINE ADC_BITS 10    ' ADCIN çözünürlük  (Bits)
DEFINE ADC_CLOCK 3    ' ADC clock kaynağı  (Fosc/8)
DEFINE ADC_SAMPLEUS 20 ' ADC örnekleme zamanı (uSec)
'****************HPWM PRESETİNG*********************
DEFINE CCP1_REG   PORTC    'Hpwm 1 pin port
DEFINE CCP1_BIT     3      'Hpwm 1 pin bit

DEFINE CCP1_REG PORTC        'HPWM
DEFINE CCP1_BIT   2          'CCP1 PİNİ PORTC.2
'******************* DEĞİŞKENLER  ********************
HAM var word
X   VAR WORD
DUTY VAR BYTE
freq   VAR WORD
ADC1 VAR WORD
DUTY2 VAR WORD
ADCON1=%10000010        '10 BİT SONUÇ ALMAK İÇİN   
'---------------------------------------------------------------------------

CCP1CON.2=1
CCP1CON.3=1

BASLA:
      DUTY=50
      GOSUB POTOKU
      LCDOUT $FE,$80,"HAM %",#HAM/10-02," F ",#freq,"  "
      LCDOUT $FE,$C0,"2 ",#DUTY
     
     
     
      ADCIN 1,ADC1
      DUTY2=ADC1/4
      HPWM 1,DUTY2,1000   
      GOTO BASLA
     
POTOKU:
       ADCIN 0,HAM
       PR2=((1024-HAM)*/5625)/100+24
       
       X=(PR2+1)* DUTY /25
       CCP1CON.4=X.0
       CCP1CON.5=X.1
       CCPR1L=x>>2
       Freq=62500/(PR2+1)
       freq=freq*4
       RETURN



ete

Ben bakıyorum tam olarak çıkış veriyor Ne demek tam olarak çıkış alamadım anlamıyorum doğrusu.
Daha nasıl çıkacak bu resmen oradan kare dalga çıkıyor. Acaba başka bir şey söylemeye çalışıyorsun da ben mi anlamıyorum?
Yada senmi anlatamıyorsun. 
Tam olarak çıkış alamadım lafı benim için somut bir bilgi değil. Üstelik ben çıkışı görüyorsam hiç değil. Başka bir beklentin var ama nedir onuda ben bilmiyorum.

Ete

Oracle1

Yani hocam stabil bir çıkış alamadım iki ccp portunu birden kullanmaya başlayınca oldu aceba eksik bir şey mi var

ete

iki kanal HPWM çıkışı olan pic lerde frekans iki kanal içinde aynıdır. Farklı frekanslar alamazsın. Frekans aynı ancak duty değerleri farklı olabilir. Belkide sorunun budur.

Ete

F®T

Simülasyondanmı bahsediyorsun.
Alıntı yapılan: Oracle1 - 16 Nisan 2016, 20:56:20
Yani hocam stabil bir çıkış alamadım iki ccp portunu birden kullanmaya başlayınca oldu aceba eksik bir şey mi var
Simülasyon yanıltır.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Powered by EzPortal