Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » P8000 - WDC ATA » Themenansicht

Autor Thread - Seiten: -1-
000
09.06.2012, 22:31 Uhr
Olli

Avatar von Olli

So - hier mal zur ATA-Implementierung

Ich habe ja aktuell quasi nix mehr frei an Ports. was haltet Ihr von der Implementierung hier:

http://www.procyonengineering.com/embedded/procyonmp3/procyon_schematics.pdf

Seite 2!

Er arbeitet beim schreiben so:
- Letch Enable
- High-Bits auf den Port-X legen und in den 573er Latch schreiben.
- Letch Disable
- Low-Bits auf den Port-X legen
- Output-Enable auf den Latch
- Write-Signal auf die Schnittstell
und voila - 16 Bit sind uebertragen.

fand ich ganz gelungen... muss ich nur mal schauen, wie ich das mit der Steuerung der Latches hinbekomme... die will ja auch wo angeschlossen werden
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
09.06.2012, 22:43 Uhr
Enrico
Default Group and Edit


Soll heissen, Du willst es mit dieser Hardware machen, nur ohne das MP3-Zeugs?
Der AVR hat ja einen richtigen Bus.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
09.06.2012, 22:54 Uhr
Olli

Avatar von Olli

Nein - ich will es mit meiner Hardware versuchen. Nur die Idee mit den Latches fand ich gut - und die versuche ich gerade in meine Hardware zu uebernehmen.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
09.06.2012, 22:55 Uhr
holm

Avatar von holm

Warum nicht?

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
09.06.2012, 22:59 Uhr
Olli

Avatar von Olli

Warum was nicht? Wenn ich jetzt ganz neue Hardware aufbaue, kann ich auch gleich einen 100Pin nehmen mit genug Ports wo ich alles direkt ranbasteln kann. Ich versuche nur zu schauen, ob es mit der aktuellen CPU auf geht
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
10.06.2012, 00:28 Uhr
Enrico
Default Group and Edit


Das ist ja keine CPU.

Ansonsten solle es schon gehen. Nur dass Du mehr Hirnschmalz in die Software stecken musst, weil es ja keinen Bus gibt. Dadurch ist es auch etwas langsamer.
Ob Du da nun den 573 oder 574 nimmst, ist auch egal. Hängt davon ab, wie Du die SW gestaltest.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
10.06.2012, 00:42 Uhr
Olli

Avatar von Olli

So... hier komme ich
Habe jetzt mal ne Stunde Kopf zerbrochen und nebenbei gezeichnet

Hier der 1. Entwurf des neuen Plans:
http://pofo.de/tmp/P8000_WDC_Emulator.pdf

Hier mein Salmon dazu:

Ausgangssituation:

PD4 / ADDR0 = 0
PD5 / ADDR1 = 0


Lese Daten P8000

Heute
Setze ASTB auf High
Setze TR auf Low
Lese Daten von D0-7

Jetzt
ADDR0 auf High, ADDR1 auf Low
Setze TR auf Low
Lese Daten von D0-7


Schreibe Daten P8000

Heute
Setze ASTB auf High
Setze TR auf High
Schreibe Daten auf D0-7

Jetzt
ADDR0 auf High, ADDR1 auf Low
Setze TR auf High
Schreibe Daten auf D0-7

Schreibe Daten ATA (Latch=2D4)

Setze ADDR0 auf Low, ADDR1 auf Low -> alles deaktiv
Setze /ATA RD auf High
Setze /ATA WR auf Low
Setze ADDR0 auf High, ADDR1 auf High -> Nun werdent Daten in Den Address-Latch geschrieben
Schreibe 16H Daten auf D0-7
Setze ADDR0 auf Low, ADDR1 auf Low -> Latch-Enable auf Low, Output Enable auf High (Latch komplett deaktiv)
Schreibe 16L Daten auf D0-7 -> Daten direkt an den ATA-Port legen
Setze ADDR0 auf Low, ADDR1 auf High -> Output-Enable des Latch setzen, und /WR Kommando an Festplatte senden
Setze ADDR0 auf Low, ADDR1 auf Low -> alles deaktiv

Lese Daten ATA (Latch=1D4)
Setze ADDR0 auf Low, ADDR1 auf Low -> alles deaktiv
Setze /ATA RD auf Low
Setze /ATA WR auf High
Setze ADDR0 auf Low, ADDR1 auf High -> Latch-Enable auf High, senden /RD Kommando an Festplatte.
Lese 16L Daten auf D0-7
Setze ADDR0 auf High, ADDR1 auf High -> Latch-Enable auf Low, /RD liegt nicht mehr an Festplatte an, Output-Enable am Latch
Lese 16H Daten auf D0-7
Setze ADDR0 auf Low, ADDR1 auf Low -> alles deaktiv
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 10.06.2012 um 00:43 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
10.06.2012, 09:37 Uhr
holm

Avatar von holm

Mein Posting 003 war die Antwort auf Deine Frage in 001 und nicht auf 002 :-)
Die Postings haben sich überschnitten.
Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
10.06.2012, 10:21 Uhr
Olli

Avatar von Olli

So hab den Schaltplan nochmal angepasst.
In der 1. Version war ein Latch verdreht, das habe ich gestern Nacht noch korrigiert. Habe dann auch gleich noch ein Jumperpad eingebaut und ADDR2 des Addressdecoders genutzt.
Heute morgen dann noch eine kleine Anpassung - das Jumperpad war gar nicht am Bus angebunden

Edit: bei der Editieraktion gestern Nacht sind mir noch die 2 Negatoren für die beiden Latch-Enable zusammengerutscht - habe ich auch mal eben korrigiert
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 10.06.2012 um 10:55 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
10.06.2012, 13:19 Uhr
Olli

Avatar von Olli

Ich habe mal meine Sortimentskisten durchgewühlt - ich hätte alle Bauteile als Fast-Schottky da (74F...) Ist das n Problem? Nehmen die mehr Strom auf als die LS Bauteile? Aber sollte zu Testzwecken ja wurscht sein...
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 10.06.2012 um 13:19 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
10.06.2012, 13:59 Uhr
Enrico
Default Group and Edit


Sollte egal sein, ausser Richtung P8000.
Da könnten u.U. Glitches drauf sein, die die stören könnten.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
10.06.2012, 14:00 Uhr
holm

Avatar von holm

Die nehmen mehr Strom auf als LS, aber das ist nicht das Problem.
Du handelst Dir mit den superschnellen Schaltflanken durch Reflexionen eventuell Probleme ein. Aus einem Impuls werden so gerne mal 2 und die siehst Du dann im Oszi auch nicht.
Statt 573 geht natürlich auch 373, der hat nur eine andere Anschlußlage.
Ich habe solchen Prassel so ziemlich Massenweise da, hauptsächlich aus großen Kuchenbrettern ausgelötet und das Zeug verbastele ich dann auch.
Sowas kannst Du für lau kriegen, allerdings habe ich gerade einen übervollen Schrank der "runter" war zertrümmert und runter geschafft, der neue Scharnk mit vieelen Schubfächern steht noch unten im Hof. Der ganze Prassel befindet sich derzeit in Kartons.
Ich brauche sicher noch 2 -3 Tage bis ich wieder eingeräumt habe..

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
10.06.2012, 14:15 Uhr
Olli

Avatar von Olli

Hab nochmal gesucht... hab zwei LS573 ausm alten 386er Board vom E-Schrott ausgelöt. Kann nun folgende Bauteile verwenden:

LS245
LS573
LS32
HCT04 oder LS04 hab beides
HCT138 oder LS138 hab beides

Hat sich denn mal einer mein Gekritzel angeschaut?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 10.06.2012 um 14:16 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
10.06.2012, 15:39 Uhr
holm

Avatar von holm

Probiere einfach, wenn es ein Problem gibt reden wir drüber.
Ich stehe beim IDE Interface derzeit auch nicht ausreichend in der Materie um mitreden zu können. Ich habe irgendwo den ganzen Kram zum originalen GIDE Interface, müßte mich mal einlesen..

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
10.06.2012, 15:51 Uhr
Olli

Avatar von Olli

Jo.. ich baue jetzt erstmal den P8000-Kommunikationsteil um - und dann checke ich erstmal ob der noch läuft.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
10.06.2012, 20:04 Uhr
Enrico
Default Group and Edit


Passend zum Thema, falls wer brauch, schön ausführlich:

http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=350569116646&fromMakeTrack=true&ssPageName=VIP:watchlink:top:de
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
10.06.2012, 22:09 Uhr
Olli

Avatar von Olli

hab ich schon zweimal

So - zu meiner ATA-Schaltung.
Ich habe da ein Problem mit der Ansteuerung des '245. Heute läuft es ja beim Lesen vom Port so ab:

0. Aktion:
warte bis /WDARDY high ist
1. Aktion:
gleichzeitiges Setzen von ASTB und Status0 auf High, alles andere Low
2. Aktion
lese Daten vom Port
3. Aktion
Setzen von Status0 auf High, alles andere Low (also wegnehmen von ASTB)
4. Aktion:
warte bis /WDARDY low ist ist
5. Aktion:
Goto 0. Aktion

Das solange wie ich Daten abzuholen habe.

Das funzt auch mit der neuen Schaltung solange ich ASTB genauso generiere wie vorher und ganz am Anfang meines Daten-Abholers einfach mal den den 74LS245 aktiviere (via Addressdecoder).

Nun will ich ja aber ASTB aus der Enable-Schaltung meines '245 ableiten, habe meine Programm also so gestrickt:


0. Aktion:
warte bis /WDARDY high ist
1. Aktion
Aktiviere den '245 über den Adressdecoder -> ASTB geht auf high
2. Aktion:
Setze Status0 auf High
3. Aktion
lese Daten vom Port
4. Aktion
deaktiviere den '245 -> ASTB geht auf low
5. Aktion:
warte bis /WDARDY low ist ist
5. Aktion:
Goto 0. Aktion.

Nun lese ich aber immer irgendwie ein Byte "zu spät". Ich habe auch schon 1 und 2 vertauscht.
Folgendes müsste ich lesen (jede Zeile ein Schleifendurchlauf):


Quellcode:
18002eaaaa550200ff
18002eaaa1ff0200ff
08002eaaa1ff0200ff
18002e5500000200ff
18002e55a1ff0200ff
08002e55a1ff0200ff
f8c1555500000200ff

Folgendes lese ich nun aber:

Quellcode:
1818002eaaaa550200
0018002eaaa1ff0200
0008002eaaa1ff0200
0018002e5500000200
0018002e55a1ff0200
0008002e55a1ff0200
00f8c1555500000200

das 1. Byte was ich lese ist also irgendwie Schrott. Beim 1. Durchlauf lese ich beim 2. Byte immer nochmal das 1. wiederholt und bei allen folgenden Durchläufen wird immer 00 als 1. Byte gelesen und das eigentliche 1. folgt als zweites.... das soll jetzt mal wer schnallen.

Wenn ich aber ASTB mit dem CS-Signal meines '245 generieren will, muss ich mit dem Aktivieren und deaktiviern so nah wie moeglich an das heutige ASTB kommen.

Wie verhällt sich denn der '245, wenn an seinem konfigurierten Eingang Signale anliegen, aber ENABLE aus is?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 10.06.2012 um 22:10 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
10.06.2012, 22:19 Uhr
Olli

Avatar von Olli

Wenn ich nach dem "Aktivieren" des 74LS245 zwei nop() einbaue, bevor ich die Daten lese, erhalte ich korrekte Daten. Der 245 scheint also 2 Taktzyklen zu brauchen, bis er durch den Adressedkoder vollständig aktiviert wurde - ein nop() reicht schon nicht mehr, bei ca. zehn nop()'s gehen mir Daten von der P8000 verloren.

Gibts "extrem schnelle" Schaltkreise von denen ich schneller lesen kann?

Der 74F245 braucht sogar drei nop()s
Einen 74HCT245 habe ich leider nicht da.

Edit: mit den zwei nop()'s nach der Aktivierung des 245 über den Adressdecoder funzt alles wunderbar - lesen wie auch schreiben. Aber - ich will die zwei nop()'s nicht. Ich denke wenn ich einen sehr schnelle 245 und 138 hätte müsste das doch auch ohne nop() gehen, oder? 138 habe ich aktuell einen 74HCT138. 245 wie schon geschrieben einen 74LS245.

Edit2:
Habe nun auch mal einen 74HCT245 aus Enricos RAM-Karte geangelt.. auch damit brauche ich 2 nop()s. Ideen? Bei den 2 nop()s belassen? Irgendwie doof... setzt man irgendwann mal ne höhere Taktrate ein, braucht man dann evtl. auch mehr nop()s und so... ziemlich unflexibel.

Ich umgehe mal morgen den Adressdecoder und schiebe das Signal des Ports direkt auf Enable des '245 - mal schauen wie das Zeitverhalten dann ist.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 10.06.2012 um 23:00 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
11.06.2012, 00:39 Uhr
Enrico
Default Group and Edit


HCT / LS haben ca. 10-20 ns DurchlaufZiet. Der F, ACT, FCT, etc. umd die 2 ns.
Das leigt an was anderem.
Beim '245 schaltetst Du mit /OE = L Die Ports durch.
Mit /DIR die Richtung.

Da fällt mir gerade ein, dass Port A und B nicht selbe Treiberleistung haben.
Finde dazu aber gerade nur das Datenblatt von einem Typ. Da ist Port B stärker als A.
--
MFG
Enrico

Dieser Beitrag wurde am 11.06.2012 um 00:54 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
11.06.2012, 07:03 Uhr
Olli

Avatar von Olli

Jo, ich habe den so eingebaut, das ich direkt TR nutzen kann. wenn ich am ATMega TR auf High setze um der P8000 zu sagen, das ich transferiere, nutze ich das gleiche Signal um die Richtung des 245 umzuschalten.

Ich kann das Signal jetzt natürlich auch mal negieren und die P8000 "andersrum" an den Chip anschliessen.

Guck mal bitt hier:

http://www.datasheetcatalog.org/datasheets/150/231645_DS.pdf

da steht "Typical enable/disable time: 17ns". Mit zwei nop()s sollte ich bei 18,432MHz ein Delay von 108,5 ns haben, oder? das waere in der Tat viel länger als benötigt. Aber - der 74LS138 ist ja auch noch dazwischen.

http://www.datasheetcatalog.org/datasheet/nationalsemiconductor/DS006391.PDF

Da werde ich aber nich so ganz schlau draus.

Ich könnte doch einfach mal ein Bit auf 5V setzen am LS245, und dann n kleines Testprogramm schreiben, Adressdecoder ansprechen, und dann direkt danach lesen - und dann mal sehen ob ich das Bit auch lese, oder?


Edit:
http://www.nxp.com/documents/data_sheet/74HC_HCT245.pdf
http://www.nxp.com/documents/data_sheet/74HC_HCT138.pdf
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 11.06.2012 um 08:20 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
11.06.2012, 09:45 Uhr
Enrico
Default Group and Edit


Kannst Du ja mal probieren.
Ich glaube aber nicht, dasse s ander Verzögerung der ICs.
Liegt.

Du steuerst das ja jetzt anders als vorher an.
Z.B. was macht ASTB? Das hattest Du doch vorher viel früher gebracht?
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
021
11.06.2012, 10:03 Uhr
Olli

Avatar von Olli

nein, hab ich vorher nicht früher gemacht. /ASTB hängt doch über den Transistor an /ASTB der Z80-PIO. Dadurch sollten doch dann die Daten anliegen.

mein alter code (quasi):


Quellcode:
do {
  while(PINC & (1<<PINC5);   //warte bis ARDY an der Z80-PIO anliegt
  PORTC |= (( 1<<PINC3 ));   // setze ASTB
  *buffer++ = PINA;
  PORTC &= ~(( 1<<PINC3 ));  // lösche ASTB
  while(PINC & (1<<PINC5);   //warte bis ARDY an der Z80-PIO erloschen ist
while (durchlauf < 9)



mein neuer code

Quellcode:
do {
  while(PINC & (1<<PINC5);        //warte bis ARDY an der Z80-PIO anliegt
  PORTD |= ( ( 1 << PIND5 ) );    // aktiviere '245
  nop();
  nop();
  *buffer++ = PINA;
  PORTD &= ~ ( ( 1 << PIND5 ) );  // deaktiviere '245
  while(PINC & (1<<PINC5);        //warte bis ARDY an der Z80-PIO erloschen ist
while (durchlauf < 9)


--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 11.06.2012 um 11:01 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
022
11.06.2012, 11:25 Uhr
Enrico
Default Group and Edit


Hhm, ja, das heisst?

Wenn Du /ASTB auf L ziehst soll die P8000 die Daten auf die PIO für das WDC-Interface legen?
Oder was bewirkt das?
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
023
11.06.2012, 11:52 Uhr
Olli

Avatar von Olli

/ASTB ist doch der Standard /ASTB Eingang des Z80-PIO. Aus dem Z80-PIO Manual habe ich verstanden, das die PIO die Daten auf Ihren Port legt, wenn man /ASTB auf Low setzt. über ARDY=High zeigt die PIO an, das sie Daten hat die sie auf den Port legen könnte.

So hatte ich das PIO-Handbuch verstanden.

Ich setzt also ASTB auf high, durch den Transistor wird es dann nach low gewandelt -> es kommt als low bei der Z80-PIO an, und sie legt die Daten auf den Port.
Und ich lese dann diese Daten an meinem '245.

Soweit der Plan....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
024
11.06.2012, 12:29 Uhr
Enrico
Default Group and Edit


Ja, also eben.

Da Du wohl nun /ASTB später aktiviersten, kommen die Daten auch später an.
Die PI (oder auch CPU) bracuehn ja eine Weile bis sie das machen.
Da das ist der AVR wesentlich schneller.

Mir gehts ja darum, mit welchem Signal, was passieren soll.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
025
11.06.2012, 12:43 Uhr
Olli

Avatar von Olli

Mh? versteh ich immer noch nicht.

Bisher:

- setze ASTB - Transistor macht /ASTB
- Lese vom Port

Jetzt:

- setze ADDR0 = High am 138
+-- 138 gibt /Enable aus
+---- 04 macht aus /Enable ASTB - Transistor macht /ASTB
+---- 245 wird aktiv
- Lese vom Port

Die + sind jetzt quasi "neu" dazu gekommen - und das dauert dann seine Zeit meinst du? Deswegen fragte ich ja, ob es "schnellere" Bausteine gibt. Ansonsten sehe ich das Problem immer noch nicht. Es würde ja bedeuten, das zwischen dem "setze ADDR0" und "Lese vom Port" die "+" Zeilen ca 109 Nanosekunden brauchen.

Kann es sein, das der Transistor recht langsam ist? Kann ich da was anderes testweise einsetzen was schneller agiert? Könnte der 138 das ASTB Signal alleine treiben oder hat der nicht genug Power?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
026
11.06.2012, 12:49 Uhr
holm

Avatar von holm

Baue statt der Transistoren D103 oder D126, 7406 oder LS03/05 ein...

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
027
11.06.2012, 14:06 Uhr
Olli

Avatar von Olli

Kann ich heute abend mal ausprobieren. In genau den Typen? Also D103 (=7403) und kein DL103 (=74LS03)? D126 = 7426 (und kein 74LS26) usw...?

Sehe ich es richtig, das es hauptsächlich Open Collector Schaltkreise sein müßen? Dann gucken ich mal was ich da alles rumfliegen habe.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 11.06.2012 um 14:13 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
028
11.06.2012, 14:15 Uhr
holm

Avatar von holm

Es müßte eigentlich Alles funktionieren und Alles ist schneller als dieser einzelne Transistor. Es waren nur Beispiele, Du brauchst halt wieder einen Negator mit offenem Kollektor.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
029
11.06.2012, 14:40 Uhr
Enrico
Default Group and Edit



Zitat:
Olli schrieb
Mh? versteh ich immer noch nicht.

Bisher:

- setze ASTB - Transistor macht /ASTB
- Lese vom Port

Jetzt:

- setze ADDR0 = High am 138
+-- 138 gibt /Enable aus
+---- 04 macht aus /Enable ASTB - Transistor macht /ASTB
+---- 245 wird aktiv
- Lese vom Port

Die + sind jetzt quasi "neu" dazu gekommen - und das dauert dann seine Zeit meinst du? Deswegen fragte ich ja, ob es "schnellere" Bausteine gibt. Ansonsten sehe ich das Problem immer noch nicht. Es würde ja bedeuten, das zwischen dem "setze ADDR0" und "Lese vom Port" die "+" Zeilen ca 109 Nanosekunden brauchen.

Nein.

Ich hatte es so verstanden, dass Du /ASTB jetzt zu einer anderen Zeit im Programm setzt.

Die PIO brauch ja auch eine gewisse Zeit zum Schalten.
Ich gehe mal davon aus, dass die das mit einer Flanke vom Takt macht, und
nicht einfach "sofort".

Du setzt ja ASTB und gehst davon aus, dass die Daten sofort anliegen.
Beim AVR sind das ca. 50 ns. In der kurzen Zeit kann es gut sein, dass die PIO noch gar nciht reagiert hat.

Oder es ist das, was Holm schreibt.

Oder....

... mit der Logik kanns natürlich auch im ZUsammenhang stehen.


Deine zeitliche Zusammenstellung ist nicht ganz korrekt.

Der 245 schaltet parallell zum 7404 um.
--
MFG
Enrico

Dieser Beitrag wurde am 11.06.2012 um 14:50 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
030
11.06.2012, 15:52 Uhr
Olli

Avatar von Olli

Wie gesagt - ich mache es zu genau dem gleichen Zeitpunkt wie vorher im Code.
Ich habe aktuell sogar noch einen Code wo ich die alte /ASTB Generierung auch noch drinn habe. Also einmal direkt vom ATMega ASTB generiere und auch über den 7404 der am am Enable-Eingang des '245 hängt. Über einen Jumper kann ich dann bestimmen welche von beiden Generierungen auf den Transistor läuft. Und - ich meine es war so, das es keinen Unterschied macht. Egal ob ich den Transistor direkt vom AVR beschalte, oder über den '04er - ich brauche die zwei nop()s bevor ich was sinnvolles lesen kann.

Im Code wird das an genau der gleichen Stelle gemacht - nur das halt mit der alten Schaltung mein AVR schon bereit war Daten anzunehmen. Nun wird halt erst mit der "ASTB Generierung" auch der 245 aktiviert - das ist meiner Meinung nach der Unterschied zu der alten Schaltung

Vorher war der AVR bereit, ASTB wurde gesendet und dann sofort gelesen. Heute ist der AVR bereit, ASTB wird gesendet und gleichzeitig der 245 aktiviert und dann gelesen - wenn ich dann nix lesen kann, und nur der 245 hinzugekommen ist, sehe ich 2 Möglichkeiten:

- 245 nicht schnell genug bereit
- ASTB braucht nun länger als vorher da es erst durch den 138 muss, dann durch den 04 und dann durch den Transistor.

Letzteres habe ich aber meine ich dadurch ausgeschlossen, das ich ASTB mit meinem tollen Jumper auch noch "wie vorher" generieren kann. also direkt vom AVR auf den Transistor gehen kann - den 138 und 04 also aussen vor lasse.

Daher dachte ich - kann nur noch das 1. Problem existent sein - der 245 ist nicht schnell genug.

So ein Logikanalysator wäre jetzt glaube ich echt hilfreich um zu sehen wann genau welche Signale mit welchen Flanken anliegen...

Ich fahre jetzt erstmal nach hause und dann probiere ich noch etwas weiter rum mit der Ersetzung des Transistors.

PS: meine zeitliche Zusammenstellung ist korrekt - die Formatierungsmöglichkeiten im Forum sind aber beschränkt - daher steht der 04 und der 245 auch auf der gleichen "Einrückung" damit habe ich versucht deutlich zu machen, das beides gleichzeitig passiert.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
031
11.06.2012, 15:57 Uhr
holm

Avatar von holm

Das Datenblatt der PIO läßt sich nicht wirklich darüber aus wie lange es dauert bis die Daten anliegen, es stellt nur fest, das die Dten mit der Fallenden Flange von -ASTRTB auf den Port ausgegeben werden. 100ns Verzögerung an dieser Stelle würden mich nicht wirklich wundern.
Die Steigende Flanke von -ASTRB soll zur Übernahme der Daten durch die Peripherie verwendet werden sagt das DB...
Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
032
11.06.2012, 16:58 Uhr
Olli

Avatar von Olli

http://www.z80.info/zip/um0081.pdf Seite 215 ist ein Ablaufchart - aber der Zeitpunkt ist in der Tat nicht so recht erkennbar.

Aber... sorry wenn ich so darauf rumreite

Ich habe jetzt meine Schaltung so umgestellt, das meine ASTB Erzeugung genau so funktioniert, wie "früher". Ich also einfach einen Pin am AVR auf 1 setze und das auf den Transistor geht.
Was ich nun früher gemacht habe war ja: danach direkt am AVR Port lesen. Das hat ja problemlos funktioniert - die PIO hat also sehr schnell geliefert. Somit kann da keine große Verzögerung sein.
Was ich jetzt nach dem setzen von ASTB mache: 1.) '245 aktivieren, 2.) vom '245 lesen. Und nun habe ich keine Daten, ausser wenn ich nach dem aktivieren noch zwei nop()s einbaue? Ich habe doch nun eher mehr Zeit verstreichen lassen als vorher - also die PIO hatte doch nun eher mehr Zeit als vorher ihre Daten anzulegen, da ich vor dem Lesen noch eine Aktion mehr mache - naemlich den '245 aktivieren. Somit kam ich halt zu dem logischen Schluss, das mein 245 einfach zu lahm ist!
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 11.06.2012 um 16:59 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
033
11.06.2012, 17:13 Uhr
Olli

Avatar von Olli

Habe jetzt den Transistor spaßeshalber mal durch einen 74LS03 ersetzt - kein Unterschied - nach dem aktivieren des '245 brauche ich zwei nop()s bis ich was sinnvolles lesen kann.

Nächster Versuch: den '245 einmal direkt aktivieren - am '138 vorbei!
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 11.06.2012 um 17:20 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
034
11.06.2012, 17:35 Uhr
Enrico
Default Group and Edit


Brück den 245 einfach mal aus.

Komisch ist das schon.

Du ziehst /enable auf L, damit schaltet der durch.
Dann noch das TR, damit schaltet der 245 den Bus von B nach A durch, wüfr der ca. 20 ns brauchen dürfte.
Wenn überhaupt, sollte da für 1 NOP reichen.

Edit: Wie sieht denn Deine Schaltung physisch so aus?
Speziell in Sachen Spannung abblocken?
--
MFG
Enrico

Dieser Beitrag wurde am 11.06.2012 um 17:37 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
035
11.06.2012, 17:52 Uhr
Olli

Avatar von Olli

ich hab an jedem IC n Kondensator wenn du das meinst.

Ich habe jetzt /enable und Direction des '245 mal direkt auf Masse geklemmt. Nun kann ich direkt Daten lesen ohne die zwei nop().

Edit:
Jetzt habe ich mal /enable und Direction zusammen direkt auf einen Port am AVR geschaltet welchen ich direkt auf Low ziehe am Anfang und es direkt so belasse.... nun lese ich nur noch Schrott.

Ob ich die 2 Steuerleitungen des '245 auf Masse klemme, oder an einen AVR Port den ich direkt auf Low ziehe.... sollte doch das gleiche sein?!

Edit2
Ich habe einen gaaaanz üblen Verdacht... die Adressleitungen haengen doch am selben Port wie der UART..... ich teste eben was aus und melde mich
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 11.06.2012 um 18:07 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
036
11.06.2012, 18:24 Uhr
Olli

Avatar von Olli

So... sehr lustiges Phänomen. Ich habe nun meinen '138 von Port D auf Port B umgehangen, und die Schaltung wieder in Zustand auf dem Plan versetzt.

Nun schaut euch mal an was ich lese:


Quellcode:
CMD:0018002eaaaa550200
CMD:ff18002eaaa1ff0200
CMD:c008002eaaa1ff0200
CMD:c018002e5500000200
CMD:c018002e55a1ff0200
CMD:c008002e55a1ff0200
CMD:c0f800555500000200

ich habe also ein Byte Versatz. Wenn man das 00 oben wegnehmen würde, würde ich alles korrekt lesen
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
037
11.06.2012, 19:08 Uhr
holm

Avatar von holm

...dann triggerst Du irgendwo auf der flashcen Flanke...

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
038
11.06.2012, 19:26 Uhr
Olli

Avatar von Olli

Tjo - eigentlich ja nicht würde ich sagen.

0. durchlauf = 0
1. Warte in ner Schleife bis ARDY an der PIO anliegt
2. Setze /ASTB auf Low und aktiviere den '245
3. Lese vom '245
4. Setze /ASTB auf High und deaktiviere den '245
5. Warte in einer Schleife bis ARDY der PIO auf low geht
6. erhöhe "durchlauf" um 1
6. wenn durchlauf < 9 gehe zu 1

Sieht für mich richtig aus.... Habs nochmal verifiziert - auch bei Port-B brauche ich zwei nop()s damit es funzt.

Edit
Ich habe mir auch nochmal den Assembler-Code angeschaut. Nach der Schleife "1." wurde /ASTB im alten Code mit OUT gesetzt - dauerte also nur ein Takt. Danach direkt IN. Nun setze ich ja die Aktivierung des '245 mittels SBI - also ein einzelnes Bit in nem I/O Register. Das verbraucht sogar 2 Takte - ist also noch 1 Takt mehr Zeit. Habe gedacht, vielleicht ist das ja ein Problem, und habe nun mal auch ein direktes Assignment gemacht was zu nem OUT führt - also nur noch ein Takt..... keine Änderung.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 11.06.2012 um 19:42 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
039
11.06.2012, 19:59 Uhr
Olli

Avatar von Olli

Ich habe jetzt mal auf "alte ASTB Generierung" umgestellt - also wieder Direkt über den ATMega Pin. Das habe ich als |= Zuweisung gebaut. Also 2 Takte verbrauchend. Das direkt hinter die Aktivierung des '245. Und selbst das klappt. Also - erst '245 aktivieren, dann in 2 Takten /ASTB setzen, dann direkt lesen.

Für mich sieht es irgendwie ganz klar danach aus, das der '245 einfach nicht schnell genug seine Inputs von Tristate auf "input" umschaltet... ich werde nachher nochmal A auf B umlöten - und dann weiss ich nicht mehr weiter
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
040
11.06.2012, 20:02 Uhr
holm

Avatar von holm

Aber irgendwie macht mir das den Eindruck als wenn ASTRB vor der Pio noch durch einen zusätzlichen Negator laufen würde. Es ergibt sonst irgendwie keinen Sinn mit der gelesenen ersten 0 und dem Versatz...

Am Atmel hast Du doch nach dem Portpin noch entweder einen Transistor oder ein Negatorgatter dran, d.h. Deine Ausgabe von 1 an dem Port erzeugt 0 am Strobe Signal.
(so sollte es ja auch sein). Das Verhalten Deiner Schaltung weist aber darauf hin, dass sie Deiner Ausgabe um eine halbe Phase des Taktes hinterherhinkt..
Ich habe meine einzelnen P8K Boards im Lager sonst hätte ich jetzt mal auf die WDC Schnittstelle geglotzt wohin /ASTRB wirklich geht.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 11.06.2012 um 20:02 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
041
11.06.2012, 20:34 Uhr
Olli

Avatar von Olli

Ich behaupte mal - mein Plan stimmt! :p

Und da gehts direkt auf die PIO.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
042
11.06.2012, 20:56 Uhr
Olli

Avatar von Olli

Hab jetzt mal A und B getauscht, als P8000 an A, und AVR an B, und dann Direction vorher nochmal durch nen Negator... gleiches Ergebniss - ohne zwei nop() lese ich diesen Byte Versatz...

Wenn nich einer noch ne schlaue Idee hat, muss ich wohl mal in einen LA investieren - nur weiss ich auch nicht so recht, was ich dann mit den Erkentnissen anfangen soll - otto11 hatte ja eigentlich schon Diagramme gemacht

http://www.krummsdorf.de/files/hobby/project.html

Edit:
Achso - eins noch! Ich brauche die nop() nur wenn ich lese! Wenn ich in Richtung P8000 schreibe, brauche ich die nop() nicht. Das funzt wunderbar ohne Pause.

lesen:

Quellcode:
while ( isset_info_wdardy() );
        PORTB |=  ( ( 1 << PINB0 ) );
        nop();
        nop();
        buffer[datacnt] = ( uint8_t ) port_data_get();
        PORTB &=  ~ ( ( 1 << PINB0 ) );
        while ( !isset_info_wdardy() );

schreiben:

Quellcode:
while ( isset_info_wdardy() );
        PORTB |=  ( ( 1 << PINB0 ) );
        port_data_set ( buffer[datacnt] );
        PORTB &=  ~ ( ( 1 << PINB0 ) );
        while ( !isset_info_wdardy() );

Edit2

Und nochwas. Ich habe folgende Variationen ausprobiert:

ASTB setzen
245 aktivieren
lesen
-------> Schrott

ASTB setzen + 245 aktivieren
lesen
-------> Schrott

ASTB setzen
nop()
nop()
245 aktivieren
lesen
-------> Schrott

ASTB setzen
245 aktivieren
nop()
nop()
-------> läuft

ASTB setzen + gleichzeitig 245 aktivieren
nop()
nop()
-------> läuft

Edit3

Im Mikrokcontroller Forum schreibt einer

Zitat:
Wenn ich das TI-74LS245 Datenblatt richtig lese hats vom Output-Enable
bis Output High oder Low 25 .. 40 nanosec. Delay (45 pF Load).
Das könnte schon schon mal einen NOP beim AVR erklären.
Der alte 74LS138 braucht auch noch so ca 10..20 nsec...
Der 74ls04 ..


--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 11.06.2012 um 21:08 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
043
11.06.2012, 21:48 Uhr
Enrico
Default Group and Edit


Sag mal, hast Du die Pullups wieder aktiviert?
zeitweise sind die Portpins ja nun offen.
Kanns mir zwar nicht voprstellen, dass es das sein könnte, wiel der Fehler ja produzierbar ist, aber ausprobieren solltest Du es.

Ansosnten war das mit den Verzögerungszeiten ja kalr.
Hattest Du es nicht auch schon mit schnlleren versucht?
Ging doch auch nicht.
--
MFG
Enrico

Dieser Beitrag wurde am 11.06.2012 um 21:49 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
044
11.06.2012, 22:05 Uhr
Olli

Avatar von Olli

Du meinst am AVR? Ich habe an den Fuses nix geaendert:

BODLEVEL = 4V3
OCDEN = [ ]
JTAGEN = [ ]
SPIEN = [X]
WDTON = [ ]
EESAVE = [ ]
BOOTSZ = 4096W_F000
BOOTRST = [ ]
CKDIV8 = [ ]
CKOUT = [ ]
SUT_CKSEL = FSOSC_16KCK_65MS_XOSC_SLOWPWR

Und ja, F hatte ich auch schon versucht... ging auch nicht.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
045
11.06.2012, 22:54 Uhr
holm

Avatar von holm

Nain, nicht die Fuses. Die Pullups auf den Ports aktivierst Du bei Eingabepins in dem Du ins Ausgaberegister eine Eins auf das entsprechende Pin schreibst.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
046
12.06.2012, 01:32 Uhr
Enrico
Default Group and Edit


Na, wenn der F-Typ mit ca. 2-5 ns auch nicht geht, dann weis ich auch nciht mehr.
Dann kanns nicht wirklich die Durchlaufverzögerung sein.

Zur P8000 hin, nimms Du immer noch das selbe Kabel, wie mit der SD-Karten Variante und ohne den Datentreiber?

Als Inverter fürs ASTB zur Basis des Transistors hast Du immer noch den 74LS04
drin?
--
MFG
Enrico

Dieser Beitrag wurde am 12.06.2012 um 01:42 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
047
12.06.2012, 06:16 Uhr
ambrosius



Vielleicht sind es ja Aufladungen, die bei hochohmigen Eingängen erst abgebaut werden müssen. Vielleicht nicht Pullups, sondern Widerstände nach Masse (z.B. 1-4,7kOhm), die eine definierte Laste erzeugen.

Beste Grüße
Holger
--
viele Grüße
Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
048
12.06.2012, 06:46 Uhr
Olli

Avatar von Olli

bzgl. Pullups:

also DDRA als Eingang am AVR definieren, und dann 0xFF auf PORTA schreiben?

bzgl. Widerstände nach Masse:

einfach noch z.B. jeweils 3K Ohm an alle 8 Leitungen die von der P8000 kommen ranbasteln und Masse auf die andere Seite? Kann ja durchaus sein, das sich die Eingangsports des AVR etwas anders verhalten, als die Eingangsports von so nem '245er - der ist ja auch wesentlich älter als der AVR. Man muss ja auch immer noch drann denken, das ich hier Spannungen habe die von der P8000 zu mir "rüberfließen". Evtl. steht da der '245 nich so drauf.

bzgl. Kabel:

ja ich nehme noch das gleiche Kabel - aber ich kann grundsaetzlich auch mal n anderes probieren - meins hier ist ca. 1.5m lang. Ich habe mal ein wesentlich kürzeres aber auch viel dünneres Kabel genommen... da habe ich nur Gülle mit empfangen... Kabel scheint also generell schon ein Thema zu sein.
Aber auch mit dem Originalkabel komme ich nicht um die 2 nop()s umhin.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 12.06.2012 um 07:26 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
049
12.06.2012, 08:07 Uhr
holm

Avatar von holm

..ja genau.

Im Normalen eingeschalteten Zustand sollte da nix von der P8000 rüber fließen,
bis auf die Ströme die Eingänge Treiben.
Unterschiede an den Eingängen hast Du in Soweit, als dass die Atmel Ports MOS Eingänge sind und damit spannungsgesteuert, während Du TTL nach Low ziehen mußt und da auch ein Eingangsstrom fließt.
Bei einem Meter Kabellänge sollte man sich eigentlich schon Gedanken um Reflektionen an den Leitungsenden machen und diese Terminieren. Für so Etwas gibt es Leitungstreiber und -empfänger, meist hilft bei Ringing auch schon ein 100R Winderstand längs in der Leitung die Reflektionen zu dämpfen.
Du kennst Das aus Speicherplatinen, dort oft 33 Ohm in den Adreß- und Datenleitungen.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
050
12.06.2012, 08:20 Uhr
Olli

Avatar von Olli

OK, aber ich hatte es fix heute Morgen auch mal mit dem Originalkabel der P8000 versucht... das ist zwischen 20 und 30cm lang.

Noch zündende Ideen für heute Abend wenn ich wieder daheim bin? Soll ich mal 33 Ohm in die Datenleitungen zwischenschalten vorm '245? Soll ich die Leitungen vorm '245 mal mit 3k Widerstaenden gegen Masse schalten?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
051
12.06.2012, 08:53 Uhr
holm

Avatar von holm

Die 3K gegen Masse kannst Du Dir IMHO sparen. Dein Problem scheint auch hauptsächlich die Strobe Leitung zu sein (und ggf. RDY) versuche erst mal nur an den Beiden herumzuoperieren.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
052
12.06.2012, 09:32 Uhr
Olli

Avatar von Olli

Mh - aber warum ist ASTB "ausreichend" schnell, wenn ich die Daten direkt an meinen AVR lege, aber nicht wenn ich sie an den 245 lege? Das schnall ich irgendwie nicht.

/RDY und /TE sind in der Originalschaltung des WDC als Open Collector ausgeführt wenn ich das so sehe.... http://pofo.de/P8000/notes/plaene/Winchester-Disk-Controller/Stromlaufplan_01.tiff

Einer schrieb was von Pull-Up an /ASTB und /TR.... kann das Sinn machen?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
053
12.06.2012, 10:22 Uhr
Enrico
Default Group and Edit


Letzter Punkt: nein.
Die sind schon in der P8000 terminiert.

So lngsam läufts wohl doch auf LA hinaus.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
054
12.06.2012, 10:39 Uhr
holm

Avatar von holm

Da ich nicht der liebe Gott bin, schnalle ich das auch nicht Olli, aber zumindest denke ich drüber nach. Ich schrieb ja, das das aus meiner Sicht wie eine Negation zu viel aussieht, Du liest Daten, wenn Sie noch nicht da sind bzw. die Alten wenn schon Neue anliegen sollten. Wie dieser Effekt zu stande kommt, ist mir jetzt auch nicht klar, Schaltzeiten sind freilich möglich, Du kannst mit dem Atmel durchaus eine nicht getriebene Leitung wie eine dynamische RAM Zelle auslesen, die gespeicherte Ladung auf den Kabel nreicht für solche Faxen..

Der /STB und der /TR Ausgang ist im Original ein 7406 der sich elektrisch nicht Anders verhält als Dein Transistor bzw. ein 7403 (abgesehen von der Schaltgeschwindigkeit), und eingehend ist der WDC mit der selben 220/330 Ohm Beschaltung versehen wie die 16 Bit Platine. Das ist schon ein passender Leitungsabschluß.
Du kannst bie Die höchstens diese 220/330 Kombination an READY/TE nachrüsten um dort definiertere Singalverläufe zu erhalten.
Übrigens gibt es fertige Widerstandsnetzwerke auf ollen SCSI Geräten als Terminator, die diese 220/330 Ohm Kombination schon fertig enthalten, das macht eine effektive Line Termination von 132 Ohm, also die selbe Größenordung wie die 110 Ohm Serienwiderstadn die ich vorgeschlagen hatte. Wechselspannungsmäßig liegen die Widerstände ja parallel.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
055
12.06.2012, 10:44 Uhr
Olli

Avatar von Olli

Bin ja auch kein lieber Gott
Weiss doch, das Ihr auch nur helfen wollt, und "Ferndiagnose" immer schwer ist.

Hat es denn irgendeine Aussagekraft, wenn ich mir einen 245 her nehme, dessen Eingänge auf VCC schalte, diesen auch genauso wie jetzt über den '138er aktiviere und dann sofort von dem lese? Ich quasi die P8000-Eingänge am '245 durch +5V statisch ersetze?

Wenn ich dann auch noch 2 nop() brauche schaltet das ganze in der Tat zu langsam - wenn ich dann jedoch direkt 0xff vom '245 lese, muss es ein "Problem" in der P8000-Verschaltung geben.

Ist dieser Rueckschluss zulaessig?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
056
12.06.2012, 11:42 Uhr
Enrico
Default Group and Edit


Dann müsstest Du aber an die AVR-Eingänge direkt auf Masse (Pull-Downs) schalten. SOnst würdest Du keinen Unterschied feststellen.
Damit könntrst Du efeststellen, ob es rein an der Durchschaltzeit des#245 leigt, oder an noch mehr.

Versuch macht kluch.
--
MFG
Enrico

Dieser Beitrag wurde am 12.06.2012 um 11:42 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
057
12.06.2012, 12:51 Uhr
holm

Avatar von holm

Meine Antwort hast du schon in dem anderen Forum :-)

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
058
12.06.2012, 12:58 Uhr
Olli

Avatar von Olli

Jo Holm

ansonsten - Ich war jetzt mal shoppen

http://www.watterott.com/de/Open-Logic-Sniffer

mit 2*8 Prüfklemmen... wenn das Zeug angekommen ist, wissen wir mehr
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
059
12.06.2012, 12:59 Uhr
Enrico
Default Group and Edit


Das Ganze mal von Vorne mit ner anderen (ähnlichen) Idee.

Also,

Du aktivierst die ganzen Steuerleitungen ASTB, etc. damit die PIO der P8000 die Daten drauf legt.
Liest Du sofort kommt Schrott, mit 2 NOPs ist es OK.
mit 1 NOP gehts auch nicht?

Wie sieht Deine Abhol-Schleife aus, bzw. die aktuelle Schaltung?
Entspr. die dem Plan?
Sprich nach jedem Durchlauf deaktvierst Du wieder ASTB und schaltetst dadurch auch den '245 wieder hochohmig?

Oder bleibt der 245 durchgeschaltet und schaltest ausschlieslich ASTB?
--
MFG
Enrico

Dieser Beitrag wurde am 12.06.2012 um 13:00 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
060
12.06.2012, 13:08 Uhr
Olli

Avatar von Olli

Habe auch nochmal was dazu geschrieben... die PIO läuft gar nicht im Bidirektionalen Modus!

http://www.mikrocontroller.net/topic/261441?goto=2713181#2713181

wir sind also wahrscheinlich von völlig falschen Vorraussetzungen ausgegangen - bzw. ich bin

Bzgl. Schleife:

- warte bis ARDY high ist (=PIO hat Daten)
- setze '245 auf aktiv, gleichzeitig wird /ASTB = low generiert mit dem '04
- nop()
- nop()
- lese daten von '245
- setze '245 auf deaktiv, /ASTB wird nun auf high gezogen.
- warte bis ARDY wieder low ist.
- gehe zurueck an den Anfang

Die schaltung entspricht dem was ich aktuell habe - ich habe die ADDR leitungen nur von Port-D auf -B umgelegt da ich dachte evtl. macht der UART Schrott mit dem Port
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 12.06.2012 um 13:11 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
061
12.06.2012, 13:09 Uhr
ambrosius



Braucht eigentlich die P8000-Seite (PIO) Zeit für eine Reaktion, will sagen:
ASTB aktiviert löst meist erst einen Interrupt in der PIO aus, der dann bedient werden muß. Dies braucht ja auch Zeit.

Beste Grüße
Holger
--
viele Grüße
Holger

Dieser Beitrag wurde am 12.06.2012 um 13:11 Uhr von ambrosius editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
062
12.06.2012, 13:18 Uhr
Enrico
Default Group and Edit



Zitat:
Olli schrieb
...

Bzgl. Schleife:

- warte bis ARDY high ist (=PIO hat Daten)
- setze '245 auf aktiv, gleichzeitig wird /ASTB = low generiert mit dem '04
- nop()
- nop()
- lese daten von '245
- setze '245 auf deaktiv, /ASTB wird nun auf high gezogen.
- warte bis ARDY wieder low ist.
- gehe zurueck an den Anfang

Die schaltung entspricht dem was ich aktuell habe - ich habe die ADDR leitungen nur von Port-D auf -B umgelegt da ich dachte evtl. macht der UART Schrott mit dem Port

Aha.

Du Pull-ups wirst Du im AVR ja wohl noch nicht aktiviert haben?

Folgendes, ich hatte beim Prottyp-der K1520-Netzwerkkarte ganz erhebliche Probleme. Ping ging, TCP/IP-Transfers gar nicht.

Deine Schaltung hast Du ja auch mit Drahtverhau gemacht, der LS245 hängt bestimmt mit einem schönen langen Leitungsbündel (längerer Draht, als vorher ohne LS245) an Port A des AVR.

Da Du jedesmal den 245 hochohmig schaltest, könnte es gut sein, dass der ganze Kram zeimlich gut schwingt. Jeder Zugriff des AVR auf den Port passiert ja mit ca. 50 ns.

Wenn Du den '245 ständig durchgeschaltet lassen würdest und nur ASTB bedienst, könnte es sein, dass Du nur beim 1. Lesezugriff in der Schleife
die 2 NOPs bracuhst. in den folgenden, entwder kein NOP oder nur 1 NOP.

Du müsstest auf alle Fälle die Steuerleitungen erstmal terminieren, wie Holm oben schrieb, dann müssen die Datenleitungen Längsterminiert werden.

Ich hatte bei der Netzwerkkarte 100 Ohm in den Datenleitungen einbauen müssen. AVR162 mit 8 MHz und ext. Bus.
Du gehst da ja wesentlich schnller drauf, da dürften bei dem Drahtverhau die Probleme grösser sein.
auch schon weil ständig der Port durch den '245 ständig be- und entlastet wird.

Ach ja, die Widerstände gehören bei der Quelle rein.
Bei Daten also an beiden Enden.
Bei Dir schäteze ich mal 50 Ohm, weils schneller ist.
--
MFG
Enrico

Dieser Beitrag wurde am 12.06.2012 um 13:32 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
063
12.06.2012, 13:56 Uhr
holm

Avatar von holm

Kopie meiner Antwort bei Mikrocontrollers:

PIO Mode 1 ist Byteeingabe...Du willst aber von der PIO im konkreten
Fall etwas lesen. Byteausgabe ist Mode0.

Nach dem Einschreibevorgang (CPU ->Pio) wird mit der nächsten fallenden
Flanke des Sytemtaktes das READY Signal in den aktiven Zustand gebracht
(High). Mit der steigenden Flanke von READY wird der Peripherie klar
gemacht, dass sich neu geladene Daten im Ausgaberegister befinden und
gelesen werden können. Die positive Flanke das vom externen Gerät
seinerseits erzeugten /Strobe Impulses gilt als Quittung für die
erfolgte Übernahme der Ausgaberegisterdaten durch das externe Gerät, sie
löst falls die entsprechenden Randbedingungen gegeben sind (Int Freigabe
FF des Kanals gesetzt) die Anmeldung für einen Interrupt aus um der CPU
Bescheid zu geben das neue Daten ausgegeben werden können..

(frei nach Mikroprozessorsystem der II. Leistungsklasse, -Technische
Beschreibung - Schaltkreis für parallele Ein- und Ausgabe, PIO U855D"
RFT, Mirkomurx Marx Erfurt..


Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 12.06.2012 um 13:57 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
064
12.06.2012, 16:06 Uhr
Enrico
Default Group and Edit


Dem zufolge sollten sich keine Daten ändern, solange /ASTB L ist, und
es sollten so viele NOPs drin sein können, wie Olli Lust hat (siehe Nr. 017).
--
MFG
Enrico

Dieser Beitrag wurde am 12.06.2012 um 16:10 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
065
12.06.2012, 16:19 Uhr
Olli

Avatar von Olli

Habe im Mikrokontrollerforum folgendes gepostet (wir wissen ja nun, das die Pio immer zw. Input und Output umgeschaltet wird, nicht im Bidirektionalen Modus laeuft, und somit die Daten schon anliegen, sobald ARDY high wird)



Mir ist gerade folgendes in den Sinn gekommen, folgendes muesste ja
mglich sein:

Meine Lese Schleife lief ja früher so ab:

start:
- warte bis ARDY high wird
- setze ASTB auf low
- lese die Daten
- setze ASTB auf high
- warte bis ARDY low wird
- goto start

nun sieht die schleife ja so aus

start:
- warte bis ARDY high wird
- aktiviere den '245 und gleichzeitig setzt ASTB auf low
- nop()
- nop()
- lese die Daten vom '245
- deaktivier den '245 und gleichzeitig setze ASTB auf high
- warte bis ARDY low wird
- goto start

Nun kam mir in den Sinn, das /Enable-Signal des '245 zu nehmen, es wie
heute schon durch einen '04 zu jagen und dann daraus ein High Signal zu
bekommen. Dann nehme ich einen 74ls03, packe dieses high-/enable des
'245 an einen Eingang, und an den anderen Eingang packe ich das ARDY der
PIO. Heisst, ich aktiviere dann den '245 eher, aber /ASTB wird durch den
'03 erst ausgegeben, wenn die PIO ARDY auf high schaltet:

start:
- aktiviere den '245 und setze Pin1 des '03 auf High
- warte bis ARDY high wird -> dann ist Pin2 des '03 auf High
--> '03 gibt /ASTB aus
- lese die Daten vom '245
- deaktivier den '245 und Pin1 des '03 geht auf low -> /ASTB geht auf
high
- warte bis ARDY low wird
- goto start

Das sollte funktionieren denke ich - ich probiere es nachher gleich mal
aus.

Quellcode:
.
                                      +-----+
                                      |     |
                                      |     |
                          +-----+     |     |
                          |     |  /En|     |
                     +----o '04 +--+--+ '245|
/ASTB      +-----+   |    |     |  |  |     |
           |     +---+    +------  |  |     |    +-----+>ADDR0-2
<----------o '03 |                 |  |     |    |     +----< AVR
           |     +---+             |  +-----+    |     +----< AVR
           +-----+   |             +-------------o '138+----< AVR
ARDY                 |                           |     |
>--------------------+-----------------> AVR     |     |
                                                 +-----|


--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 12.06.2012 um 16:20 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
066
12.06.2012, 16:59 Uhr
Olli

Avatar von Olli

Schrieb im MK Forum:



Jo - mit dem '03 und der zeitigeren Aktivierung des '245 funzt es nun Problemlos.

http://pofo.de/tmp/P8000_WDC_Emulator.pdf

Ich aktiviere nun den '245 bevor ich anfange zu warten, das ARDY auf high geht. Sobaldt ARDY auf high geht, generiert dann der '03 das /ASTB=low Signal. Sobald ich mir die Daten abgeholt habe, deaktiviere ich den '245 wieder. Dadurch wird dann auch automatisch das /ASTB = High vom '03 generiert.
Musste das ARDY Signal bei mir nur nochmal durch einen Negator jagen, da ich es von der Pio negiert auf den Steckverbinder gelegt bekomme.


Quellcode:
do {
        PORTD |=  ( ( 1 << PIND5 ) );  //aktiviere '245
        while ( isset_info_wdardy() ); //warte bis /ARDY = low (active)
        buffer[datacnt] = ( uint8_t ) port_data_get(); // lese vom '245
        PORTD &=  ~ ( ( 1 << PIND5 ) ); //deaktiviere '245
        while ( !isset_info_wdardy() ); //warte bis /ARDY = high (deactive)
        datacnt++;
    } while ( datacnt < count );


--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 12.06.2012 um 17:08 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
067
13.06.2012, 19:27 Uhr
Olli

Avatar von Olli

Ich habe jetzt den Open Logic Sniffer.

/ASTB wird ja durch einen 7403 generiert der von zwei 7404 gefüttert wird, die aus /RDY und /CS@245 kommen

Die Messung läßt nun vermuten, das sobald sich ein Input beim 7403 aendert (also /RDY->RDY->74LS03 oder /CS->CS->74LS03), kurz der 74LS03 umspringt - um dann offensichtlich zu merken, das er nicht umspringen darf.

Das scheint keine Probleme zu bereiten, aber... ist das normal, oder misst mein LA Mist? Samplingrate war 200 MHz. Bei 20 MHz sieht man das hin und wieder auch, aber da tastet er halt nicht so haeufig in genau diesem Moment ab... er ist ja wirklich sehr kurz.


--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 13.06.2012 um 19:36 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
068
13.06.2012, 20:50 Uhr
holm

Avatar von holm

Der Eingang eines 03 ist ein ein Doppelemittertransistor, es kann eigentlich nicht passieren das er da "versehentlich" umschaltet, da der Basisstrom über den jeweils schon aktiven Emitter fließt und damit der Kollektor offen ist und Strom führt.
Aber: TTL erzeugt bei Schaltvorgängen Spikes auf der Versorgungsleitung (deswegen Stützkondensatoren über jeden Chip), es kann sein, das sich Dein Analyzer da kirre machen läßt..
200Mhz ist deutlich mehr als der LS03 schaffen würde. halte mal die Massestrippe des LA sehr kurz und klemme sie an einen Stützkondensator.


Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 13.06.2012 um 20:52 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
069
14.06.2012, 17:17 Uhr
Olli

Avatar von Olli

Naja hat sich erledigt - das Ding is fürn Popo - wird schon heute nicht mehr von Windoze erkannt.... tausend Sachen versucht - kein Bock da mehr Zeit mit dem Teil zu vergeuden - es geht wieder Return to Sender.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
070
14.06.2012, 20:50 Uhr
Rainer



vielleicht als Ersatz ein interessantes Projekt, wenn auch schon älter. Hab ich zumindest immer mal mit geliebäugelt, sieht recht leistungsfähig aus:


http://de.sump.org/projects/analyzer/client/

Nicht ganz preiswert, aber hier gibts das Board, der Rest ist selbst zu bauen:

http://shop.trenz-electronic.de/catalog/product_info.php?cPath=1_114_119&products_id=569
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
071
14.06.2012, 21:52 Uhr
Olli

Avatar von Olli

Jo.. der Open Logic Sniffer basierte ja auch auf dem Sump Teil... aber irgendwie doch ziemlich unausgereift das ganz.... halt n Bastelprojekt - und eins reicht mir aus

Ansonsten - aktueller Status:

- P8000<-> SD-Card funzt mit dem geaenderten Schaltplan
- Konfigurationsjumper auslesen funzt, und wenn der "ATA-Jumper" gesetzt ist, will er die PATA-Funktionen verwenden anstelle der MMC Funktionen via Function Pointer. (die machen aber noch nix)
- High-Byte-Buffer für die ATA-Schnittstelle funzt auch zu befuellen und durchzuschalten (mit LED verifiziert)

Somit heisst es jetzt noch den 40pol Steckverbinder aufloeten und dann ran an den ATA-Code schreiben... das wird dann nochmal ein Spass
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 14.06.2012 um 21:52 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
072
15.06.2012, 01:06 Uhr
Enrico
Default Group and Edit


Fein, wird ja bald fertig sein.

Das grosse Jumperfeld hast Du einfach erstmal so vorgesehen?
Oder hast Du schon konkrete Ideen?
Für Karte / IDE würde ja ein Jumper reichen.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
073
15.06.2012, 07:49 Uhr
Olli

Avatar von Olli

Naja fertig.... jetzt kommt der stressige Teil - die ATA-Ansteuerung

Und bzgl. Jumper... ob ich jetzt da nur ein Jumper hinpflanze oder 4 oder 8... der '245 wuerde dann eh da sein, also warum nicht nutzen
Funktion hat erstmal nur ein Jumper - ich wollte noch einen 2. Jumper für "Debugging an/aus via seriell" machen die anderen zwei sind dann erstmal ohne Funktion bzw. vielleicht baut man ja irgendwann noch was in die Software ein
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
074
15.06.2012, 23:12 Uhr
Olli

Avatar von Olli

So... nah 5 Stunden mag die Festplatte endlich mal mit mir sprechen... ich war schon am verzweifeln... war kurz davor das Fenster gaaaanz weit auf zu machen und... schwups alles raus


Mal das Label von ein paar Platten ausgelesen:


Quellcode:
Init start
50disk is now ready
SAMSUNG SHD-30560A (APRO-5) SSI         P8000 WDC Emulator 0.90
Init start
d0disk is now ready
WDC AC31600H                            P8000 WDC Emulator 0.90
Init start
50disk is now ready
QUANTUM TRB850A                         P8000 WDC Emulator 0.90
Init start
00disk is now ready
Maxtor 2F040L0                          P8000 WDC Emulator 0.90
Init start
50disk is now ready
MAXTOR 6L080J4                          P8000 WDC Emulator 0.90


--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 15.06.2012 um 23:13 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
075
15.06.2012, 23:26 Uhr
Enrico
Default Group and Edit


Na, Du willst schnell aufgeben.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
076
16.06.2012, 15:35 Uhr
Olli

Avatar von Olli

hier gibts neue Bildchen

http://pics.pofo.de/gallery3/index.php/P8000/P8000_boards/WDC-Emulator

jetzt noch eben fix schreiben + lesen implementieren....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
077
16.06.2012, 19:37 Uhr
Olli

Avatar von Olli

So... Festplatte lesen klappt jetzt auch - hatte DA1 und DA2 des IDE-Connectors falsch beschriftet im Plan und entsprechend auch falsch im Code verwendet.... hat mich auch wieder Stunden gekostet..... grrrr

Nun noch schreiben programmieren und dann schauen wir mal wie fix das so geht
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
078
16.06.2012, 19:46 Uhr
Enrico
Default Group and Edit


Gratuliere, ein paar Stunden suchen geht ja noch.

Du steckst ja schon ziemlich tief in der SW und dem WDC-Interface drin.
Siehst Du eine Möglichkeit den Beisteller und Deinen Emulator parallel zu betrieben
und das LW per SW auszuwählen?
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
079
16.06.2012, 19:56 Uhr
Olli

Avatar von Olli

Ne.... Du muesstest dann ja irgendwie den Emulator "dazwischen" friemeln, und dann z.B. requests auf drive 0 von dem abfangen, und requests auf drive 1 auf 0 umbiegen und dann an den beisteller weiterleiten.... halte ich fuer problematisch zumal ja die HDD-PARameter nur auf Drive0 abgelegt werden usw..
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
080
16.06.2012, 21:31 Uhr
Enrico
Default Group and Edit


Ich weis nicht.

Man könnte sich dann aber auf die Gröse der MFM beschränken.
Oder das ändern

Mir gehts ja darum, dass sich die MFM-Platte auf die IDE kopieren lässt.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
081
16.06.2012, 22:40 Uhr
Olli

Avatar von Olli

dazu müßtest du im Grunde den in meinem ganz 1. Posting zu dem Thema beschriebenen "Teil 1" entwickeln... nämlich einen P8000-Emulator - natuerlich nur den Teil der Schnittstelle.... da hab ich aber aktuell kein Interesse dran
Mir reicht es, die Platte 1:1 unter WEGa via seriell abziehen zu koennen. Das einzige was ich da nicht mit abziehen kann, ist Sektor 0 mit PAR+BTT. Das ganze kann man dann ja auf die IDE oder SD-Karte ab Sektor 1 packen und dann mit sa.format einen neuen Sektor-0 schreiben... und schon kann man seine alte Platte weiternutzen.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 16.06.2012 um 22:41 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
082
17.06.2012, 02:52 Uhr
Olli

Avatar von Olli

Bis auf eine Platte gehen nun alle meine anderen 5 Platten.

--> http://www.mikrocontroller.net/topic/262084

Ich komme so im Schnitt auf 700KB/Sec schreiben wie auch lesen rein auf dem AVR.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 17.06.2012 um 02:52 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
083
17.06.2012, 11:05 Uhr
holm

Avatar von holm

Ich habe in Summe vielleicht 50 ATA Platten mit unbekanntem Zustand im Lager, ich kann Dir zum probieren noch welche schicken...
Keine Ahnung was Deine WD Platte für Schluckauf hat, es gab aber früher schon Platten die an einem PC liefen und am Anderen nicht.
Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
084
17.06.2012, 11:49 Uhr
Olli

Avatar von Olli

Mh... ich hab auch noch ne alte Quantum gefunden, die gibt zwar vor zu schreiben, aber nach so um die 100 kontinuierlich geschriebenen Blöcken setzt sie den Status auf Fehler....

Irgendwie habe ich das Gefühl, das da irgendwas in meinem Code noch nicht so rund läuft. Kennt wer noch ein paar ATA-Implementationen in C die man sich mal angucken könnte?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 17.06.2012 um 11:49 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
085
17.06.2012, 14:16 Uhr
Enrico
Default Group and Edit


Du hast für D8-D15 einen Latch, D0-D7 steuerst Du direkt an.
Sieht für mich so, also ob Du so 16 Bit-Zugriffe amchen willst.
/IOCS16 ist aber unbenutzt. Ich kann mir auch nicht vorstellen, dass /DMAACK auf /RESET gehört.

Ich hatte mir mal eine grössere Doku IDE /ATA gesaugt, nur finde ich die gerade nicht.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
086
17.06.2012, 14:24 Uhr
Olli

Avatar von Olli

So.. eine der zwei problematischen Platten spinnt auch unter FreeBSD rum wenn ich wie wild drauf schreiben will. Irgendwann bricht mein dd ab und die Platte meldet:

ad2: FAILURE - WRITE_DMA status=51<READY,DSC,ERROR> error=4<ABORTED> LBA=5504

Genaus wie wenn ich mit meinem Emulator schreiben will... paar hundert Blöcke schreiben geht, dann irgendwann bricht das Teil ab. Also... Platte->Schrott

Problem 1 gelöst.

Bleibt nur die Platte von der ich gar nicht lesen oder schreiben kann. Habe sogar schon CHS versucht mit der anstelle LBA. Aber die kann LBA..... Am PC scheint sie problemlos zu laufen, hab sie auch mal unter MS-DOS 6.22 erfolgreich formatiert.


@Enrico:
Genau - High-Byte via Latch, Low-Byte direkt. Wird z.B. hier auch so gemacht:
http://www.procyonengineering.com/embedded/procyonmp3/procyon_schematics.pdf

IDE scheint es wohl egal zu sein, was sich auf dem Bus tut solange /RD oder /WR nicht aktiv ist.

/IOCS16 sagt mir jetzt nicht.

/DMAACK gehört dauerhaft auf "High Pegel" - in manchen Schaltungen ist es auch unbeschaltet. Ich fand /RESET OK, da das ja auch am High-Pegel hängt - warum nochmal extra beschalten?


Übrigens: Sollte CHS funktionieren, oder kann man sich auf LBA-Platten beschränken? Ich habe gerade noch eine alte 250MB-Platte gefunden - die kann in der Tat nur CHS und kein LBA... aber irgendwie... weiss nicht, ob das sinnvoll ist, noch CHS vorzusehen - ich meine - wer wird das System mit IDE-Platten von '92 betreiben wollen?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 17.06.2012 um 14:47 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
087
17.06.2012, 15:04 Uhr
holm

Avatar von holm

Mach LBA, davon sollten ausreichend Platten aufzutreiben sein. Über CHS/XCHS kann man nachdenken wenn man es braucht...

/IOCS16 ist ein Signal von der Platte zum Host, informiert diesen wenn 16 Bit Transfers anstehen. Normalerweise sind bei IDE Platten die Registerzugriffe immer 8 Bit breit aber die Daten kommen dann 16 Bit breit zur/von der Platte..
Wenn man das weiß (GIDE Doku) kann man sich das Signal schenken.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
088
17.06.2012, 15:10 Uhr
Enrico
Default Group and Edit



Zitat:
holm schrieb
.....
Wenn man das weiß (GIDE Doku) kann man sich das Signal schenken.

Gruß,

Holm

Danke für den Zaun.


LBA halte ich auch für sinnvoller. Dann hast Du schon mal weinger Arbeit.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
089
17.06.2012, 15:24 Uhr
Olli

Avatar von Olli

So... habe jetzt eine 80GB Maxtor mal zum Spass mit dem Image meiner SD-Card beglückt... WEGA ist hochgefahren von der IDE Platte. Performance-Messung unter WEGA läuft gerade

Danach versuche ich den Code dann mal zu optimieren... z.Zt. ist er noch auf "gut wartbar" ausgelegt, weniger auf Performance

Wer mal lunschen will...

http://cvs.laladev.org/index.html/P8000/P8000_WDC_Emulator/P8000_WDC_Emulator/wdc_drv_pata.c?rev=1.9&content-type=text/x-cvsweb-markup
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
090
17.06.2012, 16:45 Uhr
holm

Avatar von holm

:-))

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
091
17.06.2012, 16:53 Uhr
Olli

Avatar von Olli

So - immer noch der nicht weiter optimierte PATA-Code.

Unter WEGA: mittels dd lesend - 8133 x 4K Blöcke

Original: 82,06 KB/Sec
PATA: 187.47 KB/Sec
SD-Card: 171,75 KB/Sec

Da merkt man schon einen riesigen Unterschied zw. dem Original-WDC und dem Emulator.


Unter WEGA: mein "bonnie" C-Festplattenstress-Programm:


Quellcode:
File './Bonnie.61', size: 5242880
Writing with putc()...      6:43.7
Rewriting...                2:47.6
Writing intelligently...    1:21.1
Reading with getc()...      8:18.2
Reading intelligently...    1:33.5

Schreiben: 63,13 KB/Sek.
Lesen: 54,76 KB/Sek.

PATA:


Quellcode:
File './Bonnie.36', size: 5242880
Writing with putc()...      6:36.3
Rewriting...                1:57.6
Writing intelligently...    1:15.9
Reading with getc()...      8:15.1
Reading intelligently...    1:02.5

Schreiben: 67,46 KB/Sek.
Lesen: 81,92 KB/Sek.

SD-Card:


Quellcode:
File './Bonnie.1106', size: 5242880
Writing with putc()...      6:43.6
Rewriting...                1:57.0
Writing intelligently...    1:17.2
Reading with getc()...      8:18.5
Reading intelligently...    1:02.1

Schreiben: 66,32 KB/Sek.
Lesen 82,45 KB/Sek.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 17.06.2012 um 16:54 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
092
17.06.2012, 18:22 Uhr
Olli

Avatar von Olli

So - nach etwas optimieren schafft man nun unter WEGA 1KB/Sec. mehr mit der Festplatte. Wenn man sich nur im AVR bewegt, bin ich so im Schnitt 20KB/Sec schneller geworden nach der Optimierung.

Die reinen AVR <-> Festplatten Zeiten:

Schreiben 512B Blöcke: 706,21 KB/Sec
Schreiben 4K Blöcke: 724,64 KB/Sec

Lesen 512B Blöcke: 739,65 KB/Sec
Schreiben 4K Blöcke: 757,58 KB/Sec

ist aber auch abhängig von der Festplatte - das war jetzt meine schnellste, eine Maxtor 6L080J4 - also auch schon in die Jahre gekommen
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
093
17.06.2012, 19:38 Uhr
Enrico
Default Group and Edit


Ich glaube nicht, dass Du da noch viel mehr rausholen kannst.

Höchstwarscheinlich ist da die U8000 mit der PIO-Anbindung bei den 190 k/sek schon an der Grenze.

Oder Du probierst es auch noch mit DMA-Übertragung.....
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
094
17.06.2012, 20:05 Uhr
Olli

Avatar von Olli

Du meinst DMA zur Festplatte hin? Äh ne... lass mal. Dann sicherlich erstmal mit nem ATxMega mit nem Bus oder so... aber ich glaube mehr geht eh nicht....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
095
17.06.2012, 21:17 Uhr
Enrico
Default Group and Edit


Nee, ich meinte Pseudo-DMA mit dem ATMega.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
096
17.06.2012, 21:39 Uhr
Olli

Avatar von Olli

Wie soll das gehen? Hab da keine Ahnung von?!

Gibts da was zum lesen zu?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 17.06.2012 um 21:59 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
097
18.06.2012, 01:52 Uhr
Enrico
Default Group and Edit


In der Kombination wirst Du sicherlich keine Doku finden.
In der Doku zu IDE sollte aber drin stehen wie DMA geht.

Jedenfalls geht die Datenübertragung dann mit den Handshakesignalen /DMACK /DMARQ.

Die Daten gehen dann am AVR bzw CPU vorbei, direkt Quelle - Ziel.

Dabei fällt mir ein, dass müsstest Du doch auch im PIO-Modues so programmieren können?
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
098
18.06.2012, 06:55 Uhr
Olli

Avatar von Olli

du meinst, die Daten bewegen sich direkt zwischen P8000 und Festplatte? Das wird sicherlich schwer mit meiner aktuellen Lösung mit dem Latch... und ich muss die Daten auch von der Endianess her drehen zwischen P8000 und Festplatte.... Es kommt auch noch hinzu, das die P8000 ja nicht nur in Blöcken kommuniziert, sondern auch in Köpfen, Sektoren und Cylindern (z.B. beim formatieren). Ich glaube, das geht nur mit anderer Hardware und wird extrem komplizierter.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 18.06.2012 um 08:04 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
099
18.06.2012, 16:39 Uhr
kaiOr

Avatar von kaiOr

Interessant wäre auch ein Geschwindigkeitsvergleich zw. aktuellster Compact und normaler P8000. Da war doch irgendwas mit beschleunigter Umschaltung der Datentreiber in richtung Koppel-PIO.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
100
18.06.2012, 17:11 Uhr
Olli

Avatar von Olli

Koppel-PIO hat aber nix mit dem WDC zu tun - wenn da was gemacht worden sein sollte (habe ich noch nix gefunden zu), dann gilt das ja nur zwischen dem 8 und dem 16 Bit Teil. Und das beträfe dann ja nur die ersten 4 Terminals, die Floppy-Laufwerke und den EPROM-Brenner.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
101
18.06.2012, 17:40 Uhr
Enrico
Default Group and Edit



Zitat:
Olli schrieb
du meinst, die Daten bewegen sich direkt zwischen P8000 und Festplatte? Das wird sicherlich schwer mit meiner aktuellen Lösung mit dem Latch...

Stimmt, ausserdem stört der Dekoder. Du müsstest den Treiber zur P8000
und einen der Treiber zum IDE zeitgleich durchschalten können.


Zitat:
und ich muss die Daten auch von der Endianess her drehen zwischen P8000 und Festplatte....

Wieso das?
Der Platte ist es doch herzliche egal, wie die Byte-Reihenfolge ist.
Für den Rechner ist es nur wichtig, dass das was er liest, das selbe, wie das geschriebene ist.



Zitat:
Es kommt auch noch hinzu, das die P8000 ja nicht nur in Blöcken kommuniziert, sondern auch in Köpfen, Sektoren und Cylindern (z.B. beim formatieren).

Nur dann?
D.h. Du musst das CHS vom Rechner mit max 17 Sektoren und max. 15 Köpfen
auf LBA umrechnen?
Dann wäre der Aufwand ja noch schlimmer, wenn Du auch noch auf CHS der Platte umrechnen würden wollen müsstests.

Was wäre denn das max. an Spuren, 64k?

Man muss ja nicht in jedem Fall DMA machen.
Sondern nur bei den wichtigen Sachen, also wenn WEGA läuft.




Zitat:
Ich glaube, das geht nur mit anderer Hardware und wird extrem komplizierter.

Mehr Hardware und etwas komplizierter wäre das bestimmt.

Warscheinlicher ist es, aber dass sich der Aufwand nicht wirklich lohnen würde.
--
MFG
Enrico

Dieser Beitrag wurde am 18.06.2012 um 17:42 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
102
18.06.2012, 22:08 Uhr
Olli

Avatar von Olli


Zitat:
Enrico schrieb
Warscheinlicher ist es, aber dass sich der Aufwand nicht wirklich lohnen würde.

So siehts aus
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek