P10 panel sürmek

Başlatan gogoce, 20 Şubat 2021, 16:07:38

gogoce

Alıntı yapılan: aRci - 04 Nisan 2021, 18:43:35Ama ipin ucunu kaçırmayın dikkat edin sırf bu huyum yüzünden bir karta karar vermem 2 ay sürüyor. dikkat edin :)

Yanlış anlamayın benim tavsiyem rs232 ye ek olarak harici olarakda heberleşme modülü düşünmeniz yönünde olaracak. haberleşeme rs232 de dahil hepsi amacı aynı o sebeple kendinizi sınırlamamak gerek. Benim en çok tercih ettiğim ESp8266, buna ek olarak bluetooth da eklenebilir. grupta bir prohe görmüştüm bir pc programı idi local ağda birden çok panele yazılacak metni gönderen bir program idi konuyu hatırlamıyorum ama arayıp bulabilirsiniz program ne kadar hoş da olsa gerekli açık kodlar olmadığı için deneme yapamadım.

ama fikir olarak güzel bir metot proda panllere yazı göndermek harıcınde panele kapat panel saati güncelle vs özellikler vardı.

ben 16f ile deneme yapıyorum sanırım en fazla 4 panel sürebileceğimi düşünüyorum 18f4550 de var ancak onunla test yapmıyorum benim için 877 yeterli. kullandığınız denetleyici yi temin edersem onun ile çalışma yapacağım.

bir şey daha LONG değişkeni bende hata veriyor derlerken Bende picbasic kullanıyorum bunun için bir ayarmı var?
ETE hocam daha önce bir gönderide anlatmıştı bende ordan buldum
View menüsünden compile and program options a geliyorsun .  USE PBL ye tik attın mı tamamdır
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

gogoce

@ete hocam bu picin eusart ve tmr0 kesmeleri konusunda yardımcı olabilir misiniz? İşlemci frekansına göre usart baudrate hata oranı değişmekte.
 RS-232 operation using internal oscillator
- Auto-Wake-up on Break
- Auto-Baud Detect gibi bir açıklama mevcut . Bunları nasıl kullanabilirim yada kullanabiliriz?

sistemi geliştirip tmr0 ile kesme oluşturup paneli onunla taramayı beceremedim açıkçası. TMR0 biraz farklı işliyor bu işlemcide . auto baud detect de güzel bir özellik gibi duruyor. Nasıl çalıştığını merak ediyorum açıkçası
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

aRci

Merhaba,
Ben bu programı kullanırım yıllardır. içeriği çok yararlı ve size usart ayarları için kodları hazırlıyor dahi.
Bu eki görüntüleyemezsiniz.

ete

Benimde tavsiyem PicMultiCalc programcığını kullanman yönünde. Bende bütün ayarlamalarımı o program ile yaparım. Bir sürü hesap kitap işinden kurtarıyor. Üstelik Timer ayarlamalarından tutunda PWM ayarlamasına kadar her konuda yardımcı oluyor.
Auto Baud Dedect konusuna şimdiye kadar girmedim. Çok gerekli de olmadı. Normal USart ayarlarını verip işlerimi hallediyorum. Bu özellik zaten hiç bilinmeyen baud rate oranını bulmak değil mevcut ayarları gelen sinyale göre kalibre ederek doğru haberleşmeyi sağlamak şeklinde açıklanmış data sheet de yada benim ingilizcem ancak bu şekilde anlamama sebep oluyor. Açıklama dilide epeyce ağır detaylarını anlamakta zorlanıyorum. Bilen varsa açıklasın bende anlayayım.
Auto wake up özelliği işlemcinin uyku modundan Usart kesmesi aracılığı ile uyanmasını sağlayacak bir özellik. Normalde uyku modunda USART a gelen tüm Clk sinyalleri kesiliyor. Ancak outo wake up özelliğini aktif ederseniz uyandırma işi gerçekleiyor. Bunun için Baudcon registerinin WUE bitini set etmek yeterli oluyor. Ancak bu işlemi pic'i uykuya sokarken yapmalısınız. Zira yaptığınız zaman bazı RX/DT işlemleri iptal ediliyor.

Ete

aRci

Merhaba
Mevcut rakam tablosu sebebi ile kesme programı testi yapamadım 16f877 de bu sebeple rakam tablosunu sadeleştirdim. 18D46K20 pic 16F877 ile aynı pin kılıfına sahip ilk fırtta alıp bende bu entegre ile çalışmaya başlıyacam. kodlar aşşğıda Test Edebilirmisin.

Ben aslında p10 la geçen sene geridelik panodu adında çalışma yapmıştım ama bu sefer vakit ayırarak son hali önceden paylaştığım hale geldi ve daha fazla panel alıp deneme yapmak benim için gereksiz kalıyor. birazdaha harf ve rakam tablosu oluşturup bırakacağım artık.

aslında şu aralar RGB P10 la ilgileniyorum ona ayrı bir klonu açmak gerekiyor. formda ve diğer sayfalarda araştırdığım kadarı ile RGB paneler aslında 6 adet 8 er gruplu ve 2 bit adreslemeli bir yapısı var. data ucunun 6 adet olması ve tek Latch ve Clk pinini olmasından dolayı SPI kullanmak imkansız gibi en azından ben bir dökuman bulamadım bununla ilgili aslında doğru kelime bulamadım desem daha doğru olacak.

Bazı formlarda çıkış ve giriş pinleri birbirine bağlanarak data hattını 6 dan 3 e indiriyorlar. Giris Kırmızı1 hattın çıkış pinini giriş Kırmızı2 hattına bağlayarak panelin 2 farklı grubunu birbirine seri bağlanmış oluyor. yine 3 ayrı data çıkışına sahip olunması gerekiyor. bunun için bilfiğiniz bir donanım yada yöntem varmı.


