I2C mit Display parallel?

OP (Firma: google) #1485150
Lesenswert?

hallo freunde und C-kollegen

ich will ein uhrenbaustein ansteuern und vielleicht noch ein paar 
temperatursensoren über I2C.

das problem ist nur dass an den Pins SCl und SDA ein Grafikdisplay 
daranhängt (KS0108)

(siehe Bild)

ich will jetzt quasi an die beiden pins einfach anknüpfen siehe bild im 
anhang

frage: geht das oder fängt das lcd dadurch zu spinnen an????

das wär nämlich supergut

danke für alle eure antworten!!!

martin!!!!!!!!!!!!
Angehängte Dateien:
Persönliche Seite #1485162
Lesenswert?

Wenn Du dafür sorgst, daß die /CS-Leitung des Displays bei Nutzung des 
I2C-Busses inaktiv ist (und also das Display seinen Datenbus hochohmig 
lässt), dann sollte es keine Störungen in der Richtung I2C->Display 
geben.

Allerdings ist nicht gewährleistet, daß die Kommunikation mit dem 
Display nicht den I2C-Bus stört; die angeschlossenen I2C-Bausteine 
können das Gewackel an den Leitungen als I2C-Kommunikation 
missinterpretieren.

Obendrein müssen die I2C-Leitungen mit Pullup-Widerständen versehen 
werden; diese könnten den Datenbus des Displays stören.

Alternative: Display an anderen Port des µC hängen, oder I2C-Bus per 
Bitbanging als Software-I2C auf anderen ungenutzten Portpins 
implementieren.
OP (Firma: google) #1489123
Lesenswert?

Hallo

also das letztere von Rufus täte mir schon recht gut gefallen.
Dieser Software I²C aber hast du das schon mal gemacht.
Wenn du das schon mal hingekriegt hast, könntest du mir bitte vielleicht 
einen Code für einen AVR zukommen lassen.

(funktioniert das auch wirklich wie ein echter I²C ?)

Und JA ich weiß schon was ein I²C-Bus ist, habe aber noch nie damit 
gearbeitet.
Ich bin sozusagen ein fortgeschrittener Anfänger in C und Azubi zum 
Elektroniker.

Aber noch mal zum LCD, diese Signale stören doch eigentlich nur das LCD 
wenn es zur gleichen Zeit angesteuert wird oder?
Wenn ich sicherstellen könnte dass immer nur eines von beiden arbeitet 
ginge es dann?
Solange der R/W-Pin und die Controll-Pins nicht angesteuert werden 
dürfte es das Display doch wenig kümmern was an seinen Datenpins los 
ist???

danke schon mal

PS: ich kann den Port nicht so einfach tauschen, es sei denn ich ätze 
noch mal !
Gast #1489136
Lesenswert?

>Solange der R/W-Pin und die Controll-Pins nicht angesteuert werden
>dürfte es das Display doch wenig kümmern was an seinen Datenpins los
>ist???

Das ist richtig. Aber hast du auch den zweiten Teil von Rufus
Post gelesen? Die LCD Ausgaben können dein I2C stören.
#1489237
Lesenswert?

mit ein wenig pech sendest du bei deinen LCD-daten ausgerechnet 
irgendeine master-anfrage. woher sollen die I2C geräte den unterschied 
zwischen LCD-daten und I2C daten erkennen? und wenn das passiert wird 
auch irgendein slave antworten und dir die LCD-daten müllen.

es gibt I2C multiplexer, du könntest mit so einem baustein den I2C für 
die zeit abschalten in der du das LCD bedienst. in etwa genauso wie die 
steuerleitungen das beim LCD machen.
OP (Firma: google) #1490219
Lesenswert?

Hallo

es würde doch mit so einem Analogschalter gehen oder?

HCF 4066
(QUAD BILATERAL SWITCH FOR TRANSMISSION OR
MULTIPLEXING OF ANALOG OR DIGITAL SIGNALS)


http://www.datasheetcatalog.org/datasheets/90/206772_DS.pdf


Hat 4 Switches genau das brauch ich doch.

     1. SDA - Data1 Display
     2. SCL - Data0 Display
     3. SDA - SDA I²C Bausteine
     4. SCL - SCL I²C Bausteine

Den Rest wie gegenseitige Verriegelung mach ich per software
und die 4 Control-Pins für den Switch hab ich auch noch übrig.


PS: wäre immer noch an einer Software-I²C Lösung interressiert

danke
Gast #1490371
Lesenswert?

Wie wäre es SCL(PC0) und SDA (PC1)  mit Dioden entkoppeln und danach SDA 
und SCL mit Pullup  Widerständen gegen VCC.
Zu den Startvorrausetzungen gehört dass der I²C-Bus frei sein muss also 
SDA und SCL  auf High.
Es sollte eigentlich zu keinen Störungen kommen außer, das zufällig beim 
Datensenden zum LCD,eine gültige Adresse erzeugt wird und einen 
I²C-Baustein anspricht.  Dürfte allerdings nicht vorkommen.
Allerdings müsste man dafür sorgen, dass während Daten zu einem 
I²C-Baustein gesendet wird, keine Daten zu dem LCD gesendet werden. 
Z.B.  durch einen Interrupt gestört wird.
Gast #1491694
Lesenswert?

Hi!


OK vergiss mein Vorschlag des würde nur in einer Richtung gehen.

Hab aber trotzdem noch einen.

zum Display müssen ja nicht jede µs Daten gesendet werden.
Versuch es per Software so zu machen das Du Daten zum Display nur dann 
sendest wenn der I²C-Bus frei ist.

Evtl. müsstest  noch in DB0 und DB1 Widerstände reinhängen so 1K.
Auf jedenfall müssen die Leitungen SDA und SCL gegen VCC geschaltet 
werden
mit 4,7k.
#1491730
Lesenswert?

Vorschlag zu Güte

Uhrenmodul und LCD Datenbus (via PCF8574) an den I²C Bus (=TWI-Bus).
Steuerleitungen des LCD direkt an die µC Ports.

Warum?
Weil die teilweise Bidirektionale Übertragung von Daten und 
Steuerleitungen über einen PCF8574 für einen Anfänger etwas verwirrend 
sein kann.


Die I²C Leitungen mit einem anderem Bus zu Teilen, davon halte ich 
überhaupt nichts. Das ist extrem anfällig für Fehler und der Aufwand 
steht in keinem Verhältnis zum Nutzen.

siehe Rufus t. Firefly: "Obendrein müssen die I2C-Leitungen mit 
Pullup-Widerständen versehen werden; diese könnten den Datenbus des 
Displays stören."
Die Displaydaten können wiederum unter Umständen wie I²C Bus-Signale 
aussehen, und könnten dir die Uhr umprogrammieren (sehr 
unwahrscheinlich, aber möglich).
Der I²C hat nämlich keine /CS Leitung und ist deshalb immer aktiv.
Weiterhin müsstest du für jeden Displayzugriff (bei Verwendung des 
Hardware TWI Moduls) das Modul abschalten (um die Leitungen 
freizugeben).
Wenn du die Displaydaten gesendet hast muss du das TWI Modul wieder 
reinitialisieren, und danach den Bus aus dem evt. undefinierten Zustand 
herausholen (mindestens 8x Stopp-Kommando. nötig)

Alles ein wenig kitzlig für erste Projekt.


Wegen Software TWI haben mit die App-Notes von Atmel sehr weiter 
geholfen. So das ich teilweise auch auf einem ATMega8 SW-TWI verwende.
Allerdings programmiere ich in Assembler.

bis dann
Hauke
OP (Firma: google) #1492279
Lesenswert?

Hallo Helmut!

das sieht eigentlich ganz gut aus.

eine frage:   was heißt "sendACK", "sendNACK"... usw. (dieses ACK und 
NACK)

sonst gefällt mir das, sieht vielversprechend aus.



@Klaus:
das mit diesem PCF8574 ist zwar ne gute Idee aber ich habe ja für das 
"KS0108" Display schon ne geeignete Header-Datei die funktioniert 
tadellos.
Ich glaube ich als eigentlicher C-Anfänger bekomme das nicht hin das ich 
diese umschreibe oder gar neu mache. Das ist mir zu schwierig und 
kompliziert.

aber danke!!!
#1492643
Lesenswert?

>eine frage:   was heißt "sendACK", "sendNACK"... usw. (dieses ACK und
>NACK)

Die eine Routine sendet ein ACK zum I2C Teilnehmer die andere ein NACK .
Damit wird dem I2C Slave mit geteilt das noch ein Byte ausgelesen werden 
soll. Wird in meiner Routine zum Block auslesen gebraucht. Kann sein das 
du das in deiner Ansteuerung nicht brauchst.

Was fuer ein Uhrenbaustein hast du den?
Ich habe das mal fuer einen DS3231 von Maxim gemacht.

Gruss Helmi
OP (Firma: google) #1494841
Lesenswert?

Hallo Helmut!

also ich hätte den DS1307 genommen, für den würde ich aber schon was 
zusammenbringen.

ich habe nur das dumme problem dass ich eine platine die ich vor nem 
halben jahr geätzt habe erweitern wollte um eine echte Uhr (bisher über 
timer gelöst) und vielleicht ein-zwei Temperatursensoren DS1820??

es aber nicht geht da ich ja dieses Grafikdisplay dran hab.
ursprünglich ist das ne platine um das Umdrehungssignal eines 
Stromzählers dass ich über nen infrarotsensor abtaste zu erfassen und 
auszuwerten.
Am display zeigt sich dann der Tagesertrag von Heute und Gestern und die 
aktuelle Leistung, zusätzlich kann man noch ein Diagramm von Heute und 
Gestern anzeigen lassen.
(super extra: die LCD-Beleuchtung ist über PWM und Transistor 
automatisch dimmbar)  :)

danke für alles!
#1495039
Lesenswert?

>also ich hätte den DS1307 genommen, für den würde ich aber schon was
>zusammenbringen.

Der hat aber den Nachteil das er einen externen Quarz braucht und dann 
abgeglichen werden muss. Der DS3231 ist einer der genausten RTC auf dem 
Markt. Der hat eine interne Temperaturkompensation. Wenn man etwas in 
Serie bauen will kostet der Abgleich Geld. Auch möchte der Kunde eine 
genaue Uhr.

Gruss Helmi

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren