Forum: Compiler & IDEs Externes Schiebereister einlesen


von Bernd B. (behbeh)


Lesenswert?

Hallo,
ich möchte mit einem ATMEGA88 ein externes Schiebereister(CD4014) 
einlesen. Mit den Bits setzen fuer die Leitungen CLK, PS, habe ich kein 
Problem. Aber wie schiebe ich eine Portpin(8 mal wegen 8 Bits) in ein 
Register hinein. Bin neu mit C-Programmierung angefangen, mir fehlt 
einfach die richtige Codezeile..
 register << 8 mal portpin portb,0.
Oder programmiert man das in C  so:?
1. den Port komplett einliesen,
2. speichert im Register
3  den Pin 0 mit "oder" ausmaskieren
4. und mit "oder" in ergebniss register abspeichern..??

Kleiner Tip wäre sehr hilfreich fuer mich

Bernd

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Nimm das SPI-Interface.

von Bernd B. (behbeh)


Lesenswert?

Hallo,
danke für den Tipp,
also muss ich vom 4094 Q8 an MISO anschliessen, SCK an CLK(4094) und SS 
an PS ?. Wie wird SS denn vom Controller bedient, automatisch oder muss 
es per Software gesetzt werden.?

Danke nochmal..

von johnny.m (Gast)


Lesenswert?

Mach es mit SPI. Dafür ist das hervorragend geeignet.

> den Pin 0 mit "oder" ausmaskieren
Wenn Du nur den Wert eines Pins haben willst, dann wird das mit ODER 
sicher nicht klappen. Dafür musste schon UND nehmen.

von johnny.m (Gast)


Lesenswert?

SS\ brauchst Du nicht. Der SS\ am Controller ist nur für den Fall, dass 
der Controller als Slave arbeitet.

von johnny.m (Gast)


Lesenswert?

...Für den PS kannste im Prinzip einen beliebigen Pin vom µC nehmen.

von johnny.m (Gast)


Lesenswert?

Ach ja, was wichtig ist für die Funktion des SPI (und ein Grund, den 
SS\-Pin doch als Ausgang für PS zu benutzen): Der SS\-Pin vom 
Controller darf, wenn er als Eingang konfiguriert ist, nicht auf Low 
gezogen werden, da sonst in den Slave-Betrieb umgeschaltet wird. Also 
konfiguriere ihn als Ausgang und hänge das PS vom Schieberegister dran. 
Dann kann nichts schiefgehen.

von johnny.m (Gast)


Lesenswert?

Upps, ich sehe grad, das 4094 ist ein 
seriell-zu-parallel-Schieberegister. Das geht nur zur Ausgabe von 
Daten, aber nicht zum Einlesen...

von johnny.m (Gast)


Lesenswert?

Und noch mal "Upps": Hatte mich verlesen. Du hast ja nen 4014

von johnny.m (Gast)


Lesenswert?

Hab mir die obigen Postings noch mal durchgelesen und weiß jetzt auch, 
wo ich das 4094 gesehen hatte, nämlich in Deinem zweiten Posting. 
Kleiner Widerspruch. Wie gesagt, mit nem 4094 geht das was Du willst 
nicht.

von Bernd B. (behbeh)


Lesenswert?

Hallo,
vielen Dank für die Tipps.
Also ich muss Daten einlesen aus vielen 4014..
Bis zu 32 Stk in Serie. Diese werden als sogenannter S88 Bus verwendet.
(Märklin Interface 6051). Nachzulesen bei "www.digital-bahn.de".
Mein Ziel ist es, das zwar bei Ebay usw. erhältliche Interface 
nachzubauen, die Steuerung der Weichen klappt schon. Technisch gesehen 
ist es ein Interface, was von der RS232 Befehle bekommt, umsetzt in 
I2C-Bus  Befehle an die Zentraleinheit, und die führt dann die Befehle 
aus.
Werde mal mit dem 4014 und dem SPI Bus mir die Pegel und Pulszeiten 
ansehen, was da machbar ist...
Vielen Dank nochmal für die Antworten..
Vielleicht kann ich mich mal hier mit meine Erfahrungen wieder nützlich 
machen.
Bernd

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
Noch kein Account? Hier anmelden.