Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
Sayfa: 1 [2] 3 4   Aşağı git
Yazdır
Gönderen Konu: C64 ARDUINO DMA  (Okunma Sayısı 34213 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
msvstpl
Üye
***
Mesaj Sayısı: 64


Üyelik Bilgileri
« Yanıtla #15 : Aralık 12, 2015, 14:22:27 ÖS »

Sorun çıkmasını beklediğim 5—9 aşamalarına yöneldim. Burada değişik kombinasyonları, değişik DMA tiplerini, değişik pin sinyal gönderme tiplerini, ve değişik sinyal aralıklarını oluşturmayı denedim. Epey uğraştırdı. Biraz böyledir, ne kadar kurcalarsanız, o kadar fazlasını öğreniyorsunuz. Eh.., bir inceleme başka türlü olmaz zaten, ama , bukadar sürmesini de beklemiyordum.., neyse , sonuçta aşağıdaki bilgiler ortaya çıktı:

Çeşitli DMA lar (yazmalar) yapılabilir durumda. Bunlar birbirine yakın hardware sahip ve  küçük farklar var. Temel yapı  yukarıdaki Arduino pin konfigürasyonu, bazısında bir-iki pin kullanılmıyor kiminde ek bir pin ve logic kullanılıyor..vs. Uzun anlatıp dikkat dağıtmak istemiyorum,aşağıda tercih ettiğim bir tip ile devam edeceğim. Bu yapıda Logic terk edilmiş durumda. (7400 kullanılmayacak). İşlerin hepsini arduino yapıyor : 2X74374 ve 74245 temel elemanlar ve aynı bağlantıdalar. İşlem aşamaları yukarıda tarif edilenin aynısı.

74245’in DIR ucu OUTPUT PinC2 ye bağlı. Bu pin şimdilik hep High durumunda. A dan B ye geçiş sağlıyor (A: Arduino tarafı, B:C64 tarafı) , yani yazma işlemini sağlıyor. Pin Low olduğunda B den A ya geçişi sağlayacak yani okuma yapılabilecek.
 
Görünen o ki, hatanın olduğu yer hardware değil , arduino da değil, yazılım. Önce şunu tekrar edeyim: Arduino’nun hızına başvurulan kritik yerde (yani yazma ) aşamasında 3 basamaklı bir işlem var. Birincisinde READ ile bir sinyal (C64 clock High) algılanıyor.  Sonra R/W Low sinyali ve OE Adres ,Data Buslarını açan Low sinyali. Sonra bu iki sinyalin sırayla high ile ‘kapanması’. Bildiğimiz;  bu sinyalerin (R/W, OE)   C64 High da iken yapılması gerektiği. Ama High’ın neresinde başlayacağız , hangi aralıkla (iki sinyal arasındaki aralık) , ve ne kadar süreyle ?  Bilinmeyen 3 önemli şey bu.  Problemi yaratan da bunlar. Burada elimde durumu izleyebileceğim başka bir araç yok. Böyle bir araç var mı onu da bilmiyorum? Osilaskop da burada işe yaramayabilir, çünkü size bir davranış türü gösteren C64 var (sadece clock değil , data ve adres bus’nı kullanmakta olan VİC’le beraber..) ve bu davranışı çok iyi tanımıyorsunuz ! Neyse sonuçta, doğru başlangıcı , aralığı ve süreyi buldum( yada problem çıkartmayan yapıyı buldum)  hatalı yazımlar ortadan kalktı. Bu konuya daha sonra tekrar dönmeye çalışacağım.

Denemeler esnasında enteresan durumlarla da karşılaştım. Bunlara da sonra bakarız.
 
Yazma işlemini yaptığınızı anlamanın tek yolu vardır. Uygun şekilde test etmek. Sıra burada;

Test hakkında biraz bigi vereyim ; DMA ile önce 255 adreslik ekran bölgesini sonra tamamını sonra değişik adres bölgelerinde değişik Kbyte dataları yazıp kontrol ettim. Bu sayede hataları yakalama olanağım oldu. Tamam dediğiniz bir anda 8Kb yazmanın içinde 4-5 adresin yanlış yazıldığını görüyorsunuz ! Güvenebileceğiniz hiçbir şey yok yani. Yöntem olarak bir hafıza bölgesine yazacağınız program,oyun, rakam.vs ne ise başlangıcından sonuna kadar bütün adreslerdeki sayıların toplamını buluyorsunuz. DMA ile yazdığınızda adreslerdeki toplam aynı olması gerekiyor. Son testi 8 K ile yaptım : 0_255 arasındaki sayıları ard arda bir hafıza bölgesine gönderiyorsunuz sonra Basicte program veya ekranda iki satır içinde komut olarak kabul edecek şekilde mini bir toplama ve print  programı yazıp o hafıza bölgesini topluyorsunuz. Örn: 8 K yazılan bir bölgede : A=0:FORB =32768 TO 40959 :K=PEEK(B):A=A+K: PRİNTK;:PRİNTA : NEXT ve RETURN Bütün adresleri izliyebiliyorsunuz (Tabi biraz sabırla.)PRİNT,  NEXT ten sonra da olabilir, daha çabuktur, sadece sonuç gelir.. Toplam: 1044480.

Buraya kadar ARDUINO kullanarak adres ve data bus entegreleriyle DMA yazma işlemi tamamlanmış oluyor. Program loop adresleri değiştirilerek hafıza bölgesinin seçilmesi ,ayrıca, data değeri istenilen bir dış bellekten alınması mümkündür. Sonuçta bu program diğer başka işler yapıldıktan sonra veya onlarla beraber bir DMA yazma alt rutini olarak kullanılacaktır.
Logged
msvstpl
Üye
***
Mesaj Sayısı: 64


Üyelik Bilgileri
« Yanıtla #16 : Aralık 12, 2015, 14:27:20 ÖS »

Burada biraz ara verip yapılan işlerle ilgili değişik bazı ek bilgiler , değendirmeler ve düşünceleri belirtmek istiyorum:

1-- Arduino Start anında, açılışta (normal durum diyelim) I/O digital PIN leri INPUT olarak ve hepsi Low şeklinde hazırlıyor. Bu durum “HI-Z”demek yani C64 ün data ve adres buslarına arduino karışmayacak demek. Bir çakışma ,karmaşa.. vb yok demek. Çok aranılan bir durum hazır olarak geliyor. Yine, DMA ve R/W hatlarına dokunulmaması gerekiyor. Arduino tarafında bu pinlerin INPUT da olması problemi engelliyor. Arduino ‘nun pinleri aslında INPUT “float “ durumunda, ama sorun çıkarmamaya yeterli, HI-Z kabul ediliyor.

2--- Yazılımda işlemleri gereken yerlerde açık bit operandları ile yaptım. C64 ün assembly dilini kullananlar veya kullanacak olanlar için anlamada kolaylık olacağını düşündüm.

3-- Arduino pinlerinin ayrıntılı kullanımını ve bit operasyonlarını yazılımın içine ayrıca açıklamalarla koydum. Oradaki bazı açıklamaları buraya almadım.Burada daha çok İşlem aşamalarının anlaşılmasını önemsedim. Aşamalar eğer yazılım ile birlikte adım adım okunursa daha kolay anlaşılabilecektir.

4--C64 DMA sında insanın başlangıçtaki beklentilerini yanıltan bir durum var. DMA yı ve onun C64 ile iç ilişkilerini hep digital sinyal olarak izliyorsunuz ,düşünüyorsunuz. Biraz bu nedenle, biraz da hardware ile uğraşmanın alışkanlığından, logic ile yapılacak şeylerin olduğunu ve işin bir kısmının bu yolla yapılması gerektiğini varsayıp, birşeyler tasarlıyorsunuz. Oysa DMA nın basit hali sözkonusu olduğunda buna gerek kalmıyor. Şaşırdığımı söylemeliyim. 3 Aşamalı DMA işlemin birbirinden bağımsız olması mikroişlemcinin yazılımla istenilen logic gerekleri karşılanmasını olanaklı kılıyor.

5--1 klon arduino +2X74LS374+1X74LS245 (DIP entegreler) toplam 87mA çekiyor. 74HC245 ve 74HC374 kullanıldığında 20 mA çekiyor. Büyük fark var. Kullanılacak entegrelerin ne olması gerektiği tartışmasız ortada.

6—-Burada arduino kelimesine açıklık getireyim. Arduinonun kullandığı Atmega 328 p pu entegresine  bir tür “ format” (boot-bootloader) atarak ‘arduino’ haline getiriyoruz. Klon bir arduino entegresi elde ediyoruz. Arduinonun diğer ek unsurları ( regülatör, usb..vs)tabi ki yok , gerek de yok. Sadece yazılımı ve pinlerini kullanıyorum. Bu konuda internette bol miktarda yazı var.Uno’ya ek bir küçük kart yaptım bootloader ve program yüklemesini bu kart ve uno ile beraber yapıyorum. Galiba ek bir donanım yapmadan örn 2 uno kullanıp ,birinden entegreyi çıkartıp kullanılacak yeni 328 p pu yu koyup diğer uno aracılığıyla da bu işi yapabiliyorlar. Bu da kolay bir iştir. İsteyen ise bununla uğraşmaz arduino mini’yi doğrudan kullanabilir. Yüksek miliamper çekmeyecektir.



* Arduino Klonlama devresi.JPG (601.89 KB, 1158x868 - Görüntüleme: 3106 kez.)
« Son Düzenleme: Aralık 12, 2015, 21:35:28 ÖS Gönderen: msvstpl » Logged
msvstpl
Üye
***
Mesaj Sayısı: 64


Üyelik Bilgileri
« Yanıtla #17 : Aralık 12, 2015, 14:33:03 ÖS »

8--Bir de şöyle bir şey var; sorunları çözerek ilerliyorsunuz, yeni sorunlara odaklanırken, çözüp geçtiğiniz eskisinden uzaklaşıyorsunuz, oysa hepsi sorun.., ama, siz onu geçtiğinizden önemsizmiş gibi oluyor. Değerlendirme ,açıklamayı atlayabiliyorsunuz. Konuyu toparlarken boşluklar ve kopukluklar varsa bundandır, özür..
9--DMA yazma işleminde arduino göndereceği her yeni datayı (çoğunlukla 2 veya3) X c64 clock’nda hazırlıyor.( 3. veya 4.) de gönderiyor.
a- DMA ya girerken 5 mikro sn gecikme kullanıldığında 2 cycle boşa harcanmış oluyor.Çıkarken de kayıp 2 cycle var. 4 Cycle kayıbın hiçbirşey ifade etmediği ortada.
b- 8Kblık (8192kez) data gönderimi kabaca 8,2 X3 = 24,6 milisn. Ayrıca arada VIC’in ortalığı kapladığı BA low lar var , bunlarda hesaba katılmalı. C64 açılış sonrasında, analyzer 8kb ın 28,3 mili sn de gönderildiğini gösteriyor. (Bir kısım datanın 4 cycle da gittiğini düşünürsek) hesap hemen aynı. Oldukça kısa bir zaman. Kabaca 280kb/sn lik bir hız. Ancak DMA yapılacak program, oyun.vs bir ‘dış’ hafızadan alınacaktır , hız düşecektir.
10--Bu konu ile ilgili başlığı açarken, ikilemde kaldığımı belirtmeliyim. İzlemek isteyenlere yazılanlar belki biraz - öyle olmadığı halde- ağır gelebilecektir , hatta can sıkabilecektir. Öte yandan DMA –belki telif hakları ..vs nedeniyle - daha çok bir gizemin arkasında kalmış. İngilizce sitelerde bilgiler bağlantısız kesik kopuk ,birkaç cümle, belki biraz açıklama ,ama yine pek çok belirsizlik.. Amacım olabildiğince açıklayıcı bir tür kullanılabilir bir kaynak oluşturmak. DMA yı geçtikten sonra C64 için başka çok şeyi yapabilme imkanı olabilecektir. Bu nedenlerle başlığı açmanın daha doğru olacağını kabul ettim. Yazılanlara ilgilenmek isteyen ama fazla bir şey anlamayan arkadaşlar için şunu söylemek isterim: Burada yapılan işlerin hepsi sadece 5 volta bir LED bağlayıp yakmak zorluğundadır. Fark biraz sabır biraz düşünmek ve birikim oluşturmaktadır. Hepimiz aynı yöntemi kullanırız: bir yerde takılırız ve kurcalamaya başlarız. Bu bizim kavram oluşturma sürecimizdir, biraz deneriz,biraz düşünürüz, biraz okuruz, biraz oynarız .., sonunda LED’i yakarız. Artık onu biliriz ve istediğimiz yerde kullanırız. Burada anlatılanlar, benzer diğer kavramların toplamı gibidir. Herkes istediğinde elde edebilir, yapabilir, çekinilecek, anlaşılamayacak hiçbirşey yoktur.
 
11--(Logic Analyzer ekranına bakarak söylersem) İşin ilk püf noktası R/W sinyalini mümkün olabildiğince c64 clock bir önceki high’e yaklaşarak başlatmak. Yani R/W low sinyali c64 clock low iken ve ‘elden geldiğince’ geriden başlamalı. (Adres ve data) bus enable OE sinyalinin de gecikmeden R/W e yakın olarak başlaması gerekiyor. (Çıkan sonuç : 6510 Ram’e yazma işlemini c64 clock low dan high ‘a geçerken gerçekleştiriyor. Durum bunu gösteriyor. İngilizce yazılarıda böyle bir ifade ile karşılaşmadım ? )

12--16Mhz lik bir işlemcinin değişik operand sonrasında sinyallerinin ne kadar temiz olduğunu bilmiyorsunuz.(işlemcinin clock hızıyla çalıştığınızda clockla ilişkili sinyallerin kendisindeki temiz olmayışlar bir sorundur,arduinoda bazı sinyal bozulma resimlerini görmüştüm). İşlemcinin her clock’unu değerlendirmeye çalışıyorsunuz. Yazma çevrimine başlarken mikroişlemci input( ile c64 high sinyalini) read yapıp yakalarken belirsiz bir zaman gecikmesi var. R/W ve OE sinyalinin her c64 açılışında ve yazma anında topluca kaymış yer değiştirmiş olduğunu görüyorsunuz. Bu kaymaların yanlış DMA yazmaların temel sorumlusu olduğunu sanıyorum. Bunlar da belirsizlikler.. R/W sinyalini olabildiğince geriye çekmenin faydası burada ; ileri kaydığında emniyetli yazma sınırı içinde kalabiliyor.( R/W Çok geri aldığınızda ise tamamen işe yaramayan bir bölgeye düşüyorsunuz ).



*  (217.09 KB, 1022x576 - Görüntüleme: 3024 kez.)
« Son Düzenleme: Aralık 12, 2015, 21:41:20 ÖS Gönderen: msvstpl » Logged
msvstpl
Üye
***
Mesaj Sayısı: 64


Üyelik Bilgileri
« Yanıtla #18 : Aralık 12, 2015, 14:36:40 ÖS »

Tabi bu konuların hepsi 16 MHZ bir işlemcinin davranışı. 32 veya 64 Mhz işlemci ile daha kolay çalışılabileceğini varsayabiliriz .Yalnız, yazılımdaki nop ların çokluğuna bakılırsa ,16 Mhz mikroişlemcinin kendisi bakımından sorun yok gibi gözüküyor. Sorunu çıkaran C64 gibi. İlk gözağrısı bir bilgisayarın biraz nazına katlanmayı da normal kabul etmemiz gerekiyor.
 
Bu son iki maddeye daha sonra tekrar dönmek istiyorum.

Bazı Görüntüler



*  (551.99 KB, 1286x965 - Görüntüleme: 3062 kez.)
« Son Düzenleme: Aralık 12, 2015, 18:48:44 ÖS Gönderen: Simon (Özay Turay) » Logged
msvstpl
Üye
***
Mesaj Sayısı: 64


Üyelik Bilgileri
« Yanıtla #19 : Aralık 12, 2015, 14:41:27 ÖS »

diğerleri;



* 2X74373_ 1X74245.JPG (399.12 KB, 772x579 - Görüntüleme: 2706 kez.)
« Son Düzenleme: Aralık 12, 2015, 18:49:08 ÖS Gönderen: Simon (Özay Turay) » Logged
msvstpl
Üye
***
Mesaj Sayısı: 64


Üyelik Bilgileri
« Yanıtla #20 : Aralık 12, 2015, 14:43:10 ÖS »

Arduino



* Arduino.JPG (445.4 KB, 858x643 - Görüntüleme: 2852 kez.)
« Son Düzenleme: Aralık 12, 2015, 21:44:35 ÖS Gönderen: msvstpl » Logged
msvstpl
Üye
***
Mesaj Sayısı: 64


Üyelik Bilgileri
« Yanıtla #21 : Aralık 12, 2015, 14:45:01 ÖS »

expansion port



* Expansion Port.JPG (390.9 KB, 1072x804 - Görüntüleme: 3040 kez.)
« Son Düzenleme: Aralık 12, 2015, 18:53:29 ÖS Gönderen: Simon (Özay Turay) » Logged
AmigaMan
Deneyimli
*****
Mesaj Sayısı: 635



Üyelik Bilgileri
« Yanıtla #22 : Aralık 12, 2015, 14:45:37 ÖS »

Çok güzel çalışma ellerine emeğine sağlık
Logged

Amiga ölmedi, efsane uyuyor
msvstpl
Üye
***
Mesaj Sayısı: 64


Üyelik Bilgileri
« Yanıtla #23 : Aralık 12, 2015, 14:49:40 ÖS »

Yazma işlemini tamamladık. Sıra okumada. Arduino bu kez yine bir RAM adres değerini hazırlayacak  ardından C64 adres ve data bus’na bağlanacak. Data için yazmada bir değer göndermişti, şimdi bir şey göndermeyecek , alacak (okuyacak). Yazmada olduğu gibi 2. aşama  bu işlem için yine DMA low sinyalinin baştan hazırlanarak gönderilmiş olması gerekiyor.

Okumayı yapabilmek için yazmada olduğu gibi yine iki sinyale ihtiyaç var. R/W ve OE.  Bu kez  bir kolaylık var. R/W okuma için High olması gerekiyor. C64 ün iç yapısında R/W bir dirençle Vcc yapılıp High da tutulmuş.(Pull-up). Yani bu sinyale ilgili bir şey yapmamız gerekmiyor. Normal durum read durumu. Bu sinyali bozacak olan sadece 6510, o da izole durumda. DMA ya girdikten yani DMA low sinyalini uyguladıktan sonra analyzer ‘da read sinyali hep high da gözüküyor.

Farklı bir şey daha var 74245 data bus entegresinin yönünün değiştirilmesi. Bu iş entegrenin DIR ucuna uygulanan sinyalle yapılıyor.  High olduğunda A dan B ye geçiş yani Arduinodan C64 ‘e doğru (yazma). Low olduğunda B den A ya yani C64 ‘den Arduinoya doğru yani okuma. Bu işi arduino’nun C2 pini yapıyor. Uygun yerde C2 pini low yapılacak.

Diğer bir konu Arduino üç entegreyi de aynı D registeri ve yolları (D0…D7) üzerinden kullanıyor. Yazma esnasında her üç entegreye de OUTPUT  ile adres ve datayı hazırlıyordu. Oysa şimdi okuma var, yani, INPUT. D Registeri ( D nin I/O Pinleri) RAM adres değerlerini 74374 lere yüklerken yine OUTPUT olur, ama , bu işi bitirmesinden sonra INPUT durumuna geçmesi gerekecektir.

* C64 ARDUINO DMA OKUMA-YAZMA PROGRAMI.doc (40.5 KB - Yükleme: 294 kez.)
« Son Düzenleme: Aralık 12, 2015, 16:18:14 ÖS Gönderen: msvstpl » Logged
msvstpl
Üye
***
Mesaj Sayısı: 64


Üyelik Bilgileri
« Yanıtla #24 : Aralık 12, 2015, 14:54:01 ÖS »

Aşamalara başlayalım:

1-DMA ‘low yapılır. (yukarıdaki yazma program girişinin aynısı).

2-Şu ana kadar 74245 DIR High olarak kullanılmış veya düşünülmüştü, şimdi OUTPUT C2 Low yaparak yönünü değiştiriyoruz.

3- INPUT C1 pini yine BA High olmasını bekliyor.

4-(bu işlem uygun başka bir yerde de yapılabilir) OUTPUT B5ve OUTPUT B3 low yapılarak 74374leri adres değerlerini yükleyecek CLK high sinyallerine hazırlık.
5- PDO..PD7 ye alt adresi yazılıyor ve OUTPUT high clock (PB5) ile Alt adresi (A0…A7) 1. 74374’e kilitleniyor.

6-PD0..PD7 ‘ye bu kez üst adres yazılıyor ve OUTPUT high clock (PB3) ile Üst adresi (A8…A15) 2.74374’ e kilitlleniyor.

7—D pinlerinin hepsi OUTPUT idi, Burada hepsini INPUT yaptık.

Okuma hazırlığını tamamladık.
 
8— İNPUT C0 pini read ile C64 clock High olmasını bekler.

9— C3 OUTPUT LOW yaparak OE LOW sinyalini 2X74374 ve 74245’e gönderiyoruz. HI-Z ortadan kalkar ve 74374 ler C64 adres busına RAM adresini yazar. C64 data bus ,Arduino’nun, D0-D7 pinlerine bağlanır. RAM hafızadaki değer Arduino pinlerindedir.

10—Arduino D port pinlerinin hepsini PİND ile okur.

11—Okuma tamamlanmıştır. C3 sinyali (OE) HİGH yapılarak. Her 3 entegre C64 ile tekrar HI-Z durumuna getirilir.

Bukadar.



* C64 ARDUINO DMA OKUMA.jpg (230.52 KB, 1022x576 - Görüntüleme: 2981 kez.)
« Son Düzenleme: Aralık 12, 2015, 21:50:49 ÖS Gönderen: msvstpl » Logged
msvstpl
Üye
***
Mesaj Sayısı: 64


Üyelik Bilgileri
« Yanıtla #25 : Aralık 12, 2015, 14:57:34 ÖS »

Peki, RAM den okuduğumuz bir değerin doğruluğunu nasıl anlayacağız, testi nasıl yapacağız?

Okuduğumuz data  biryerde saklanmalı, rakamları tek tek yada toplayıp orijinal haliyle karşılaştırmamız  gerekiyor.  Datayı bir yerde saklamak demek arduinonun  hafızasını kullanmak yada bir dış hafıza unsurunu hardware bağlamak demek. İlki mümkün olsada bu arduinonun serial monitorü kullanması demek,  konuyu usb FTDI a getirecek, elimde FTDI yok, olsada burada işleri biraz karıştıracak. Bunu geçtim. Dış hafıza SD card..vs bunlar da konuyu değiştirecek..  Bir de  C64’ün içinde neyi okuyacağız? Ya bir oyun yada bir program yükleyip onun üzerinden çalışacağız, test uzunca bir iş, her seferinde yükle..vs,iş yükü artacak. Sonuçta şöyle bir yöntemde karar kıldım : Okuyacağımız şey sadece rakamlar ve zaten C64 içinde doğal olarak var: Basic ROM. Okuma programının ardına yazma programı ekledim. Basic Rom’un değişik KB larını okuyarak  boş bir hafıza bölgesine yazdım. Yani Bir hafıza bölgesini bir başka hafıza bölgesine DMA ile kopyaladım. Basit bir basic programıyla (peek)  ile bazen tek tek bazen de toplamları alarak karşılaştırdım.

Denemelerde önce 1KB bölge hatasız olarak (defalarca) kopyalandı. Aynı program  4 KB için 7-8 adresi yanlış okudu!  Düzeltilmiş yazılımla 8KB Basic Rom hatasız olarak kopyalandı. Sonuçta Toplam: 933206.

OE sinyalinin ne zaman açılacağı Okuma işleminin nekadar  beklenerek yapacağı, ne zaman bitirileceği  yine temel sorular..

Analyzer da okuma - yazma 8Kb programı 53 msn sürüyor. Bunun 28,5 ms yazma . Okuma ve Yazma zamanı birbirine yakın. Okuma bir hafızada saklandığında hız azalacaktır.

Sadece bir Okuma programını yapmak, Örneğin  1K lık arduino EEPROM’un içine koyan bir program da yazabilirdim. Yada  Sd kart ile oyun yükleyip çalıştırılabilirdim, ama amacım şu an bu değil. Konu olabildiğince sade kalsın. Daha sonra  başka şeyler olabilir, SD kard takılabilir..vs. Okuma yazma programında , okuma işlemine dair bütün bilgiler var. Uygun şekilde copy-paste edilebilir.. Görselik için yukarıdaki 8K test aşağıdadır. DMA geçen ‘parazit ‘ anı içinde. Basicte 8k (peek) ile toplanması uzun sürüyor.
Logged
msvstpl
Üye
***
Mesaj Sayısı: 64


Üyelik Bilgileri
« Yanıtla #26 : Aralık 12, 2015, 15:00:32 ÖS »

Basic Rom DMA kopyalama
OKUMA YAZMA

« Son Düzenleme: Aralık 12, 2015, 18:54:36 ÖS Gönderen: Simon (Özay Turay) » Logged
msvstpl
Üye
***
Mesaj Sayısı: 64


Üyelik Bilgileri
« Yanıtla #27 : Aralık 12, 2015, 15:01:24 ÖS »

Yukarıda anlatılan işlemlerin özelliklerini gerçekleştirdikten sonra her türlü hardware ile DMA yazma veya okuma yapmak mümkündür. Ben anlaşılabilirliği ve ulaşılabilirliği daha kolay olan bir yapıyı öne çıkarmayı tercih ettim.

Şimdilik ara vereyim.
Logged
msvstpl
Üye
***
Mesaj Sayısı: 64


Üyelik Bilgileri
« Yanıtla #28 : Aralık 12, 2015, 15:11:05 ÖS »

Görseller tamam tekar gerekmiyor..

« Son Düzenleme: Aralık 12, 2015, 21:59:45 ÖS Gönderen: msvstpl » Logged
msvstpl
Üye
***
Mesaj Sayısı: 64


Üyelik Bilgileri
« Yanıtla #29 : Aralık 12, 2015, 15:46:05 ÖS »

Word yanlış işler yapıyor. Benim bilgisayarda aynı isimli dosya farklı şeyler açıyor, okuma yazma programını yine yanlış gönderiyordum ;

Umarım bu sefer olur

C64 ARDUINO DMA OKUMA YAZMA PROGRAMI




* C64 ARDUINO DMA OKUMA-YAZMA PROGRAMI.doc (40.5 KB - Yükleme: 349 kez.)
Logged
Sayfa: 1 [2] 3 4   Yukarı git
Yazdır
Gitmek istediğiniz yer: