Resim Datalarını Eproma yükleme

Başlatan Mucit23, 12 Kasım 2011, 00:04:40

justice_for_all

ve bu is icin usb kullanilirsan daha guzel ve daha hizli olur die dusunuyorum...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

justice_for_all

Alıntı yapılan: Mucit23 - 13 Kasım 2011, 21:09:05
Hadi pic programı neysede PC yazılımı hakkında hiçbir fikrimyok malesef...

microchipin hazir bi programi var bunun icin ama application libraries dosyasini indirmeniz gerek onun icinde graphics klasorunde direkt olarak resimleri hex oda ceviriyo ve pice atiyo hem seri port hemde usb secenegi var..
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

Mucit23

Hocam buradada Umut Kazanç isimli arkadaş bu konuda bir çalışma yapmış.
http://www.digitalruh.com/devre.asp?id=98

yazdığı pc programı ile uygunboyuttaki resim datalarını bin dosyası haline getirip size veriyor. Bu bin dosyasını eeproma yükledikten sonra kendi yazdığı pic yazılımı ile bu dataları okuyup GLCD ye basıyormuş. Kendi alt programınıda vermiş. Bende o projeye göre geçen günlerde  ufak bir çalışma yapmıştım fakat bir türlü çalıştıramadım. Kendisine birkaç defa mail attım. Hiçbir şekilde geri dönmedi.
o projeye ait yaptığım uygulamanın kodları bunlar
Device 18F452
Config_Start
   OSC = HS ; HS
   PWRT = OFF ; Disabled
   BOR = OFF ; Disabled
   WDT = OFF ; Disabled
   LVP = OFF ; Disabled
Config_End

Xtal 20

TRISA=%00000000
TRISB=%00000000
TRISC=%00000000
TRISD=%00000000
TRISE=%00000000

PORTA=0:PORTB=0
PORTC=0:PORTD=0
    PORTE=0
PORTB.5=1                          'GLCD RESET=1
All_Digital= TRUE                  'ADC PORTLARININ TAMAMI DİJİTAL GİRİŞ VEYA ÇIKIŞ
LCD_DTPort = PORTD                 'GLCD DATA PORTLARI PORTD'YE BAĞLI
LCD_RSPin = PORTB.0                'GLCD RS PİNİ PORTB.0 BAĞLI
LCD_ENPin = PORTB.2                'GLCD ENABLE PİNİ PORTB.2 BAĞLI
LCD_RWPin = PORTB.1                'GLCD RW PİNİ PORTB.1 BAĞLI
LCD_CS1Pin = PORTB.4               'GLCD CS1 PİNİ PORTB.4 BAĞLI
LCD_CS2Pin = PORTB.3               'GLCD CS2 PİNİ PORTB.3 BAĞLI
LCD_Type =  Samsung                'GLCD TİPİ GRAFİK KS0108 128*64B WİNSTAR
Declare Internal_Font = On
Declare Font_Addr = 0
Declare GLCD_STROBE_DELAY = 5 

	SCL_Pin	= PORTC.3
	SDA_Pin	= PORTC.4
	
    Dim EE_adr      As Word
    Dim EE_con      As Byte 
    Dim GLADR       As Word
    Dim GTur        As Byte
    Dim Gxkor       As Byte
    Dim Gykor       As Byte
    Dim Gxuz        As Byte
    Dim Gyuz        As Byte
    Dim Gxsay       As Byte
    Dim Gysay       As Byte
    Dim Gcyts       As Byte 
    Dim Gyazuz      As Byte
    Dim Ginv        As Byte
    Dim ResDat      As Byte
    Dim YazDat      As Byte
    DelayMS 200 
Cls
    BASLA:
    GLADR = $0000
    GoSub GLCD_GOSTER
    GoTo BASLA
    
    GLCD_GOSTER:
    EE_adr = GLADR
    EE_con = $A1
    HBusIn EE_con, EE_adr, [GTur]
    On GTur - 1 GoToL RESIM_GOSTER, YAZI_GOSTER, CYAZI_GOSTER
    EE_adr = 0
    Return

RESIM_GOSTER:
    EE_adr = GLADR + 1
    HBusIn EE_con,EE_adr,[Gxuz, Gyuz, Gxkor, Gykor]
    EE_adr = GLADR + 5
    Gyuz = (Gyuz / 8) - 1
    For Gysay = Gykor To Gykor + Gyuz
        For Gxsay = Gxkor To Gxkor + (Gxuz - 1)
            HBusIn EE_con, EE_adr,[ResDat]
            LCDWrite Gysay, Gxsay, [ResDat]
        Inc EE_adr
        Next Gxsay
    Next Gysay
    Return

YAZI_GOSTER:
    EE_adr = GLADR + 1
    HBusIn EE_con, EE_adr, [Gyazuz, Gxkor, Gykor, Ginv]
    EE_adr = EE_adr + 4
    For Gxsay = Gxkor To Gxkor + (Gyazuz - 1)
        HBusIn EE_con, EE_adr, [YazDat]
        Print At Gykor, Gxsay, Inverse Ginv, YazDat
        Inc EE_adr
    Next Gxsay 
    Return  
    
CYAZI_GOSTER:
    EE_adr = GLADR + 1
    HBusIn EE_con, EE_adr, [Gcyts]
    EE_adr = GLADR + 2
    For Gysay = 0 To Gcyts - 1
        HBusIn EE_con, EE_adr, [Gykor, Gyazuz, Ginv]
        EE_adr = EE_adr + 3    
        For Gxsay = 0 To Gyazuz - 1
            HBusIn EE_con, EE_adr, [YazDat]
            Print At Gykor, Gxsay, Inverse Ginv, YazDat
            Inc EE_adr
        Next Gxsay
    Next Gysay
    Return


Şimdi ise sadece resim dataarını okuyup eeproma yazıp daha sonrada yazdığım değerleri tekrardan okuyup ekranda göstermeye çalışıyorum. Deneme amaçlı bir uygulama

yazdığım kodlar bunlar.
Device 18F452
Config_Start
   OSC = HS ; HS
   PWRT = OFF ; Disabled
   BOR = OFF ; Disabled
   WDT = OFF ; Disabled
   LVP = OFF ; Disabled
Config_End

Xtal 20

TRISA=%00000000
TRISB=%00000000
TRISD=%00000000
TRISC=%00000000
TRISE=%00000000

PORTA=0:PORTB=0:PORTD=0
    PORTE=0:PORTC=0

    Declare LCD_DTPin = PORTB.0
    Declare LCD_RSPin = PORTB.4
    Declare LCD_ENPin = PORTB.5
    Declare LCD_Interface = 4
    Declare LCD_Lines = 2
    Declare LCD_Type = 0
    Declare LCD_CommandUs = 2000
    Declare LCD_DataUs = 50

    Declare SCL_Pin	= PORTC.3
    Declare SDA_Pin	= PORTC.4
    Declare Slow_Bus On

All_Digital = True	
Symbol BUZZER=PORTB.7

Dim Char As Word
Dim ADR  As Byte
Dim X    As Byte
Dim DLY  As Byte
Dim WRITING As Byte
Dim READING As Byte
DelayMS 300
Cls
BASLA:    
           High PORTD.0
           For Char=0 To 1023
             ADR = CRead ZMN+CHAR 
             BusOut $A0,Char,[ADR]:DelayMS 10
             WRITING=ADR
             GoSub EKRAN
             DelayMS 50
           Next
           High PORTD.1
           For Char=0 To 1023 
             ADR = BusIn $A0,Char:DelayMS 10
             READING=ADR
             GoSub EKRAN
             DelayMS 50
           Next
           High PORTD
           Cls
           Print At 1,1,"YAZMA VE OKUMA"
           Print At 2,1,"TAMAMLANDI..."
           High BUZZER:DelayMS 1000:Low BUZZER
Stop

EKRAN:
   Print At 1,1,"YAZILAN $",Hex2 WRITING
   Print At 2,1,"OKUNAN  $",Hex2 READING
Return 
Include "ZMN.inc"


Program deney setinde güzel çalışıyor. Yazılan değerlerin değiştiğini ekranda görebiliyorum.  Fakat okuma kısmına geldiğimde değer hiçbir şekilde değişmiyor. Acaba ben I2C okuma yazma kısmındamı hata yapıyorum anlamadım.

Mucit23

Alıntı yapılan: justice_for_all - 13 Kasım 2011, 21:29:31
microchipin hazir bi programi var bunun icin ama application libraries dosyasini indirmeniz gerek onun icinde graphics klasorunde direkt olarak resimleri hex oda ceviriyo ve pice atiyo hem seri port hemde usb secenegi var..

Hocam onuda bi inceleyeyim :)

ByTEK

Umut Kazanç Benim dediğim yöntemi gerçekleştirmiş :) boşuna kodlarla kafayı yemişim akşamdan beri :)

Kolay gelsin..

Mucit23

Hocam umutkazancın programını çalıştırabilsem tüm düğümler çözülecek aslında ama hiçbirşekilde glcdye görüntü gelmiyor....

Mucit23

Alıntı yapılan: 3L3CTRO - 13 Kasım 2011, 20:19:42
   Eğer tek tek Girmeye Kalkarsan Evet çok uzun sürer ama onun yerine fazlalıklardan kurtulabiliriz (Notepad değiştir komutu ile) ve geriye sadece aşağıdakiler kalır.

00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
80,80,C0,C0,E0,E0,F0,F0,F8,F8,F8,F8,F8,F0,F0,E0
E0,C0,C0,80,80,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
80,80,C0,C0,E0,E0,F0,F0,F8,F8,7C,7C,3E,3E,1F,1F
0F,0F,07,07,03,03,01,01,00,00,00,00,00,01,01,03
03,07,07,0F,0F,1F,1F,3E,3E,7C,7C,F8,F8,F0,F0,E0
E0,C0,C0,80,80,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
80,80,C0,C0,E0,E0,F0,F0,F8,F8,7C,7C,3E,3E,1F,1F
0F,0F,07,07,03,03,01,01,00,00,00,00,00,00,00,00
00,E0,F0,F8,FC,FE,FE,7F,3F,1F,1F,1F,1F,3F,7F,FE
FC,F8,F0,E0,00,00,00,00,00,00,00,00,00,01,01,03
03,07,07,0F,0F,1F,1F,3E,3E,7C,7C,F8,F8,F0,F0,E0
E0,C0,C0,80,80,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
00,00,80,C0,E0,E0,F0,F0,F8,F8,FC,FC,FE,FE,3F,1F
0F,0F,07,07,03,03,01,01,00,00,00,00,00,00,00,00
1F,1F,1F,1F,FF,FF,FF,FF,FF,1F,1F,1F,1F,00,00,00
00,07,0F,1F,3F,7F,FF,FE,FC,F8,F0,E0,C0,80,00,01
01,01,01,01,00,00,00,00,00,FF,FF,FF,FF,FF,FF,DF
DF,DF,DF,1F,1F,1F,00,00,00,00,00,00,00,01,01,03
03,07,07,0F,0F,1F,1F,3E,FE,FC,FC,F8,F8,F0,F0,E0
E0,C0,C0,80,00,00,00,00,00,00,00,00,00,00,00,00
00,00,01,03,07,07,0F,0F,1F,1F,3F,3F,7F,7F,FC,F8
F0,F0,E0,E0,C0,C0,80,80,00,00,00,00,00,00,00,00
00,00,00,00,FF,FF,FF,FF,FF,00,00,00,00,00,00,00
00,80,80,80,80,80,80,01,03,07,0F,1F,3F,7F,FF,FE
FC,F8,F0,E0,00,00,00,00,00,FF,FF,FF,FF,FF,FF,FB
FB,FB,FB,F8,F8,F8,00,00,00,00,00,00,00,80,80,C0
C0,E0,E0,F0,F0,F8,F8,7C,7F,3F,3F,1F,1F,0F,0F,07
07,03,03,01,00,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
01,01,03,03,07,07,0F,0F,1F,1F,3E,3E,7C,7C,F8,F8
F0,F0,E0,E0,C1,C1,81,81,01,00,00,00,00,00,00,00
00,03,0F,1F,3F,7F,FF,FC,F8,F0,F0,F0,F0,F8,FC,7F
7F,3F,1F,0F,00,00,00,00,00,01,01,01,01,81,81,C1
C1,E1,E1,F1,F1,F9,F8,7C,7C,3E,3E,1F,1F,0F,0F,07
07,03,03,01,01,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
01,01,03,03,07,07,0F,0F,1F,1F,3E,3E,7C,7C,F8,F8
F0,F0,E0,E0,C0,C0,80,80,00,00,00,00,00,80,80,C0
C0,E0,E0,F0,F0,F8,F8,7C,7C,3E,3E,1F,1F,0F,0F,07
07,03,03,01,01,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
01,01,03,03,07,07,0F,0F,1F,1F,1F,1F,1F,0F,0F,07
07,03,03,01,01,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00


Bunuda editör ile işlersek sanrıım sorun çözülür.. Hemen çalışmalara başlıyorum..

Kolay gelsin..

Hocam bu notpad ile değiştir işleminin ayrıntılarını anlatabilirmisiniz. Nasıl dosya içerisinden sadece dataları alıyorsunuz.

ByTEK

Öncelikle Senin verdiğin data bilgilerinin tamamını notpad uygulamasına kopyaladım

Ve sırası ile değiştir(Ctrl+H) diyerek :

Aranan : CDATA
Yeni Değer : {Boş geçiyorsun- hiç birşey yazma}
Tümünü Değiştir dediğinde CDATA yazanlar siliniyor..

Bunu diğer silinmesini istediğim şeyler içinde yapıyorsun ve sonuç olarak temizleniyor. Birde ' ' boşlukları silmek için ise aranan bölümüne ' '{sadece space tuşuna 1 defa bas} ve tümünü değiştir dediğinde en sade hale geliyor. Bunları ascii ifadeye çeviren program sağlıklı çevirmiyor nedenini anlayamadım doğrusu üzerinde bayağı çalışma yapmak gerek...

Kolay gelsin.




Mucit23

Teşekkür Ederim. Bende dün akşam biraz uğraştım fakat eeproma veri yazıp okumada biraz sorun yaşadım. Hala çözemedim.

ByTEK

Alıntı yapılan: Mucit23 - 14 Kasım 2011, 11:16:38
Teşekkür Ederim. Bende dün akşam biraz uğraştım fakat eeproma veri yazıp okumada biraz sorun yaşadım. Hala çözemedim.

dün akşam bende bayağı uğraştım açıkçası.. en sonunda 24c256 ya resim kodlarını pic ile yükledim ve oradan okuyup 3310 lcd ye basmayı denedim ama olmadı :| birde çok yavaş oluyor tek tek adresleri okuyup lcd ye basmak acaba isiste çalıştırdığım için mi ?

Mucit23

Hocam veri yazarken her yazma işlemi sonrası 5-10ms beklemek gerekiyor. Bu çok önemli. Bendeki resim dataları 1024 Byte tutuyor. Yani nerden baksan Bi resmi eproma yazmak 1-1,5 Sn sürüyor. Ama okumada böyle bir bekleme yapılması gerekmiyodu. Bu yüzden gayet hızlı bir şekilde okuma yapılabilir diye düşünüyorum. Ben tüm deneylerimi deney seti üzerinde gerçekleştiriyorum. Simülasyonda daha hiç uğraşmadım. Akşam yine çalışacağım bu konu üzerine. eeprom ile pic arasındaki iletişim sorunun çözemeye çalışayım.

ByTEK

#26
Anladım Teşekkür ederim..

Aslında elimde donanım olsa seri port üzerinden eeprom programlayan basit picli bir devre yapacaktım.. bir program yazıp resim değerlerini seriport üzerinden pice oradan da eeproma aktaran ama maalesef elimde donanım yok..

----------------------------------------

Aslında elimde kullanabileceğim malzemeler varmış.. Hemen çalışmalara başlayacağım. Çoktadır aklımda olan bir projeydi.. Bittiğinde açık kaynak olarak paylaşırım.. Görüşmek üzere..

Mucit23

Hocam kolay gelsin diyorum size. Umarım sorunla karşılaşmazsınız.

Bu eeproma benim başıma bela oldu... Eepromları test etmek için ufak bir program yazdım. Simülasyonda denedim çalışıyor. ama gerçekten okurken hep $00 okuyorum. Acaba eepromlarmı bozuk. elimde 3 adet 24c64 iki adet 24c32 bir adette 24c02 var. Hepsinde aynı sonucu alıyorum. Protoncu arkadaşlardan yardım bekliyorum. Acaba yazılımımdamı bir sorun var. Gerçekte SCL ve SDA hattını 4k7 ile pull-up yapmışım. Bir yerlerde sorun olmalı

Device 18F452
Config_Start
   OSC = HS ; HS
   PWRT = OFF ; Disabled
   BOR = OFF ; Disabled
   WDT = OFF ; Disabled
   LVP = OFF ; Disabled
Config_End

Xtal 20

TRISA=%00000000
TRISB=%00000000
TRISD=%00000000
TRISC=%00000000
TRISE=%00000000

PORTA=0:PORTB=0:PORTD=0
    PORTE=0:PORTC=0

    Declare LCD_DTPin = PORTB.0
    Declare LCD_RSPin = PORTB.4
    Declare LCD_ENPin = PORTB.5
    Declare LCD_Interface = 4
    Declare LCD_Lines = 2
    Declare LCD_Type = 0
    Declare LCD_CommandUs = 2000
    Declare LCD_DataUs = 50

    Declare SCL_Pin	= PORTC.3
    Declare SDA_Pin	= PORTC.4
    Declare Slow_Bus On

All_Digital = True	
Symbol BUZZER=PORTB.7

Dim Char As Word
Dim ADR  As Byte
Dim X    As Byte
Dim DLY  As Byte
Dim WRITING As Byte
Dim READING As Byte
DelayMS 300
Cls
BASLA:    
           High PORTD.0
           For Char=0 To 10
              ADR=char+10
             BusOut $A0,Char,[ADR]:DelayMS 10
             WRITING=ADR
             GoSub EKRAN
             DelayMS 700
           Next
           High PORTD.1
           For Char=0 To 10
             ADR = BusIn $A0,Char:DelayMS 10
             READING=ADR
             GoSub EKRAN
             DelayMS 1000
           Next
           High PORTD
           Cls
           Print At 1,1,"YAZMA VE OKUMA"
           Print At 2,1,"TAMAMLANDI.."
           High BUZZER:DelayMS 1000:Low BUZZER
Stop

EKRAN:
   Print At 1,1,"YAZILAN $",Hex2 WRITING
   Print At 2,1,"OKUNAN  $",Hex2 READING
Return

Pir-O

ADR = BusIn $A1,Char

Okuma yaparken Slave address $A1 olmalıdır. Sıfırıncı bit okuma yazma (R/W) bitidir okuma yapılırken bı bit 1 yapılmalı bir de böyle deneyin.

Mucit23

Büyük bir umutla denedim ama değişen birşey olmadı malesef.