Re: 82c55 an C2 Ports Kategorie: Sonstige Hardware (von André H. - 7.08.2003 16:24) | |
Als Antwort auf Re: 82c55 an C2 Ports von Rolf - 7.08.2003 14:34
| |
Hallo Rolf, > > Das LCD benötigt au�erdem noch P1L.0, .1 & .2 . Also ist von P1L nur P1L.3 wirklich frei. > > �h... das wuste ich nicht... damit ist die Möglichkeit des Umbaus auf P1H gestorben. > Dummerweise geht das übriges auch nicht aus irgendeiner Doku hervor... oder ich habs überlesen > (was warscheinlicher ist). Letzteres. Es steht im Dateikopf von lcdext.c2 unter den Versions-Infos. > Davon abgesehen, gibt es irgendwo eine tabellarische �bersicht, welche Ports mit welchen Funktionen > vorbelegt sind? Ich meine für die Unit selbst ist das ja noch raus zu kriegen aber ich finde die Info's immer nur > Stückchenweise. Und das APP-Boardmanual ist nicht sehr ergiebig. Wenns das noch nicht gib, versuche > ich mal sowas zu machen und Du müstest das noch mal korrigieren und dann in die Site setzen. Nein, gibt es nicht. Ich wollte eine solche Tabelle schon für I²C-Busadressen für die verschiedenen Bausteine/Erweiterungen erstellen, bin aber zeitlich noch nicht dazu gekommen. So etwas für die Ports zu machen, ist keine schlechte Idee. Hier mu� man natürlich alle HW-Erweiterungen berücksichtigen.(zumindest die, für die es C2-Module gibt) Die Frage ist nur, wo Stecke ich solche Tabellen auf meine Site hin. :-) Aber wahrscheinlich unter "Tips & Ergänzungen" oder "Hardwarekomponenten". > > So "mächtig" bremst der I²C-Bus das Programm nicht aus. ... > > Hm... hm... dann wäre es ja fast einfacher, wenn ich 3 PCF-Bausteine verwende denn ob ich nun 12 Byte > für eine Aktion an der Peripherie über den i2c jage oder 4 + Bausteinprogrammierung im 82c55 mit 3 Ports, > das geht sich fast gleich bzw. ist sogar vermutlich mit PCF einfacher zu lösen. > > Es gibt ja scheinbar ein i2c-16Bit PCF... würde ich den verwenden, was würde mir das bringen? Wenn Du ihn irgendwo erhälst, ja. Der Vorteil lieget hier, da� der PCF8575 für 16bit nur eine Adresse belegt. Dann mu�t Du ihn noch löten. Der PCF8575 ist nämlich nur in µSOP (RM 0,65mm) erhältlich. Ich habe schon ein paar µSOPs gelötet. Da geht viel Zeit drauf ... Ich werde vorrausichtlich in wenigen Tagen einen anderen 16Bit-Portexpander im Sortiment haben: Den Maxim MAX7311CWI (Wide-SO, RM1,27 mm). Mit dem MAX7311 kann man maximal 64 verschiedene Adressen am Bus belegen. (kein Schreibfehler) Somit hätte man bis zu 1024 echte I/Os extra, wenn man 64 Sück davon am Bus betreibt. (Man benötigt dann aber ein paar I²C-Extender oder Bus-Puffer(P82B96, den werd ich vorraussichtlich ab nächster Woche anbieten können) > Vorausgesetzt, ich will mir 8 Datenleitungen (bi) und 16 Adressen (out) bauen. Ich denke, ich würde > gengenüber 2 8Bit-PCF ein Start- und ein Stopzyklus sparen... ist das so richtig? Das stimmt. Wenn Du nur 16 Ausgänge benötigst, reicht auch ein SAA1064. Es ist zwar ein 7-Segment LED-Treiber, jedoch arbeitet dieser prächtig im CC2Net-RAM-Interface I²C und im CC2Net-RAM-Device HS. Da Du ja bereits ein CC2Net-RAM-Interface I²C hast, kannst Du dieses dafür wunderbar verwenden. Die Pins D0 bis D7 für den Datenbus und A0 bis A15 für den Adressbus. A16, CS1 bis CS4, WE sind die Ports P.0 bis P.5 des zweiten PCF8574 auf der Platine. (P.6 und P.7 sind an der 4pol. Stiftleiste herausgeführt.) > > Dann wäre aber P1H.0 bis auf einen Port komplett belegt. Es brächte also keine Vorteile. > > Au�erdem: Du hast bereits den Quellcode zu sys0001.hex. In der ZIP sys0001.zip > > liegt die Datei sys0001.asm. Das ist der ganze Quellcode. :-) ) > > �h.. ja... bin blind....sorry... kann es sein, das ich in eine alte Datei geguckt hab? > irgendwie hab ich letztens den Source nicht gesehen... aber is auch egal.... Nö, der Quellcode war von Anfang an dabei, eben nur in einer ZIP in der ZIP. :-) > > Lahm ist das Display am I²C-Bus sicher nicht. ... > hm.. ich dachte es würde mehr bremsen... dann wäre das noch ne Alternative. Damit wären > dann alle P1L Ports frei und ohne weitere Funktion (bis auf Drucker vermutlich, aber damit kann ich leben) > Die P1H4-7 müsten dann auch frei sein. Damit kann ich dann z.B. selektieren... > Ob man dann da ein 82c55 oder besser mehrere 74hct373/573 bzw. 74hc245 dann hängt, lasse ich mal offen. > Ich würde das mal als Variante 2 bezeichnen. > Die Lösung mit mehreren PCF-Bausteinen als Variante 1. > > > Mein Tip: Setze das Display entweder auf den I²C-Bus oder benutze das SR-LCD-Interface. > > Das ist nur minimal langsamer als lcdext.c2 ab V2.2 und benötigt nur 3 statt 7(6) Ports > > für das Display. Zwei Ports können evtl. mit anderer Hardware geteilt werden. > > Von der SR-Geschichte halte ich nicht so viel. Es ist i2c ohne jeglichen Protokollrahmen und daher > etwas störanfälliger. Ich weis das es funktioniert aber es ist eben nicht mein Ding. SR sind so primitiv, da� praktisch nichts schiefgehen kann. Nur sollten die Leitunegn nicht zu lang sein, wenn man mit ASM arbeitet. Ein Beispiel für die Geschwindigkeit beim CC2Net-RAM-Device mit ASM-Treiber: Das Interface I²C schafft ca. 1kB/s . Das Interface Ports ca. 6,5kB/s . Hier werden 21Bit über 3 Schieberregister geschoben. Mit Latches kann man auch arbeiten. Aber um das bidirektional hinzubekommen benötigt man schon einiges an Ports. :-) (8-Bit Daten-/Adress-Bus, Chipselect(LE) pro Latch, Read/Write(OE) pro Latch(wenn bi)) Ich bin auch gerade dabei ein einfaches und günstiges (passives) Interface für 128x64 Grafik-Display zu entwickeln(samt Treiber). Hier verwende ich drei SR, zwei mit Ausgängen(16Bit) und eines mit Eingängen(8Bit), da Daten vom Display zurückgelesen werden müssen. Das Ganze wird dann 4 oder 5 I/Os der CC2 belegen. (Ich mu� noch schauen, ob ich den einen Port sparen kann) > > Die nächste Möglichkeit: > > Du machst aus P1L einen 8-Bit Datenbus, der gemeinsam für das LCD und den 82c55 benutzt > > wird. Für das Display werden dann noch zwei Steuerleitungen benötigt. > > (R/W kann fest auf Masse gelegt werden) > > Gibt das nicht Trouble mit dem Display - weil dann nicht mehr abgefragt werden kann ob es Ready ist. > Ergo : Buchstabensalat Dafür gibt es schlie�lich Captures :-) Au�erdem wird das Busy-flag des Display garnicht abgefragt, da die Ausführungszeiten des HD44780 (und komaptibel) bekannt sind. In vielen "Anwendungen" ist es üblich, für mehrere Komponenten einen gemeinsamen Datenbus zu verwenden. Beim PC sei hier einmal der ISA(wer ihn noch kennt *grins*) oder der PCI-Bus genannt. Au�erdem betreibe ich selbst so ein Portsharing mit dem ext. LCD. Und zwar beim CC2Net-RAM-Interface Ports. Und das funzt dank ASM-Treiber für LCD und RAM-Interface sogar ohne Captures. > Ich glaub, ich mu� mich tatsächlich mit den Internas des C164 beschäftigen... hab ich eigentlich keine Zeit zu > aber was solls... rumfrickeln kostet auch Zeit... Das ist nicht so wild. Das Modul sfr.c2 nimmt Dir hier viel Arbeit ab. >. Ich hab schon mal gedacht ob das mit den AD-Ports geht aber > die sind glaube ich nur gemultiplext auf ein AD-Wandler geführt... das bringt dann nichts. Nein. Die AD-Ports können auch als Ports konfiguriert werden und auch so genutzt werden. Jedoch nur als Eingänge. Darum habe ich sie nicht genannt. > Welche von beiden Lösungen V1 oder V2 würdest Du jetzt bevorzugen und warum? Die Lösung mit den Latches wäre hier sicher die bessere, weil schneller (zumindest in ASM). Andererseits wären so eben quasi alle Ports verbraucht, womit dann doch die I²C-Variante Ihren Vorteil hätte. Hier kann ein Mittelweg genommen werden: Für den Datenbus ein PCF8574 und für den Adressbus die Latches. Der Vorteil wäre hier, da� man beim sequentiellen Lesen oder Schreiben nurnoch einmal den PCF8574 adressieren müsste und dann solange mit i2c.write() schreibt bzw. mit i2c.read() liest, solange der Vorgang dauert. So ist es auch beim CC2Net-RAM-Interface Ports, eben nur mit SR. Und ich schaffe damit 6,5kB/s . (Als Peakwert einmal sogar 6,9kB/s) Bei Deiner Anwendung mit den Latches und ASM lässt sich das sicher auf ca. 10kB/s erhöhen. Eine reine Latch-Version könnte hier in ASM sicher noch einiges mehr schaffen. MfG André H. Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | |
Antwort schreiben Antworten: |