Enterprise Forever
:HUN => Hardver => Topic started by: Povi on 2014.October.08. 11:04:51
-
Nyitottam egy új topicot, ide át lehetne tenni az ezzel kapcsolatos hozzászólásokat.
Összefoglalásképpen itt a hivatalos Application Note, hogyan működik ez az egész:
http://ww1.microchip.com/downloads/jp/AppNotes/00579b.pdf
Van egy kis példaprogram is. Eszerint, ha a Z80 RD, vagy WR jelet küld a PIC-nek, az a PIC-en megszakitást generál.
-
Ide még összegyűjtöm a leírásokat, hogy könnyen megtalálható legyen a topic elején bármikor:
Using the 8-Bit Parallel Slave Port AN579 (http://ww1.microchip.com/downloads/jp/AppNotes/00579b.pdf)
Section 10. Parallel Slave Port (http://ww1.microchip.com/downloads/en/DeviceDoc/31010a.pdf)
A párhuzamos slave port általános jellemzői (http://www.t-es-t.hu/elokep/pic/felhkk/kk/sz1401.htm)
A párhuzamos slave port vezérlő regiszterei (http://www.t-es-t.hu/elokep/pic/felhkk/kk/sz1402.htm)
A párhuzamos slave port működése (http://www.t-es-t.hu/elokep/pic/felhkk/kk/sz1403.htm)
A párhuzamos slave port kezelése (http://www.t-es-t.hu/elokep/pic/felhkk/kk/sz1404.htm)
A párhuzamos slave port illesztése (http://www.t-es-t.hu/elokep/pic/felhkk/kk/sz1405.htm)
MODERN MICROCONTROLLERS AS VIRTUAL DEVICES FOR OLD MICROPROCESSOR SYSTEMS (http://www.ace.tuiasi.ro/users/103/Bind3.pdf)
-
Nézegettem a PIC-ek között és ráleltem a PIC16(L)F1459 típusra.
Ennek van beépített USB vezérlője és még marad kimenet is.
Tervem szerint a PIC RA0,RA1 re menne az USB+ USB- , RC0-RC7 lenne az EP B5 port billentyűzet értéke, az RB4-RB7 lenne az EP B5 port sorcím, az RA3-RA5 pedig lehetne egy INT a PIC-nek amit az EP WR0 / OUT (0B5h),A /.
Mivel ez a PIC akár 48MHz is működik így 12x több utasítást hajthat végre.
Ez elegendő lehet a normál 4 MHz es Z80A CPU-hoz.
Mert elég csak a pillanatnyi sor értékét ki írni.
-
Ja, ja, csak az a baj, hogy ez úgy nézem, nem támogatja a PSP módot. Meg Pickit 2 se égeti (nekem az van), hanem 3-as kell hozzá.
Amin meglepődtem, (pont ma néztem), hogy a 16f887-es se tudja a PSP-t, csak a 877-es, pedig az a régebbi modell.
-
Ahogy elnéztem a PSP-t csak olyan PIC támogatja ami minimum 40 lábú
Viszont a PIC16C765 PSP-t és USB 1.1 tartalmaz ez elég lehetne a billentyűzetnek de csak 24 MHz.
Ami csak 6x a Z80 hoz képest.
-
Ahogy elnéztem a PSP-t csak olyan PIC támogatja ami minimum 40 lábú
Sajnos ez se igaz, mert a 887-es is 40 lábú, még se tudja... :-)
Egyébként végre most 7végén úgy néz ki, lesz is egy kis időm foglalkozni vele.
-
áááá, ez se akar működni...
úgy néz ki, bennem van a hiba valahol
a PIC megkapja a 8MHz-et a gépről, el is indul rajta a program, egy 7szegmenses kijelzőre kirak egy nullát, de portolvasásra és írásra nem történik semmi...
port írásra a port alsó négy bitjét kéne hexában kiírni a 7szegmenses kijelzőre...
-
Sajnos ez se igaz, mert a 887-es is 40 lábú, még se tudja... :-)
Egyébként végre most 7végén úgy néz ki, lesz is egy kis időm foglalkozni vele.
Én nem azt írtam hogy, minden 40 lábú PIC támogtja hanem ami támogatja a PSP-t azok mind minimum 40 lábú.
-
áááá, ez se akar működni...
úgy néz ki, bennem van a hiba valahol
a PIC megkapja a 8MHz-et a gépről, el is indul rajta a program, egy 7szegmenses kijelzőre kirak egy nullát, de portolvasásra és írásra nem történik semmi...
port írásra a port alsó négy bitjét kéne hexában kiírni a 7szegmenses kijelzőre...
Milyen nyelven írod? assembleben lehet tudok segíteni.
-
mármint melyik assembly-re gondolsz? PIC, vagy Z80?
EP-ről csak sima port írást, olvasást küldtem BASIC-ből
a PIC-en lévő program pedig a gyári PSP-s példaprogram egy nagyon kicsit módosítva (egyébként volt benne hiba, lehet, hogy nem vettem észre mindet és azért nem működik)
-
mármint melyik assembly-re gondolsz? PIC, vagy Z80?
EP-ről csak sima port írást, olvasást küldtem BASIC-ből
a PIC-en lévő program pedig a gyári PSP-s példaprogram egy nagyon kicsit módosítva (egyébként volt benne hiba, lehet, hogy nem vettem észre mindet és azért nem működik)
Igen PIC assemblerről , egyébként milyen PIC 16xxxxx ?
-
16F877A
-
ezt a programot használtam, ami ennek az AN-nek a végén van:
http://ww1.microchip.com/downloads/jp/AppNotes/00579b.pdf
a 43. sorban van egy hiba, a movlw 0xff helyett clrw (vagy movlw 0x00) kellett volna
és ezek alapján még máshol is lehet... :-)
-
A 106 és 107 sornál mi értelme portD kiolvassa és D be rakja ????
A 107. sort talán MOVWF PORTD
-
A 106 és 107 sornál mi értelme portD kiolvassa és D be rakja ????
A 107. sort talán MOVWF PORTD
tényleg!
ettől még a port írásnak mennie kellett volna... :-)
félek, hogy valahol az init-nél lehetnek problémák
-
nem ismerem teljesen de nem kell minden új megszakításnál be állítani a megszakítás engedélyezését mint EP nél az out (0b4h),a.
FLAGREG lesz valahol a ludas valamelyik BCF, BSF re tippelek így hirtelen
PIC 16c74 en próbálkozol ?
-
Minden vissza térésnél :
bcf PIRx,PSPIF ;a megszakítás jelzőbit nullázása
retfie ;visszatérés a megszakításkezelésből
ezt kellene meg próbálni.
-
na, ami probléma lehet, mindjárt ki is próbálom:
induláskor alapból analóg a PORTE
ezt digitálisra kell állítani a PSP módhoz (ADCON1 regiszter)
-
mondjuk azt se értem, az INT vektort miért 0x05 címre teszi, amikor 0x04-re kéne...
-
mondjuk azt se értem, az INT vektort miért 0x05 címre teszi, amikor 0x04-re kéne...
Akkor: org 04
nop
.....
így próbáld nem lesz probléma
-
még mindig nem megy, úgy hogy előbb utóbb összerakom csak LED-ekkel (mivel TTL probe-om nincs), a buszbővítő meg tud hatjani egy LED-et (kb. 15-20mA lábanként)?
néha az exdos-kártyát se látja, kicsit játszani kell a bedugásnál, mondjuk az is igaz, hogy azon már talán oxidáltabb a csatlakozó.
vagy az EP-n is meg kéne tisztítani? (bár akkor szerintem 8MHz-et se kapna a PIC)
-
Ha nincs műszered de van 2 LED-ed 2 ellenállásod némi vezeték csinálhatsz egy H-L tesztert.
Én is ilyen kézi műszerrel ellenőriztem van-e jel változás.
Mert a normál digitálisról nem lehet pontosan kideríteni mit is mérek néha.
-
Még egy dolog próbáld 8MHz helyett 4MHz et
Elképzelhető hogy sokáig tartja a PIC INT-jét a Z80 -as.
Nem láttam a kapcsolási rajzot, lehet ott is vannak problémák.
-
MŰKÖDIK!!!!!
PIC-et rákötöttem az EP-re, és működik a PSP mód! Határtalan lehetőségek nyílnak az EP-s tábor előtt! :-) Este rakok fel képeket, egyelőre csak LED-eket villogtatok, és még csak a port írást teszteltem.
De!!! A PIC-en van SPI és I2C port, amit aztán EP-ről el lehet majd érni! Első körben egy RTC modult kötök rá I2C porton.
-
https://youtu.be/vFT5-7WoZ1E
-
jelentem: működik az RTC!!!!
-
Nagy!
Milyen RTC chipet használtál?
-
Nagy!
Milyen RTC chipet használtál?
this one>
https://www.hestore.hu/prod_10038042.html
(I am Povi hacking LGB's PC) LGB: no, not really, just too much beer :D
-
No, most már működik a dátum beállítása is!
És csináltam gyorsan egy progit is, ami lekérdezi az I2C buszon lévő eszközöket.
Kérdés a gurukhoz: mi legyen a készülődő új kártya portcíme?
-
újabb fejlemény:
most már állítható a I2C busz sebessége, a default 400kHz-ről 100kHz-re is.
a PIC egyik lábát rákötöttem a Z80 /WAIT lábára, hogy megállítsa a Z80-at, miközben dolgozik, azonban így se tökéletes: mivel a PIC már csak akkor állítja 0-ra a /WAIT lábat, miután ráfutott a megszakítási rutinra, ezért egy kis idő eltelik. A tapasztalatom szerint két Z80 port írás/olvasás utasítás között 12 órajelnek el kell telnie (4MHz-es gépen), hogy biztosan jól működjön (néha a 8 is elég, de nem mindig). Szóval ha port írás után rögtön olvasnánk, akkor sajnos be kell szúrni három NOP-ot, vagy egy INC HL/DEC HL-t (ez is 12 órajel, de egy bájttal rövidebb). Szóval a lényeg: két portművelet ne legyen közvetlenül egymás után, legyen közte 12 órajelnyi egyéb művelet is!
BASIC-ből rögtön lehet használni az OUT és IN utasításokat egymás után, az interpreter volta miatt bőven több, mint 12 órajel telik el a két utasítás között :-)
Port kérdés: ez a lista (http://ep.lgb.hu/doc/ports.html) vajon mennyire jó?
Ahogy nézem, az ismétlődések nincsenek benne (pl. APU elvileg 0x50..0x57 porton látszódik, de itt csak a "hivatalos 0x50..0x51 port van feltűntetve). Csak amiatt, hogy milyen portot foglaljak le magamnak? (pl. gondoltam a 0x2c portra, ha már i2c :-)).
De mi van pl. 0x02-vel? Elvileg nincs ott semmi, gyakorlatban nem látszik ott is a Mészáros-féle egérkártya?
-
Azt hiszem, meg kell nézni a soros kártya rendszerét, mert néha a portok dekódolása nem helyes, és megduplázódik.
A1 és A2 címsorok, ahol a bal oldali lebegő, így a 0x00 port a 0x02 és 0x04 & 0x06, és a 0x01 a 0x03 és 0x05 & 0x07 tükröződik.
0x08 és 0x0f között még mindig szabad.
-------------------------_
I think you should look at the scheme of the serial card, because sometimes the decoding of the ports is not correct and is duplicated.
A1 and A2 address lines where left floating so port 0x00 is mirrored on 0x02 & 0x04 & 0x06 , and 0x01 is mirrored on 0x03 & 0x05 & 0x07.
0x08 to 0x0f are still free.
(http://www.ep128.hu/Ep_Hardware/Pic/Rajz_Sorosk.gif)
-
oké, akkor a 8-as portot elfoglalhatom? (hátha sorozatgyártás is lesz belőle :-) )
ok, should I occupy the port 0x08?
-
08-0Fh az már SID kártya (https://enterpriseforever.com/hardver/sid-illesztes-ep-hez/msg48161/#msg48161) :oops:
-
0x28? az szabad még?
-
A SE-ONE # 20 - # 27, feltételezem, hogy a többi szabad.
--------
SE-ONE is at #20 -#27, I assume that the rest are free.
-
08-0Fh az már SID kártya (https://enterpriseforever.com/hardver/sid-illesztes-ep-hez/msg48161/#msg48161) :oops:
2015 óta áll a SID kártya. Nem akarok okoskodni, de akkor ne tartsátok fent a 08-0Fh-t neki...
-
ne tartsátok fent a 08-0Fh-t neki...
Amikor már az emulátorban is benne van, és lejátszó is van hozzá?
-
Azt hiszem, még mindig nincsenek hozzárendelt kikötők, amit csak meg kell tennünk, nem rossz dekódolással.
Az I2C busz érdekes ténye, hogy 112 - 1136 csomópont csatlakoztatható (a szabványtól függően), a NET-hez hasonló módon. Minden csomópont lehet processzor, memória, RTC-k, LCD-képernyők stb (https://rn-wissen.de/wiki/index.php/I2C_Chip-%c3%9cbersicht).
-------
I think there are still enough unassigned ports, what we just have to do is not to waste them with bad decoding.
The interesting fact about the I2C bus is that it can have from 112 to 1136 nodes connected(depending on the standard), in a way much similar to the NET:. Every node can be a processor, memory, RTCs, LCD screens, and more (https://rn-wissen.de/wiki/index.php/I2C_Chip-%c3%9cbersicht).
-
Azt hiszem, meg kell nézni a soros kártya rendszerét, mert néha a portok dekódolása nem helyes, és megduplázódik.
A1 és A2 címsorok, ahol a bal oldali lebegő, így a 0x00 port a 0x02 és 0x04 & 0x06, és a 0x01 a 0x03 és 0x05 & 0x07 tükröződik.
Ha megbontod az U3 IC 1 láb /A3/
A3 --------- U3 1
A3 --- X --- U3 1
közbe raksz sorosan pl. 1n4148
A1 ---|>--- U3 1
és így teszel az A1,A2
A1 ---|>--- U3 1
A2 ---|>--- U3 1
megszűnik a tükröződés.