Hallo, ich habe mir ein board gebaut, auf dem 4 mal 74hc165 und 4 mal 74hc595 zur porterweiterung sitzen. Die anschlüße zum AVR sind folgende : Pind.0 = clock input (hc595) Pind.1 = storage clock input (hc595) Pind.2 = Data input (hc595 Pind.3 = clock input (hc165) Pind.4 = parallel load input (165) Pind.5 = output (165) Der Code ist : . . Config Portd = &B11101111 Do Portd.4 = 0 Portd.4 = 1 Portd.3 = 0 Portd.3 = 1 Temp = Pind.5 Locate 1 , 1 Lcd Temp Waitms 200 Loop Ich beckomme keine Werte eingelesen. Die Variable Temp bleibt immer null. Wo hab ich einen Fehler gemacht ? Danke !!!
Schau dir mal den Befehl an: SHIFTIN pin , pclock , var , option [, bits , delay ] Damit kannst du wunderbar den Inhalt in eine Variable einlesen. So wie du das machst, kannst du immer nur einen Zustand anzeigen der immer alle 200ms wechselt!! Das equivalent dazu wäre SHIFTOUT, zum Ausgeben auf einem Schieberegister. Grüße Addy
Hab ich auch schon versucht. Ich komme nur mit den parametern nicht klar. Müßte es so gesetzt werden : Shiftin Pind.5 , Pind.3 , temp
Ja schon, da fehlen aber noch die Auslesebedingung und Optional die Anzahl der Bits, bzw ein Waitstate zwischen den Abfragen. SHIFTIN Pind.5 , Pind.3 , temp , 0 , 8 | | Je nach Register+ | Bei 8Bit-Register = 8+ Musst im Datenblatt nachguggen, bei Welcher Flanke die Daten anliegen.
Ach ja, es gibt im Samples-Ordner noch ein Beispiel, das nennt sich shift.bas. Ansonsten findest du eigentlich die Beschreibung ausführlich in der Hilfe. Schreib doch kurz dazu wo es genau hängt, und welche Parameter du nicht verstehst.
Habe nun folgendes in meinem Code stehen. Config Portd = &B11011111 Do Shiftin Pind.5 , Portd.3 , Temp , 3 , 8 , 10 Locate 1 , 1 Lcd Temp Loop Ich beckomme nur eine 255 angezeigt. Ist die Port Config richtig ?
Mach doch Config Portd.5 = Input , da du oben schon um eins verrutscht bist. Wenn du 4 Hintereinandergeschaltet hast, dann musst du doch 8*4 Bits einlesen. Ich tippe jetzt eher auf einen Schaltungsfehler. Wie hast du die Register angeschlossen, gibts einen Schaltplan?
Wenn ich Config Portd.5 = Input setze, beckomme ich beim Compelieren eine Fehlermeldung : Can´t find HW-register (DDR5). Die Schaltung habe ich auch schon nachgesehen. Sie stammt von der Seite : www.ucapps.de unter MB Hardware/DIn Module
Ach ja was mir jetzt noch aufgefallen ist, du hast im letzten Quelltext die Latchclock nicht benutzt, das heisst die Eingangswerte ins Register musst du schon noch vorher übernehmen.
Juhu, so läuft es ..........Habe die Variable Temp1+2 als Word definiert. Ich frage jeweils 2 74hc165 (16bit) ab. Config Portd = &B11011111 Do Portd.4 = 0 Portd.4 = 1 Shiftin Pind.5 , Portd.3 , Temp1 , 2 , 16 , 10 Shiftin Pind.5 , Portd.3 , Temp2 , 2 , 16 , 10 Rotate Temp1 , Left , 8 Rotate Temp2 , Left , 8 Locate 1 , 1 Lcd Bin(temp1) Locate 2 , 1 Lcd Bin(temp2) Loop
Hi, das geht auch in einem rutsch mit den 32, einfach als LONG definieren, dann passt auch die 32 Bit rein. Aber schön zu hören das der Grundstein funktioniert.
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.