'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2021 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 4.04.2021                                         *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************

asm
 __CONFIG    _CONFIG1H, _FOSC_HSPLL_1H & _FCMEN_OFF_1H & _IESO_ON_1H
 __CONFIG    _CONFIG2L, _PWRT_OFF_2L & _BOREN_OFF_2L 
 __CONFIG    _CONFIG2H, _WDTEN_OFF_2H 
 __CONFIG    _CONFIG3H, _MCLRE_ON_3H & _HFOFST_ON_3H & _LPT1OSC_OFF_3H & _PBADEN_OFF_3H & _CCP2MX_PORTC_3H 
 __CONFIG    _CONFIG4L, _STVREN_OFF_4L & _LVP_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L 
 __CONFIG    _CONFIG5L, _CP0_ON_5L & _CP1_ON_5L & _CP2_ON_5L & _CP3_ON_5L
 __CONFIG    _CONFIG5H, _CPB_ON_5H & _CPD_ON_5H 
 __CONFIG    _CONFIG6L, _WRT0_ON_6L & _WRT1_ON_6L & _WRT2_ON_6L & _WRT3_ON_6L
 __CONFIG    _CONFIG6H, _WRTB_ON_6H & _WRTC_ON_6H & _WRTD_ON_6H  
 __CONFIG    _CONFIG7L, _EBTR0_ON_7L & _EBTR1_ON_7L & _EBTR2_ON_7L & _EBTR3_ON_7L 
 __CONFIG    _CONFIG7H, _EBTRB_ON_7H
endasm
define OSC 64
'////////////////////portb - TMR - Genel Kesmeler///////////////////////////      
    Symbol GIE       = INTCON.7    'genel kesmeler aktif
    Symbol PEIE      = INTCON.6    'Çevresel kesmeler aktif
    Symbol IPEN      = RCON.7      'Oncelikler aç kapat
    Symbol TMR0E     = INTCON.5    'TMR0 Kesme 
    Symbol INT0      = INTCON.4    'RB0 Kesme Etkinleştir
    Symbol RBIE      = INTCON.3    'RB Değişim Kesme 
    Symbol TMR0IF    = INTCON.2    'TMR0 Taşma Bayrağı Ouyarak Sıfırlanmalı
    Symbol INT0IF    = INTCON.1    'INT0 harici Kesme Bayrağı Okutarak Sıfırla
    Symbol RBIF      = INTCON.0    'RB7-4 harici Kesme Bayrağı Okutarak Sıfırla
'///////////////////////////////////////////////////////////////////////////////
'///////////////////////////////////////////////////////////////////////////////
    Symbol TMR0ON    = T0CON.7    'TMR0 Etkinleştir = 1
    Symbol T08BIT    = T0CON.6    '8bit = 1 /16bit = 0 Zamanlayıcı Seç
    Symbol T0CS      = T0CON.5    'Saat Kaynağı T0CKI = 1 / CLKo = 0
    Symbol T0SE      = T0CON.4    'Kenar Seçme Yükselkten alta geçiş = 1
    Symbol PSA       = T0CON.3    'Ön yükleyici Ön ölçekleyiciyi atanmamış = 1  
    Symbol TOPS2     = T0CON.2    'bölme oranı
    Symbol TOPS1     = T0CON.1    'bölme oranı
    Symbol TOPS0     = T0CON.0    'bölme oranı
'///////////////////////////////////////////////////////////////////////////////
'///////////////////////////////////////////////////////////////////////////////
    T08BIT           = 1  '8bit = 1 /16bit = 0 Zamanlayıcı Seç
    T0CS             = 0  'Saat Kaynağı T0CKI = 1 / CLKo = 0
    T0SE             = 1  'Kenar Seçme Yükselkten alta geçiş = 1
    PSA              = 0  'Ön yükleyici Ön ölçekleyiciyi atanmamış = 1
    TOPS2= 1:TOPS1 = 1:TOPS0 = 1
    TMR0E            = 1  'TMR0 Kesme Açık
    TMR0ON           = 1  'TMR0 Etkinleştir = 1
'///////////////////////////////////////////////////////////////////////////////
'///////////////////////////////////////////////////////////////////////////////

    GIE             = 1  'Tüm kesmeler açık
    ON INTERRUPT GOTO KESME 'komut satırını ekle programa (BASLA satırından bir evvele koyabilirsin)
    
TRISA      = %00000000
TRISB      = %00000000
TRISC      = %00000000
TRISD      = %00000000
TRISE.0    = 0
TRISE.1    = 0
TRISE.2    = 0
TRISE.3    = 0

OSCCON     =%01110000 
OSCTUNE    =%01000000
P10_A      VAR PORTD.1  
P10_B      VAR PORTB.2 
CLK        VAR PORTC.3
DTA        VAR PORTC.5
LATCH      VAR PORTD.2
OE         VAR PORTD.3 
'Symbol Led1 = Portb.1
   
    SSPSTAT=%11000000
    SSPCON1 =%00100000
    pause 200
    porta=0
    portb=0
    portc=0
    portd=0
    porte=0
    
    A var byte [32]
    B var byte [32]
    C var byte [32]
    D var byte [32]
    
    
    x var byte
    Tara var byte
    bekle var Word
    SAYI VAR word
    S1 VAR BYTE
    S2 VAR BYTE
    S3 VAR BYTE
    S4 VAR BYTE
    S5 VAR BYTE
    S6 VAR BYTE
    S7 VAR BYTE
    S8 VAR BYTE
    Rakam Var byte
    Sutun Var byte
    
    FOR X=31 TO 0 STEP -1
    A[X]=255
    B[X]=255
    c[X]=255
    d[X]=255
    NEXT X

BASLA:

    For Sutun = 0 to 3
    Rakam = Sayi Dig Sutun
    
    GOSUB RAKAM_AL
    Next Sutun

goto basla

RAKAM_AL:
    S4 = 0 
    For s1 = 0 to 15     
    S2 = (Rakam * 16) + S1 
    S5 = (S1 / 4) + (Sutun  * 4)
    LookUp S2,[ 131,   1,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,   1, 131,_       '0
                199, 135,   7,  39, 103, 231, 231, 231, 231, 231, 231, 231, 231, 231,   1,   1,_       '1
                131,   1,  57,  57,  57, 249, 249, 249, 241, 227, 199, 143, 159,  63,   1,   1,_       '2
                131,   1,  57,  57, 185, 249, 227, 227, 251, 249, 249, 185,  57,  57,   1, 131,_       '3
                 57,  57,  57,  57,  57,  57,   1,   1, 249, 249, 249, 249, 249, 249, 249, 249,_       '4
                  1,   1,  57,  63,  63,  63,   1,   1, 241, 249, 249,  57,  57,   1,   1, 131,_       '5
                131,   1,  57,  63,  63,  63,   1,   1,  57,  57,  57,  57,  57,  57,  57, 131,_       '6
                  1,   1, 249, 241, 241, 231, 199, 207, 207, 207, 207, 207, 207, 207, 207, 207,_       '7
                131,  57,  57,  57,  57,  57,   1, 131,   1,  57,  57,  57,  57,  57,  57, 131,_       '8
                131,   1,  57,  57,  57,  57,   1, 131, 249, 249, 249, 249,  57,  57, 129, 131], S3    '9
    
    if S4 = 0 then A[S5] = S3
    if S4 = 1 then B[S5] = S3
    if S4 = 2 then C[S5] = S3
    if S4 = 3 then D[S5] = S3
    S4 = S4 + 1
    if S4 >= 4 then S4 = 0 
    next S1

Return

'///////////////////////////////////////////////////////////////////////////////   
'///////////////////////////////////////////////////////////////////////////////
DISABLE
Kesme:
GIE = 0
if TMR0IF = 1 then
    Bekle = Bekle + 1
    if Bekle >= 5 then
        Sayi = Sayi + 1 
        if Sayi >= 9999 then Sayi = 0  
        toggle Portb.1
        Bekle = 0 
    endif
        
        for Tara = 31 to 0 Step - 1
        SSPBUF=A[Tara]:PIR1.3=0
        WHILE PIR1.3=0
        WEND
        next Tara
        p10_a=0:p10_b=0
        LATCH=1:LATCH=0:OE=0
        OE=1: Pauseus 100:OE=0
        
        for Tara = 31 to 0 Step - 1
        SSPBUF=B[Tara]:PIR1.3=0
        WHILE PIR1.3=0
        wend
        next Tara
        p10_a=1:p10_b=0
        LATCH=1:LATCH=0:OE=0
        OE=1:  Pauseus 100:OE=0
     
        for Tara = 31 to 0 Step - 1
        SSPBUF=C[Tara]:PIR1.3=0
        WHILE PIR1.3=0
        wend
        next Tara
        p10_a=0:p10_b=1
        LATCH=1:LATCH=0:OE=0
        OE=1:  Pauseus 100:OE=0
        
        for Tara = 31 to 0 Step - 1
        SSPBUF=D[Tara]:PIR1.3=0
        WHILE PIR1.3=0
        wend
        next Tara
        p10_a=1:p10_b=1
        LATCH=1:LATCH=0:
        OE=1:  Pauseus 100:OE=0
    TMR0IF = 0
Endif

GIE = 1
Resume
enable

end


gogoce

Alıntı yapılan: ete - 06 Nisan 2021, 08:26:53Benimde tavsiyem PicMultiCalc programcığını kullanman yönünde. Bende bütün ayarlamalarımı o program ile yaparım. Bir sürü hesap kitap işinden kurtarıyor. Üstelik Timer ayarlamalarından tutunda PWM ayarlamasına kadar her konuda yardımcı oluyor.
Auto Baud Dedect konusuna şimdiye kadar girmedim. Çok gerekli de olmadı. Normal USart ayarlarını verip işlerimi hallediyorum. Bu özellik zaten hiç bilinmeyen baud rate oranını bulmak değil mevcut ayarları gelen sinyale göre kalibre ederek doğru haberleşmeyi sağlamak şeklinde açıklanmış data sheet de yada benim ingilizcem ancak bu şekilde anlamama sebep oluyor. Açıklama dilide epeyce ağır detaylarını anlamakta zorlanıyorum. Bilen varsa açıklasın bende anlayayım.
Auto wake up özelliği işlemcinin uyku modundan Usart kesmesi aracılığı ile uyanmasını sağlayacak bir özellik. Normalde uyku modunda USART a gelen tüm Clk sinyalleri kesiliyor. Ancak outo wake up özelliğini aktif ederseniz uyandırma işi gerçekleiyor. Bunun için Baudcon registerinin WUE bitini set etmek yeterli oluyor. Ancak bu işlemi pic'i uykuya sokarken yapmalısınız. Zira yaptığınız zaman bazı RX/DT işlemleri iptal ediliyor.

Ete

teşekkür ederim hocam
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

gogoce

Alıntı yapılan: aRci - 06 Nisan 2021, 20:41:01Merhaba
Mevcut rakam tablosu sebebi ile kesme programı testi yapamadım 16f877 de bu sebeple rakam tablosunu sadeleştirdim. 18D46K20 pic 16F877 ile aynı pin kılıfına sahip ilk fırtta alıp bende bu entegre ile çalışmaya başlıyacam. kodlar aşşğıda Test Edebilirmisin.

Ben aslında p10 la geçen sene geridelik panodu adında çalışma yapmıştım ama bu sefer vakit ayırarak son hali önceden paylaştığım hale geldi ve daha fazla panel alıp deneme yapmak benim için gereksiz kalıyor. birazdaha harf ve rakam tablosu oluşturup bırakacağım artık.

aslında şu aralar RGB P10 la ilgileniyorum ona ayrı bir klonu açmak gerekiyor. formda ve diğer sayfalarda araştırdığım kadarı ile RGB paneler aslında 6 adet 8 er gruplu ve 2 bit adreslemeli bir yapısı var. data ucunun 6 adet olması ve tek Latch ve Clk pinini olmasından dolayı SPI kullanmak imkansız gibi en azından ben bir dökuman bulamadım bununla ilgili aslında doğru kelime bulamadım desem daha doğru olacak.

Bazı formlarda çıkış ve giriş pinleri birbirine bağlanarak data hattını 6 dan 3 e indiriyorlar. Giris Kırmızı1 hattın çıkış pinini giriş Kırmızı2 hattına bağlayarak panelin 2 farklı grubunu birbirine seri bağlanmış oluyor. yine 3 ayrı data çıkışına sahip olunması gerekiyor. bunun için bilfiğiniz bir donanım yada yöntem varmı.


'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2021 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 4.04.2021                                         *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************

asm
 __CONFIG    _CONFIG1H, _FOSC_HSPLL_1H & _FCMEN_OFF_1H & _IESO_ON_1H
 __CONFIG    _CONFIG2L, _PWRT_OFF_2L & _BOREN_OFF_2L 
 __CONFIG    _CONFIG2H, _WDTEN_OFF_2H 
 __CONFIG    _CONFIG3H, _MCLRE_ON_3H & _HFOFST_ON_3H & _LPT1OSC_OFF_3H & _PBADEN_OFF_3H & _CCP2MX_PORTC_3H 
 __CONFIG    _CONFIG4L, _STVREN_OFF_4L & _LVP_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L 
 __CONFIG    _CONFIG5L, _CP0_ON_5L & _CP1_ON_5L & _CP2_ON_5L & _CP3_ON_5L
 __CONFIG    _CONFIG5H, _CPB_ON_5H & _CPD_ON_5H 
 __CONFIG    _CONFIG6L, _WRT0_ON_6L & _WRT1_ON_6L & _WRT2_ON_6L & _WRT3_ON_6L
 __CONFIG    _CONFIG6H, _WRTB_ON_6H & _WRTC_ON_6H & _WRTD_ON_6H  
 __CONFIG    _CONFIG7L, _EBTR0_ON_7L & _EBTR1_ON_7L & _EBTR2_ON_7L & _EBTR3_ON_7L 
 __CONFIG    _CONFIG7H, _EBTRB_ON_7H
endasm
define OSC 64
'////////////////////portb - TMR - Genel Kesmeler///////////////////////////      
    Symbol GIE       = INTCON.7    'genel kesmeler aktif
    Symbol PEIE      = INTCON.6    'Çevresel kesmeler aktif
    Symbol IPEN      = RCON.7      'Oncelikler aç kapat
    Symbol TMR0E     = INTCON.5    'TMR0 Kesme 
    Symbol INT0      = INTCON.4    'RB0 Kesme Etkinleştir
    Symbol RBIE      = INTCON.3    'RB Değişim Kesme 
    Symbol TMR0IF    = INTCON.2    'TMR0 Taşma Bayrağı Ouyarak Sıfırlanmalı
    Symbol INT0IF    = INTCON.1    'INT0 harici Kesme Bayrağı Okutarak Sıfırla
    Symbol RBIF      = INTCON.0    'RB7-4 harici Kesme Bayrağı Okutarak Sıfırla
'///////////////////////////////////////////////////////////////////////////////
'///////////////////////////////////////////////////////////////////////////////
    Symbol TMR0ON    = T0CON.7    'TMR0 Etkinleştir = 1
    Symbol T08BIT    = T0CON.6    '8bit = 1 /16bit = 0 Zamanlayıcı Seç
    Symbol T0CS      = T0CON.5    'Saat Kaynağı T0CKI = 1 / CLKo = 0
    Symbol T0SE      = T0CON.4    'Kenar Seçme Yükselkten alta geçiş = 1
    Symbol PSA       = T0CON.3    'Ön yükleyici Ön ölçekleyiciyi atanmamış = 1  
    Symbol TOPS2     = T0CON.2    'bölme oranı
    Symbol TOPS1     = T0CON.1    'bölme oranı
    Symbol TOPS0     = T0CON.0    'bölme oranı
'///////////////////////////////////////////////////////////////////////////////
'///////////////////////////////////////////////////////////////////////////////
    T08BIT           = 1  '8bit = 1 /16bit = 0 Zamanlayıcı Seç
    T0CS             = 0  'Saat Kaynağı T0CKI = 1 / CLKo = 0
    T0SE             = 1  'Kenar Seçme Yükselkten alta geçiş = 1
    PSA              = 0  'Ön yükleyici Ön ölçekleyiciyi atanmamış = 1
    TOPS2= 1:TOPS1 = 1:TOPS0 = 1
    TMR0E            = 1  'TMR0 Kesme Açık
    TMR0ON           = 1  'TMR0 Etkinleştir = 1
'///////////////////////////////////////////////////////////////////////////////
'///////////////////////////////////////////////////////////////////////////////

    GIE             = 1  'Tüm kesmeler açık
    ON INTERRUPT GOTO KESME 'komut satırını ekle programa (BASLA satırından bir evvele koyabilirsin)
    
TRISA      = %00000000
TRISB      = %00000000
TRISC      = %00000000
TRISD      = %00000000
TRISE.0    = 0
TRISE.1    = 0
TRISE.2    = 0
TRISE.3    = 0

OSCCON     =%01110000 
OSCTUNE    =%01000000
P10_A      VAR PORTD.1  
P10_B      VAR PORTB.2 
CLK        VAR PORTC.3
DTA        VAR PORTC.5
LATCH      VAR PORTD.2
OE         VAR PORTD.3 
'Symbol Led1 = Portb.1
   
    SSPSTAT=%11000000
    SSPCON1 =%00100000
    pause 200
    porta=0
    portb=0
    portc=0
    portd=0
    porte=0
    
    A var byte [32]
    B var byte [32]
    C var byte [32]
    D var byte [32]
    
    
    x var byte
    Tara var byte
    bekle var Word
    SAYI VAR word
    S1 VAR BYTE
    S2 VAR BYTE
    S3 VAR BYTE
    S4 VAR BYTE
    S5 VAR BYTE
    S6 VAR BYTE
    S7 VAR BYTE
    S8 VAR BYTE
    Rakam Var byte
    Sutun Var byte
    
    FOR X=31 TO 0 STEP -1
    A[X]=255
    B[X]=255
    c[X]=255
    d[X]=255
    NEXT X

BASLA:

    For Sutun = 0 to 3
    Rakam = Sayi Dig Sutun
    
    GOSUB RAKAM_AL
    Next Sutun

goto basla

RAKAM_AL:
    S4 = 0 
    For s1 = 0 to 15     
    S2 = (Rakam * 16) + S1 
    S5 = (S1 / 4) + (Sutun  * 4)
    LookUp S2,[ 131,   1,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,   1, 131,_       '0
                199, 135,   7,  39, 103, 231, 231, 231, 231, 231, 231, 231, 231, 231,   1,   1,_       '1
                131,   1,  57,  57,  57, 249, 249, 249, 241, 227, 199, 143, 159,  63,   1,   1,_       '2
                131,   1,  57,  57, 185, 249, 227, 227, 251, 249, 249, 185,  57,  57,   1, 131,_       '3
                 57,  57,  57,  57,  57,  57,   1,   1, 249, 249, 249, 249, 249, 249, 249, 249,_       '4
                  1,   1,  57,  63,  63,  63,   1,   1, 241, 249, 249,  57,  57,   1,   1, 131,_       '5
                131,   1,  57,  63,  63,  63,   1,   1,  57,  57,  57,  57,  57,  57,  57, 131,_       '6
                  1,   1, 249, 241, 241, 231, 199, 207, 207, 207, 207, 207, 207, 207, 207, 207,_       '7
                131,  57,  57,  57,  57,  57,   1, 131,   1,  57,  57,  57,  57,  57,  57, 131,_       '8
                131,   1,  57,  57,  57,  57,   1, 131, 249, 249, 249, 249,  57,  57, 129, 131], S3    '9
    
    if S4 = 0 then A[S5] = S3
    if S4 = 1 then B[S5] = S3
    if S4 = 2 then C[S5] = S3
    if S4 = 3 then D[S5] = S3
    S4 = S4 + 1
    if S4 >= 4 then S4 = 0 
    next S1

Return

'///////////////////////////////////////////////////////////////////////////////   
'///////////////////////////////////////////////////////////////////////////////
DISABLE
Kesme:
GIE = 0
if TMR0IF = 1 then
    Bekle = Bekle + 1
    if Bekle >= 5 then
        Sayi = Sayi + 1 
        if Sayi >= 9999 then Sayi = 0  
        toggle Portb.1
        Bekle = 0 
    endif
        
        for Tara = 31 to 0 Step - 1
        SSPBUF=A[Tara]:PIR1.3=0
        WHILE PIR1.3=0
        WEND
        next Tara
        p10_a=0:p10_b=0
        LATCH=1:LATCH=0:OE=0
        OE=1: Pauseus 100:OE=0
        
        for Tara = 31 to 0 Step - 1
        SSPBUF=B[Tara]:PIR1.3=0
        WHILE PIR1.3=0
        wend
        next Tara
        p10_a=1:p10_b=0
        LATCH=1:LATCH=0:OE=0
        OE=1:  Pauseus 100:OE=0
     
        for Tara = 31 to 0 Step - 1
        SSPBUF=C[Tara]:PIR1.3=0
        WHILE PIR1.3=0
        wend
        next Tara
        p10_a=0:p10_b=1
        LATCH=1:LATCH=0:OE=0
        OE=1:  Pauseus 100:OE=0
        
        for Tara = 31 to 0 Step - 1
        SSPBUF=D[Tara]:PIR1.3=0
        WHILE PIR1.3=0
        wend
        next Tara
        p10_a=1:p10_b=1
        LATCH=1:LATCH=0:
        OE=1:  Pauseus 100:OE=0
    TMR0IF = 0
Endif

GIE = 1
Resume
enable

end


sanırım datalar çok hızlı yada döngülerde hata var ledler karışık karışık yanıp sönüyor
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

aRci

Ben denememi 20MHz de yapıyorum siz timer hesaplamasını buna göre yapıp bölme oranını ve timer tekrar değerini  değerini değiştirmeniz gerekiyor.

Bu ksım bölme oranı
 TOPS2= 1:TOPS1 = 1:TOPS0 = 1

kesme rutinin de bekle değişkeni her timer kesmesinde artıyor burada her 6 kesmede ekran güncelleniyor. sizin frekansdan kaynaklı bu kısım hızlı olduğundan gerçekleşiyor olabilir.

Ayrıca portb.1 den bu kısım gerçekleştiğinde ledin durumu değişiyor eğer sürekli yanıyor gibi yada hızkıca kırpıyorsa bu hız kaynajklı olduğu da beliritiyor.
 if Bekle >= 5 then

Alıntı yapılan: gogoce - 07 Nisan 2021, 21:27:45sanırım datalar çok hızlı yada döngülerde hata var ledler karışık karışık yanıp sönüyor

gogoce

Alıntı yapılan: aRci - 07 Nisan 2021, 22:25:21Ben denememi 20MHz de yapıyorum siz timer hesaplamasını buna göre yapıp bölme oranını ve timer tekrar değerini  değerini değiştirmeniz gerekiyor.

Bu ksım bölme oranı
 TOPS2= 1:TOPS1 = 1:TOPS0 = 1

kesme rutinin de bekle değişkeni her timer kesmesinde artıyor burada her 6 kesmede ekran güncelleniyor. sizin frekansdan kaynaklı bu kısım hızlı olduğundan gerçekleşiyor olabilir.

Ayrıca portb.1 den bu kısım gerçekleştiğinde ledin durumu değişiyor eğer sürekli yanıyor gibi yada hızkıca kırpıyorsa bu hız kaynajklı olduğu da beliritiyor.
 if Bekle >= 5 then

tutturamadım denemeye devam edeceğim
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

gogoce

@ete hocam . USART ile bilgi almaya çalışıyorum. Bu konuda yardımcı olabilir misiniz?
define OSC 64
asm
 __CONFIG    _CONFIG1H, _FOSC_HSPLL_1H & _FCMEN_OFF_1H & _IESO_ON_1H
 __CONFIG    _CONFIG2L, _PWRT_OFF_2L & _BOREN_OFF_2L 
 __CONFIG    _CONFIG2H, _WDTEN_OFF_2H 
 __CONFIG    _CONFIG3H, _MCLRE_ON_3H & _HFOFST_ON_3H & _LPT1OSC_OFF_3H & _PBADEN_OFF_3H & _CCP2MX_PORTC_3H 
 __CONFIG    _CONFIG4L, _STVREN_OFF_4L & _LVP_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L 
 __CONFIG    _CONFIG5L, _CP0_ON_5L & _CP1_ON_5L & _CP2_ON_5L & _CP3_ON_5L
 __CONFIG    _CONFIG5H, _CPB_ON_5H & _CPD_ON_5H 
 __CONFIG    _CONFIG6L, _WRT0_ON_6L & _WRT1_ON_6L & _WRT2_ON_6L & _WRT3_ON_6L
 __CONFIG    _CONFIG6H, _WRTB_ON_6H & _WRTC_ON_6H & _WRTD_ON_6H  
 __CONFIG    _CONFIG7L, _EBTR0_ON_7L & _EBTR1_ON_7L & _EBTR2_ON_7L & _EBTR3_ON_7L 
 __CONFIG    _CONFIG7H, _EBTRB_ON_7H
endasm
TRISA = %00000000
TRISB = %00000000
TRISC = %10000000
TRISD = %00000000
TRISE.0=0
TRISE.1=0
TRISE.2=0
TRISE.3=0
OSCCON=%01110000 
OSCTUNE=%01000000
'////////////////////portb - TMR - Genel Kesmeler///////////////////////////      
    Symbol GIE      = INTCON.7    'genel kesmeler aktif
    Symbol PEIE      = INTCON.6    'Çevresel kesmeler aktif
    Symbol IPEN      = RCON.7      'Oncelikler aç kapat
    Symbol TMR0E    = INTCON.5    'TMR0 Kesme 
    Symbol INT0      = INTCON.4    'RB0 Kesme Etkinleştir
    Symbol RBIE      = INTCON.3    'RB Değişim Kesme 
    Symbol TMR0IF    = INTCON.2    'TMR0 Taşma Bayrağı Ouyarak Sıfırlanmalı
    Symbol INT0IF    = INTCON.1    'INT0 harici Kesme Bayrağı Okutarak Sıfırla
    Symbol RBIF      = INTCON.0    'RB7-4 harici Kesme Bayrağı Okutarak Sıfırla
'///////////////////////////////////////////////////////////////////////////////
    Symbol TMR0ON    = T0CON.7    'TMR0 Etkinleştir = 1
    Symbol T08BIT    = T0CON.6    '8bit = 1 /16bit = 0 Zamanlayıcı Seç
    Symbol T0CS      = T0CON.5    'Saat Kaynağı T0CKI = 1 / CLKo = 0
    Symbol T0SE      = T0CON.4    'Kenar Seçme Yükselkten alta geçiş = 1
    Symbol PSA      = T0CON.3    'Ön yükleyici Ön ölçekleyiciyi atanmamış = 1  
    Symbol TOPS2    = T0CON.2    'bölme oranı
    Symbol TOPS1    = T0CON.1    'bölme oranı
    Symbol TOPS0    = T0CON.0    'bölme oranı
    SYMBOL RCIE      = PIE1.5    'EUSART Receive Interrupt Enable bit
    symbol CREN      = RCSTA.4
    SYMBOL SYNC      = TXSTA.4
    SYMBOL SPEN      = RCSTA.7
'///////////////////////////////////////////////////////////////////////////////
    T08BIT          = 1  '8bit = 1 /16bit = 0 Zamanlayıcı Seç
    T0CS            = 0  'Saat Kaynağı T0CKI = 1 / CLKo = 0
    T0SE            = 1  'Kenar Seçme Yükselkten alta geçiş = 1
    PSA              = 0  'Ön yükleyici Ön ölçekleyiciyi atanmamış = 1
    TOPS2= 1:TOPS1 = 1:TOPS0 = 1
    TMR0E            = 0  'TMR0 Kesme 1:Açık 0:kapalı
    TMR0ON          = 0  'TMR0 Etkinleştir = 1
'///////////////////////////////////////////////////////////////////////////////
    CREN = 1  'CREN: Continuous Receive Enable bit
              'Asynchronous mode:
              '1 = Enables receiver
              '0 = Disables receiver
    SYNC = 0  'SYNC: EUSART Mode Select bit 
              '1 = Synchronous mode 
              '0 = Asynchronous mode
    SPEN = 1  '1 = Serial port enabled (configures RX/DT and TX/CK pins as serial port pins
    GIE  = 1  'Tüm kesmeler açık
    PEIE = 1  'çevresel kesmeler açık
    RCIE = 1  '1 = Enables the EUSART receive interrupt 
    
    ON INTERRUPT GOTO KESME 'komut satırını ekle programa (BASLA satırından bir evvele koyabilirsin)
    

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_CLROERR 1 ' Clear overflow automatically
DEFINE HSER_SPBRG 130 ' 9600 Baud @ SPBRGH = 6
BAUDCON.3 = 1        ' Enable 16 bit baudrate generator



P10_A VAR PORTD.1  
P10_B VAR PORTB.2 
CLK VAR PORTC.3
DTA VAR PORTC.5
LATCH VAR PORTD.2
OE VAR PORTD.3    
SSPSTAT =%11000111
SSPCON1 =%00100001
clear
pause 250
porta=0
portb=0
portc=0
portd=0
porte=0

A var byte [32]
B var byte [32]
C var byte [32]
D var byte [32]
Y VAR BYTE
x var WORD
SAYI VAR LONG
S1 VAR BYTE
S2 VAR BYTE
S3 VAR BYTE
S4 VAR BYTE
S5 VAR BYTE
S6 VAR BYTE
S7 VAR BYTE
S8 VAR BYTE
VERI VAR BYTE [12]
TEMP VAR BYTE

FOR X=31 TO 0 STEP -1
A[X]=255
B[X]=255
c[X]=255
d[X]=255
NEXT X
PORTB.1=1
PAUSE 500
PORTB.1=0

BASLA:
s1=veri[7]
s2=veri[6]
s3=veri[5]
s4=veri[4]
s5=veri[3]
s6=veri[2]
s7=veri[1]
s8=veri[0]

GOSUB RAKAM_AL
GOSUB TARA
goto basla

;RAKAM AL ALT PROGRAMI UZUN OLDUĞU İÇİN EKLEMEDİM
DISABLE        
KESME:
HSERIN [WAIT ("WG"),VERI[0],VERI[1],VERI[2],VERI[3],VERI[4],VERI[5],VERI[6],VERI[7],VERI[8],VERI[9],VERI[10],VERI[11]]  
        TEMP=RCREG 
toggle portb.1
        
RESUME        
ENABLE
        
        
        
END




Elimdeki cihaz WG000000 şeklinde 13 byte veri yolluyor. WG yi işaret olarak belirleyip gerideki 6 tane 0 rakamını panele basmaya çalışıyorum. Arada max232 kullandım. Program hiç kesmeye girmiyor. Bunun için toggle portb.1 satırını kullandım
cihaz 9600 baud bilgi gönderiyor
Hatam nerede olabilir?
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

ete

#70
Hangi işlemci? belli değil. Öncekikle bunu belirtki ona göre bakayım.
Kodlar tamam gibi gözüküyor ancak PLL ayarları tamamıdır onu anlayamıyorum. Muhtemelen işlemcin çalışmıyor bu yüzdende kesme sisteminde çalışmıyor olabilir.
Programın baş tarafına bir led yakıp söndüren kısım ekle ki ilk çalışmada işlemcin çalışıyormu anlayasın. Çalışıyor ise sorunu başka yerde aramak gerekecek elbette.

Ete

gogoce

hocam 18f46k20 16mhz kristal pll ile 64mhz kullandım. P10 projesine devam ediyorum
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

ete

Açıkçası hiç bir hata göremedim. Kusur var. Bu tür yeni nesil işlemcilerde Port girişleri PORTX registeri ile port çıkışları ise LATX registeri ile kontrol edilir.
Toggle PORTB.1 yerine TOGGLE LATB.1 demen daha doğru olurdu.

Kusuru biraz da donanım bağlantılarında araman gerekir diye düşünüyorum.

Dediğim gibi programın çalıştığından emin olman gerek. Led alternatifini denemelisin.

Ete

aRci

Merhaba
Aslında problem yüksek hızda düşük baud değeri yüzünden. TXSTA yazmancının 2. biti yüksek hız duşuk hız olarak ayarlamanıza yardımcı oluyor. birde bu şekilde test edin.

'////////////////////portb - TMR - Genel Kesmeler///////////////////////////      
    Symbol GIE      = INTCON.7    'genel kesmeler aktif
    Symbol PEIE      = INTCON.6    'Çevresel kesmeler aktif
    Symbol IPEN      = RCON.7      'Oncelikler aç kapat
    Symbol TMR0E    = INTCON.5    'TMR0 Kesme 
    Symbol INT0      = INTCON.4    'RB0 Kesme Etkinleştir
    Symbol RBIE      = INTCON.3    'RB Değişim Kesme 
    Symbol TMR0IF    = INTCON.2    'TMR0 Taşma Bayrağı Ouyarak Sıfırlanmalı
    Symbol INT0IF    = INTCON.1    'INT0 harici Kesme Bayrağı Okutarak Sıfırla
    Symbol RBIF      = INTCON.0    'RB7-4 harici Kesme Bayrağı Okutarak Sıfırla
'///////////////////////////////////////////////////////////////////////////////
    Symbol TMR0ON    = T0CON.7    'TMR0 Etkinleştir = 1
    Symbol T08BIT    = T0CON.6    '8bit = 1 /16bit = 0 Zamanlayıcı Seç
    Symbol T0CS      = T0CON.5    'Saat Kaynağı T0CKI = 1 / CLKo = 0
    Symbol T0SE      = T0CON.4    'Kenar Seçme Yükselkten alta geçiş = 1
    Symbol PSA      = T0CON.3    'Ön yükleyici Ön ölçekleyiciyi atanmamış = 1  
    Symbol TOPS2    = T0CON.2    'bölme oranı
    Symbol TOPS1    = T0CON.1    'bölme oranı
    Symbol TOPS0    = T0CON.0    'bölme oranı

    Symbol RCIE      = PIE1.5      'EUSART alma kesmesi
    Symbol RCIF      = PIR1.5      'EUsart Kesme Bayrağı
    Symbol RCIP      = IPR1.5      'EUsart ALma Kesintisi Öncelik
    Symbol SPEN      = RCSTA.7    'Seri Bağlantı Noktası Etkin = 1
    Symbol CREN      = RCSTA.4    'Sürekli veri alma etkin = 1
    Symbol OERR      = RCSTA.1    'Sürekli veri alma etkin = 1

    Symbol BRGH      = TXSTA.2    'Baud Hız seçimi Yüksek hız= 1

'///////////////////////////////////////////////////////////////////////////////
    T08BIT          = 1  '8bit = 1 /16bit = 0 Zamanlayıcı Seç
    T0CS            = 0  'Saat Kaynağı T0CKI = 1 / CLKo = 0
    T0SE            = 1  'Kenar Seçme Yükselkten alta geçiş = 1
    PSA              = 0  'Ön yükleyici Ön ölçekleyiciyi atanmamış = 1
    TOPS2= 1:TOPS1 = 1:TOPS0 = 1
    TMR0E            = 0  'TMR0 Kesme 1:Açık 0:kapalı
    TMR0ON          = 0  'TMR0 Etkinleştir = 1
'///////////////////////////////////////////////////////////////////////////////
    CREN             = 0  'Sürekli veri alma etkin = 1
    CREN             = 1
    RCIE             = 1  'EUsart Alma Kesmesi Aktif  = 1
    SPEN             = 1
    BRGH             = 0
    PEIE             = 1
    
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_CLROERR 1 ' Clear overflow automatically
DEFINE HSER_SPBRG 130 ' 9600 Baud @ 64MHz, -0,02%
SPBRGH = 6
BAUDCON.3 = 1         ' Enable 16 bit baudrate generator

gogoce

Alıntı yapılan: aRci - 11 Nisan 2021, 14:19:39Merhaba
Aslında problem yüksek hızda düşük baud değeri yüzünden. TXSTA yazmancının 2. biti yüksek hız duşuk hız olarak ayarlamanıza yardımcı oluyor. birde bu şekilde test edin.

'////////////////////portb - TMR - Genel Kesmeler///////////////////////////      
    Symbol GIE      = INTCON.7    'genel kesmeler aktif
    Symbol PEIE      = INTCON.6    'Çevresel kesmeler aktif
    Symbol IPEN      = RCON.7      'Oncelikler aç kapat
    Symbol TMR0E    = INTCON.5    'TMR0 Kesme 
    Symbol INT0      = INTCON.4    'RB0 Kesme Etkinleştir
    Symbol RBIE      = INTCON.3    'RB Değişim Kesme 
    Symbol TMR0IF    = INTCON.2    'TMR0 Taşma Bayrağı Ouyarak Sıfırlanmalı
    Symbol INT0IF    = INTCON.1    'INT0 harici Kesme Bayrağı Okutarak Sıfırla
    Symbol RBIF      = INTCON.0    'RB7-4 harici Kesme Bayrağı Okutarak Sıfırla
'///////////////////////////////////////////////////////////////////////////////
    Symbol TMR0ON    = T0CON.7    'TMR0 Etkinleştir = 1
    Symbol T08BIT    = T0CON.6    '8bit = 1 /16bit = 0 Zamanlayıcı Seç
    Symbol T0CS      = T0CON.5    'Saat Kaynağı T0CKI = 1 / CLKo = 0
    Symbol T0SE      = T0CON.4    'Kenar Seçme Yükselkten alta geçiş = 1
    Symbol PSA      = T0CON.3    'Ön yükleyici Ön ölçekleyiciyi atanmamış = 1  
    Symbol TOPS2    = T0CON.2    'bölme oranı
    Symbol TOPS1    = T0CON.1    'bölme oranı
    Symbol TOPS0    = T0CON.0    'bölme oranı

    Symbol RCIE      = PIE1.5      'EUSART alma kesmesi
    Symbol RCIF      = PIR1.5      'EUsart Kesme Bayrağı
    Symbol RCIP      = IPR1.5      'EUsart ALma Kesintisi Öncelik
    Symbol SPEN      = RCSTA.7    'Seri Bağlantı Noktası Etkin = 1
    Symbol CREN      = RCSTA.4    'Sürekli veri alma etkin = 1
    Symbol OERR      = RCSTA.1    'Sürekli veri alma etkin = 1

    Symbol BRGH      = TXSTA.2    'Baud Hız seçimi Yüksek hız= 1

'///////////////////////////////////////////////////////////////////////////////
    T08BIT          = 1  '8bit = 1 /16bit = 0 Zamanlayıcı Seç
    T0CS            = 0  'Saat Kaynağı T0CKI = 1 / CLKo = 0
    T0SE            = 1  'Kenar Seçme Yükselkten alta geçiş = 1
    PSA              = 0  'Ön yükleyici Ön ölçekleyiciyi atanmamış = 1
    TOPS2= 1:TOPS1 = 1:TOPS0 = 1
    TMR0E            = 0  'TMR0 Kesme 1:Açık 0:kapalı
    TMR0ON          = 0  'TMR0 Etkinleştir = 1
'///////////////////////////////////////////////////////////////////////////////
    CREN             = 0  'Sürekli veri alma etkin = 1
    CREN             = 1
    RCIE             = 1  'EUsart Alma Kesmesi Aktif  = 1
    SPEN             = 1
    BRGH             = 0
    PEIE             = 1
    
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_CLROERR 1 ' Clear overflow automatically
DEFINE HSER_SPBRG 130 ' 9600 Baud @ 64MHz, -0,02%
SPBRGH = 6
BAUDCON.3 = 1         ' Enable 16 bit baudrate generator
Arci ilgin için teşekkür ederim fakat değişen bişey olmadı
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

Powered by EzPortal