P10 panel sürmek

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

gogoce

Merhaba,
Daha önce çeşitli forumlarda hatta bu forumda da yapıldı fakat anlayamadığım şeyler var. P10 paneli daha öcne arduino ile çalıştırdım. Fakat birtakım problemlerden dolayı pic ile kendim yapmaya karar verdim.

Mucit23 arkadaşımın C ile yaptığı uygulamayı ve detaylı yazısını inceledim. Aşağıdaki programı yazdım fakat sonuca ulaşamadım. Diğer forumlarda iç bağlantı şeması verilmiş Hattasanırım OG isimli arkadaş vermişti ama resimnler silinmiş .

Gelelim problemime.
1)Ekranın ram bölümlerini tam olarak kavrayamadım. Dolayısıyla istediğimi yapamıyorum
2)Programda henüz timer kurmadım daha sonra o kısma da geçeceğim
3) Ekranda 3. , 7. , 11. ve 15. satırlarda sürelli tüm ledler yanıyor. Farkı bir şey yapamadım hatamı bulmamda yardımcı olabilir misiniz?

Tüm pinlerimin çıkış olduğunu kontrol ettim P10 ile bağlantı şemasında problem yok .
Saygılarımla
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 = %00000000
TRISD = %00000000
TRISE.0=0
TRISE.1=0
TRISE.2=0
TRISE.3=0
OSCCON=%01110000 
OSCTUNE=%01000000
P10_A VAR PORTD.0  
P10_B VAR PORTD.1 
CLK VAR PORTC.3
DTA VAR PORTC.5
LATCH VAR PORTD.2
OE VAR PORTD.3    

display_ram_1 var byte [16]
display_ram_2 var byte [16]
display_ram_3 var byte [16]
display_ram_4 var byte [16]
 
x var byte
y var byte
clear
pause 250
porta=0
portb=0
portc=0
portd=0
porte=0


BASLA:
display_ram_1[0] =%10000001
display_ram_1[4] =%01101111
display_ram_1[8] =%01101111
display_ram_1[12]=%10000001

GOSUB TARA
GOTO BASLA

TARA:   x=0
        for x=16 to 0 step -1
        SHIFTOUT dta,clk,1,[display_ram_1[x]]
        p10_a=0:p10_b=0 
        next x
        LATCH=1
        PAUSE 1
        LATCH=0
        PAUSE 1
        x=0
        for x=16 to 0 step -1
        SHIFTOUT dta,clk,1,[display_ram_2[x]]
        p10_a=1:p10_b=0 
        next x
        LATCH=1
        PAUSE 1
        LATCH=0
        PAUSE 1
        x=0
        for x=16 to 0 step -1
        SHIFTOUT dta,clk,1,[display_ram_2[x]]
        p10_a=0:p10_b=1 
        next x
        LATCH=1
        PAUSE 1
        LATCH=0
        PAUSE 1
        x=0
        for x=16 to 0 step -1
        SHIFTOUT dta,clk,1,[display_ram_3[x]]
        p10_a=1:p10_b=1 
        next x
        LATCH=1
        PAUSE 1
        LATCH=0
        OE=1
        PAUSEus 800
        OE=0
    return

Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

aRci

merhaba benim yöndetem bu sekilde yapmıştım
sizde lanch bende oe olarak tanımlamışım fark olarak işlem sonrasın da oe yi 1 olarak bırakmışım.

ayrıca sizin programda veriler üst üste gönderiliyor ama aslında gönderilen veri misal 10ms görüntülendikten sonra diğer gruba geçip o grubun verileri gönderilip ardından gene 10ms beklenmeli ve bu sekilde sürekli durmaksızın yapılmalı. yazdığınız programda en sonda 800ms bekleme yapmışsınız sizin sürekli yanıyor dedğiniz kısım o duraklamadan dolayı.

en basit olarak sizin yazdığınız programa her for dan sonra beklemeler koyarak denemeyi yapınız.

      if secab = 0 then
          for Sutunx = 16 to 1 step -1
          shiftout   dat, clk,1,[veri1[Sutunx]]'[255,255,207,207,255,255,255,255,255,255,255,255,255,255,255,255]
          next Sutunx
          Low Oe: low sa: low sb: High en: low en: high oe
          endif

gogoce

her for dongüsünden sonra 10ms ekranın yanmasını mı sağlamak gerekiyor?
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

ete

Şemayı vereyim sitede olması gerek aradınızmı?

Şemayı anlamadan sürmeye çalışmak hata olur bence.

Şemayı inceleyin nasıl sürülmesi gerektiği konusunu tartışalım. Önce fikirler gelsin bakalım.

Ete


gogoce

Alıntı yapılan: ete - 20 Şubat 2021, 19:30:40Şemayı vereyim sitede olması gerek aradınızmı?

Şemayı anlamadan sürmeye çalışmak hata olur bence.

Şemayı inceleyin nasıl sürülmesi gerektiği konusunu tartışalım. Önce fikirler gelsin bakalım.

Ete



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

aRci

Hatırladığım ve çizima bakarak, ilk olarak veri ( 16 byte ) iletilir. ardından a ve b pinleri ile satır seçilir son olarak da oe pinin den pals gönderilerek çıkışlara aktarılır.
 a ve b pinleri 00 - 01 - 10 - 10 şeklinde sırası ile yukardan aşşağı olacak şekilde seçilmiş olur.
hiç bir zaman tarama durdurulmamalı. aksi halde ekran da değer göremezsiniz.

bu aynı matrix yada 7 segment display sürer şeklinde hareket edilmeli.

ete

#6
Şemaya bakılırsa her nekadar sıra sıra 4 erli dursalarda 74HC595 ler yukarıdan aşağıya seri bağlı durumdalar. İlk 4 yukarıdan aşağı seri bağlı ve aşağıdaki sonra yukarıdan ikinci sıradaki 74HC595 e seir olarakbağlanıp bu şekilde devam ederek 4 sütun ve 4 sıra bir birine seri bağlı. Toplamda 4 x 4=16 adet 595 bir birine seri bağlı.
Görüntü oluştururken bu sıraya uygun data verilmesi gerekiyor. Yine şemaya bakarsanız her bir 595' e yukarıdan aşağı doğru 4 sıra led bağlanmış. Kısaca led matrixin her 4 sırası bir 595 e bağlı.
Bu ledlerin ortak uçları ise satır olarak ortaklanmış. Out1 i aktif ettiğiniz zaman üst sıradaki 32 adet ledin ortak ucunu aktif etmiş oluyorsunuz. Aynı zamanda yukarıdan itibaren 9. sıradaki ledleride aktif etmiş oluyorsunuz. Böylece yanlızca 8 pin out bacağı kullanarak 16 sıra kontrol edilmiş oluyor.

Şimdi düşünelim bir satır bilgisi nasıl oluşturulacak.595 lere sırası ile B1-B2-B3-B4-B5-B6-B7..B16 adını verelim. B1-B4 yukarıdan aşağıya seri bağlı. B1 in yanına B5 geliyor satırda ve B5 in yanına B9 ve devamla B9 yanına ise B13 geliyor.
Bu durumda ilk satır bilgisi 8 er bit olarak yan yana gelecek şekilde B1-B5-B9-B13 registerlerine verilmeli ve o satırı aktive etmek için Out-1 aktif edilmeli.
Ardından ikinci satırı oluşturmak için B2-B6-B10-B14 de bilgi yüklenmeli ve  2 ci satır aktif edilmeli
Elbette 595 lere bilgi yüklerken yanlızca bu registerlere bilgi yükleyemezsiniz. 16 adet'e birden bilgi yüklenecek ama aktif bilgi satıra göre seçilecek registerlerde olacak.
Sürme işi kabaca bu şekilde.

Daha önce P10 panel sürmüş idim. Çok zaman geçti aradan hepsini unutmuşum şemaya bakarak yeniden nasıl sürüleceği konusunda fikir oluşturuyorum. Ancak hatırladığım önemli bir nokta var idi. Oda normal SHiftout komutları ile bu işi yaparsanız paneldeki görüntü oluşturma işlemi çok fazla zaman alıyor. Ne kadar hızlı OSC kullanırsanız kullanın zaman alıyor. Ancak işlemcilerin donanımsal SPI portunu kullanırsanız belkide sanki 100 kat hızlanıyor sistem. Bunu çok iyi hatırlıyorum. O nedenle P10 panel ile çalışacaklara şimdiden tavsiyem kesinlikle donanımsal SPI portu kullanmaları yönündedir.

İş yanlızca tek bir panelin sürülmesi ile bitmiyor biliyorsunuz. Bu panellere seri başka panellerde eklenmesi gerekiyor. P10 panelleri bir birlerine seri bağlanacak şekilde üretilmişler. Dikkat ederseniz 16 cı 74595 in Data out çıkışı panelin çıkış soketine bağlı. Bunun anlamı diğer seri bağlı panel o noktadan seri bağlanacak demektir. İkinciyi yanına bağladınızmı bu sefer register sayınız 2 katına çıkıcak demektir. 3 tane bağlayınca 3 katına ki tek seferde 16x3=48 adet registeri SPI portundan yollamanız gerekecek. Bu nedenle P10 panelle uğraşmak isteyenler şayet tek panel ile çalışacaklar ise sorun yok hatta belkide 2 panel ile de pek sorun olmaz donanımsal SPI kullanmak şartı ile. Ama panel adedi artarsa bu işe çok yüksek hızlı işlemcilerle yapmaktan başka çare kalmaz.

Panel sürme tartışmasına devam ediyoruz. Söylediklerimde hata var ise bilmek isterim. Nede olsa aradan zaman geçti mantık hatası yapmış olabilirim.
Gönül isterki bir proje geliştirelim ve burada tartışa tartışa panel yada panelleri sürelim. Bunun için elbette elinde malzme olan bir gönüllü gerekiyor. Biz tartışıp ortaya kod çıkardıkça o kişide bunu paneller üzerinde denemeli. Varmı böyle bir gönüllü? Var ise önerim bir saat /sıcaklık gösterge sistemi yapmak şeklinde nispeten daha basit bir iş gibi geliyor bana. Bir sürü karekter oluşturmak zorunda kalmayız yanlızca rakamlar ve bir C harfi ile o derece işareti belki bir adet - (tire) yada / işareti yeterli olacaktır. Daha sonra ne büyüklükte bir kerekter oluşturacağımıza karar vereceğiz. Ticari boyuta bulaşmamak için saat işini RTC siz direk sabit değer vererek yapacağız. İsteyen sonradan kendi saat sistemini projeye ekleyebilir. Amacımız paneli sürerek en azından sabit karekterleri göstermek.

Ete

aRci

ete hocam bende p10 panelle çalışma yapmıştım çalıştığım fabrikada. bir geridelik sayacı idi. Hat performansına ait şimdi p10 bende isterseniz denemeleri buradan yapabiliriz.

gogoce

Alıntı yapılan: ete - 21 Şubat 2021, 09:06:27Şemaya bakılırsa her nekadar sıra sıra 4 erli dursalarda 74HC595 ler yukarıdan aşağıya seri bağlı durumdalar. İlk 4 yukarıdan aşağı seri bağlı ve aşağıdaki sonra yukarıdan ikinci sıradaki 74HC595 e seir olarakbağlanıp bu şekilde devam ederek 4 sütun ve 4 sıra bir birine seri bağlı. Toplamda 4 x 4=16 adet 595 bir birine seri bağlı.
Görüntü oluştururken bu sıraya uygun data verilmesi gerekiyor. Yine şemaya bakarsanız her bir 595' e yukarıdan aşağı doğru 4 sıra led bağlanmış. Kısaca led matrixin her 4 sırası bir 595 e bağlı.
Bu ledlerin ortak uçları ise satır olarak ortaklanmış. Out1 i aktif ettiğiniz zaman üst sıradaki 32 adet ledin ortak ucunu aktif etmiş oluyorsunuz. Aynı zamanda yukarıdan itibaren 9. sıradaki ledleride aktif etmiş oluyorsunuz. Böylece yanlızca 8 pin out bacağı kullanarak 16 sıra kontrol edilmiş oluyor.

Şimdi düşünelim bir satır bilgisi nasıl oluşturulacak.595 lere sırası ile B1-B2-B3-B4-B5-B6-B7..B16 adını verelim. B1-B4 yukarıdan aşağıya seri bağlı. B1 in yanına B5 geliyor satırda ve B5 in yanına B9 ve devamla B9 yanına ise B13 geliyor.
Bu durumda ilk satır bilgisi 8 er bit olarak yan yana gelecek şekilde B1-B5-B9-B13 registerlerine verilmeli ve o satırı aktive etmek için Out-1 aktif edilmeli.
Ardından ikinci satırı oluşturmak için B2-B6-B10-B14 de bilgi yüklenmeli ve  2 ci satır aktif edilmeli
Elbette 595 lere bilgi yüklerken yanlızca bu registerlere bilgi yükleyemezsiniz. 16 adet'e birden bilgi yüklenecek ama aktif bilgi satıra göre seçilecek registerlerde olacak.
Sürme işi kabaca bu şekilde.

Daha önce P10 panel sürmüş idim. Çok zaman geçti aradan hepsini unutmuşum şemaya bakarak yeniden nasıl sürüleceği konusunda fikir oluşturuyorum. Ancak hatırladığım önemli bir nokta var idi. Oda normal SHiftout komutları ile bu işi yaparsanız paneldeki görüntü oluşturma işlemi çok fazla zaman alıyor. Ne kadar hızlı OSC kullanırsanız kullanın zaman alıyor. Ancak işlemcilerin donanımsal SPI portunu kullanırsanız belkide sanki 100 kat hızlanıyor sistem. Bunu çok iyi hatırlıyorum. O nedenle P10 panel ile çalışacaklara şimdiden tavsiyem kesinlikle donanımsal SPI portu kullanmaları yönündedir.

İş yanlızca tek bir panelin sürülmesi ile bitmiyor biliyorsunuz. Bu panellere seri başka panellerde eklenmesi gerekiyor. P10 panelleri bir birlerine seri bağlanacak şekilde üretilmişler. Dikkat ederseniz 16 cı 74595 in Data out çıkışı panelin çıkış soketine bağlı. Bunun anlamı diğer seri bağlı panel o noktadan seri bağlanacak demektir. İkinciyi yanına bağladınızmı bu sefer register sayınız 2 katına çıkıcak demektir. 3 tane bağlayınca 3 katına ki tek seferde 16x3=48 adet registeri SPI portundan yollamanız gerekecek. Bu nedenle P10 panelle uğraşmak isteyenler şayet tek panel ile çalışacaklar ise sorun yok hatta belkide 2 panel ile de pek sorun olmaz donanımsal SPI kullanmak şartı ile. Ama panel adedi artarsa bu işe çok yüksek hızlı işlemcilerle yapmaktan başka çare kalmaz.

Panel sürme tartışmasına devam ediyoruz. Söylediklerimde hata var ise bilmek isterim. Nede olsa aradan zaman geçti mantık hatası yapmış olabilirim.
Gönül isterki bir proje geliştirelim ve burada tartışa tartışa panel yada panelleri sürelim. Bunun için elbette elinde malzme olan bir gönüllü gerekiyor. Biz tartışıp ortaya kod çıkardıkça o kişide bunu paneller üzerinde denemeli. Varmı böyle bir gönüllü? Var ise önerim bir saat /sıcaklık gösterge sistemi yapmak şeklinde nispeten daha basit bir iş gibi geliyor bana. Bir sürü karekter oluşturmak zorunda kalmayız yanlızca rakamlar ve bir C harfi ile o derece işareti belki bir adet - (tire) yada / işareti yeterli olacaktır. Daha sonra ne büyüklükte bir kerekter oluşturacağımıza karar vereceğiz. Ticari boyuta bulaşmamak için saat işini RTC siz direk sabit değer vererek yapacağız. İsteyen sonradan kendi saat sistemini projeye ekleyebilir. Amacımız paneli sürerek en azından sabit karekterleri göstermek.

Ete



Ete
hocam o gönüllü benim. İnanın arduino illetini kullanmaktansa burdan kodlarla boğuşup kendim yapmayı tercih ederim. elimde 2 panel var yanyana bağlar denerim sadece 1 panelde deniyordum RTC tarzı bir şey yapacaksak 2 panel hatta 2-4 panel bağlayabilirim
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

gogoce

Hocam şema çizmeye çalıştım hatam varmı kontrol edebilir misiniz?


Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

ete

Kontrol edemem çünki hiç bir şey görünmüyor.
Ete

gogoce

resim boyutu çok büyük hocam rar yada zip olarak nasıl ekleyebilirim?
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

gogoce

Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

ete

Hata göremedim. Takip etmek de çok zor aslında. Bu gibi durumlarda ancak hata ile karşılaşırsan bulmuş olursun. Üşenmeden çizdiğin için teşekkür ederim.

Ete

gogoce

Rica ederim en azından benim gibi öğrenmek isteyene yol gösterir diye düşündüm
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

Powered by EzPortal