Hi zusammen, ich möchte meinen ATMega88 um 8 Inputs und 8 Outputs erweitern. Dazu habe ich an einen 74xx165 und ein 74xx595 gedacht. (beschaltung siehe Anhang) Da ich an den 595 in 10ms abständen daten sende, dachte ich mir, das ist ein perfektes Intervall um meine Taster gleich mit abzufragen. Ich würde also meine Ausgänge und Eingänge in einem Aufwasch schreiben und lesen. Wenn ich jetzt aber keinen ganz groben Fehler beim lesen der Datenblätter gemacht habe, dann shiften beide Register an der low->high-Flanke. Stell ich jetz den SPI-Modus so ein, dass es für den 595 passt, dann habe ich beim lesen des 165 die Datenflanken genau dann wenn sie nicht sein sollten. ich müsste also das clk-signal für den 165 genau invertieren. ich dachte da an einen Transistor mit Pullup, allerdings hab ich absolut keine ahnung welchen Transitor ich für über 1MHz (so schnell soll das SPI takten) hernehmen kann. Die standard BC817 sind zwar mit 100MHz ausgeschildert, allerdings hab ich irgendwie ein komisches Gefühl. Das wär zu einfach. Als Pullup dachte ich so an 1k. Schätze das sollte reichen. Ich will also euren (meist) fachmännischen Rat dann doch lieber nochmal einholen, bevor der Frust wächst. Gibt doch Sinn den Transitor einzubauen (SPI-Modus dann 00)? Der Transistor BC817, ist der OK mit den widerständen? Danke schonmal lg Chris
hat denn keiner eine Antwort?
Ja schade. Vorallem da mich das Tutorial total verwirrt. http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister Da werden Pins genannt die mein 595 gar nicht hat. Z.B. der Eingang G. Ich vermute mal es ist der in meinen Datenblättern als /OE. Genauso beim 165: > Mittels des Eingangs PL (Parallel Load) werden die Daten vom parallelen > Eingang in das Schieberegister übernommen, wenn dieses Signal LOW ist. > Hier muss man aber ein klein wenig aufpassen. Auf grund der > Schaltungsstruktur ist der Eingang PL mit dem Takt CLK verknüpft (obwohl > es dafür keinen logischen Grund gibt :-0). Damit es nicht zu unerwünschten > Fehlschaltungen kommt, muss der Takt CLK während des Ladens auf HIGH > liegen. ... In meinem Datenblatt steht das nicht. Und da iat auch keine Verknüfung zu erkennen. http://docs-europe.electrocomponents.com/webdocs/0cb5/0900766b80cb529f.pdf Irgendwie finde ich das ganze überhaupt nicht stimmig. Auch wird irgendwo geschrieben die beiden seien kompatibel und könnten gleichzeitig gelesen bzw. geschrieben werden, aber dass kann ja nicht sein wenn sie beide zur gleichen Zeit shiften. ein shift beim 165 entspricht dem anlegen des nächsten Bits an die Datenleitung, während ein shift beim 595 dem lesen der Daten entpricht...
Wie ist denn das Signal zur Übername der Daten an das Schiebereigister während des shiftens Der 595 ist Flankengesteuert und der 165 ist Zustandsgesteuert Das Signal muss während des shiftens 1 sein damit der 165 nicht falsche Daten zwischendurch übernimmt Wenn das Übernahme Signal erst nach dem Shiften auf null gesetzt werden sind die Daten erst nach dem zweiten Einlesen korrekt Wenn das Übernahme Signal vor dem Shiften passiert sind die Ausgabedaten bis zum nächsten Übergabesignal unbestimmt (Bei LEDs egal) Je nach dem wie man es macht muß man hier aufpassen .
du meinst PC2? das ist auf high-pegel und erhält kurz nach dem durchshiften einen kurzen low impuls. Dass dann das 1. lesenvom 165 müll ist ist mir klar, deswegen werde ich in der initialisierung ein 0x00 an den 595 senden und die gelesenen Daten verwerfen. Damit hab ich beide ICs quasi initialisiert.
Wäre ein Portexpander ala MCP23S17 hier nicht sinnvoller? Ansonsten gibt es übrigens mit dem 74HC166 auch noch eine flankengesteuerte Variante des 165.
Wenn du "Soft-SPI" machst brauchst du den Inverter-Transistor nicht. Verbinde den CLK-Pin (2) des 165 einfach mit der SCK Leitung. Ändere dann einfach nur die AVR-SPI-Routine etwa so in dieser Richtung ab: 1: SCK auf 0 2: Datenbit auf MOSI rausschieben 3: SCK auf 1 ; der 595 schiebt 1x rein, der 165 ein Bit raus 4: Datenbit auf MISO einlesen 5: und wieder zur 1 zu 3: laut TI schieben beide ICs (74hx165 und 74hx5895) mit steigender Flanke: http://focus.ti.com/docs/prod/folders/print/cd74hc165.html http://focus.ti.com/docs/prod/folders/print/sn74hc595.html
Chris schrieb: > Hi zusammen, > > ich möchte meinen ATMega88 um 8 Inputs und 8 Outputs erweitern. Dazu > habe ich an einen 74xx165 und ein 74xx595 gedacht. (beschaltung siehe Warum nicht ein 595 und ein 597? Das passt denke ich besser zusammen. fchk
Oh verdammt bin ich blind! Nein ich wollte kein Soft-SPI, sondern den USART im SPi-Modus nutzen. Hab schon alle leitungen umverlegt von PortC nach PortD. Wer lesen kann ist klar im Vorteil! Zum Thema: ich hab mich jetzt dazu entschlossen die Platine einfach mit dem transistor-inverter zu bauen und zu hofen dass es klappt. Aber das sollte es schon denke ich. Jetzt muss ich nur das Routen nochmal angehen grr... Vielen Dank lg chris
Berichtest du bitte, ob es so klappt? Würde mich sehr interessieren! günstige Portexpander kann man doch immer gebrauchen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.