Forum: Mikrocontroller und Digitale Elektronik Frage zu Widerstand an I2C Bus


von George S. (fisch-otter)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe eine Frage zum Angehängten Schema-Schnipsel (Ich darf leider 
den Schaltplan nicht komplett publizieren da Firmenprojekt).
Das Schema bestand bereits, ich habe die Aufgabe es zu erweitern / 
verbessern. Leider habe ich keinen Zugriff auf die Code-Files die auf 
dem ATmega32 laufen!

Am ganzen Port C des ATmega32 sind Schalter und Taster, je 1 pro Pin 
angehängt.

Ich habe mich nun gefragt, warum dort ein Widerstand 1kOhm von PC7 zu 
PD3 angehängt ist. Die Pins PC6 / PC7 sind nebst I/O ja auch das TWI 
(I2C) beim ATmega32...

Könnte es sein das über PD3 der Widerstand als Pullup für die 
SCL-Leitung geschaltet wird? Und wenn plausibel, warum gibt es an der 
SDA-Leitung keinen?
Ausser den Tastern / Schaltern hängt nur eine Stiftleiste an diesen 
Leitungen...

Hoffe ihr könnt mich da aufklären!

Gruss
Fisch-Otter

: Bearbeitet durch User
von Oliver R. (orb)


Lesenswert?

Die ganze Schaltung macht keinen Sinn, wenn die Leitungen als SDA/SLC 
genutzt werden.
Warum sollte man einen seriellen Bus mit Tastern auf Masse legen?
Außerdem ist 1k sehr klein für einen I2C-Pullup

von George S. (fisch-otter)


Lesenswert?

Auf den ersten Blick ist das so. Das Board wird als Entwicklungstool 
genutzt. Es sind 8 Taster / Schalter an Port C und 8 LEDs an Port B. Das 
ganze dient im Normalfall als I/O Simulation während der 
Entwicklungsphase.

Meine Überlegung war halt, dass derjenige welcher sich die Schaltung 
ausgedacht hat, sich alle Möglichkeiten des Chip's (z.B. eben I2C) offen 
lassen wollte.

Theoretisch könnte man ja die beiden Leitungen als I2C verwenden, nur 
darf man dann halt keine der beiden Taster/Schalter betätigen. Oder 
nicht? Wäre in diesem Falle der Widerstand ein möglicher Pull-Up der 
über Port D "zugeschaltet" wird?

von chris (Gast)


Lesenswert?

Es scheint so, das der Widerstand dazu da ist, die Taste T19 auch als
Interrupt abzufangen. Also dass diese immer funktioniert.
I2C ist immer noch  moeglich. Der Widerstand ist da, sollte PortD mal
als Output geschalten sein, damit dann kein Porttreiber schaden nimmt.

von Felix M. (fmbuba)


Lesenswert?

Vielleicht wollte man den Clock-Zustand separat auslesen (Erkennung 
Clock-Stretching) seitens eines Slaves? Falls Software-I2C-Routinen 
benutzt werden spart man sich damit vielleicht das umschalten 
Ausgang/Eingang zum Lesesn des Clock-States?

von Werner M. (Gast)


Lesenswert?

Oliver R. schrieb:
> Die ganze Schaltung macht keinen Sinn, wenn die Leitungen als SDA/SLC
> genutzt werden.
> Warum sollte man einen seriellen Bus mit Tastern auf Masse legen?

Vielleicht soll man das gar nicht, sondern die Leitungen werden sowohl 
zu Tastenabfrage als auch für die I2C-Kommunikation genutzt - je nach 
Programmierung.

George St. schrieb:
> Leider habe ich keinen Zugriff auf die Code-Files die auf
> dem ATmega32 laufen!

Wenn auf dem µC schon ein sinnvolles Programm zur Nutzung der 
Beschaltung läuft, könntest du mal mit dem LA/DSO gucken, was auf den 
Leitungen so los ist. Ein 1k-Ohm Pull-up für SCL ist nicht gerade groß, 
kann aber noch ok sein. Es wäre natürlich interessant zu wissen, ob SDA 
auch mit einem ähnlichen Pull-up beschaltet ist - aber dafür ist das 
Projekt wohl zu geheim.

von Bernd K. (prof7bit)


Lesenswert?

Felix M. schrieb:
> Falls Software-I2C-Routinen
> benutzt werden spart man sich damit vielleicht das umschalten
> Ausgang/Eingang zum Lesesn des Clock-States?

Nein, sowas kannst Du nicht bringen.

SCL (und auch SDA) darfst Du immer nur entweder auf low ziehen oder 
offen lassen, d.h. wenn Du Software-i2c machst dann verwendest Du nur 
das Datenrichtungsregister zum senden, niemals das Portregister:
1
static inline void scl_low() {
2
  DDR_SCL |= BIT_SCL;
3
}
4
5
static inline void scl_high() {
6
  DDR_SCL &= ~BIT_SCL;
7
  while (!(PIN_SCL & BIT_SCL));  // wait for slave clock stretching
8
}

: Bearbeitet durch User
von Bernd K. (prof7bit)


Lesenswert?

George St. schrieb:
> Hallo,
>
> Ich darf leider
> den Schaltplan nicht komplett publizieren da Firmenprojekt
> [...] Leider habe ich keinen Zugriff auf die Code-Files die auf
> dem ATmega32 laufen
> [...] Ich habe mich nun gefragt, warum dort ein Widerstand [...]


> [...] ich habe die Aufgabe es zu erweitern / verbessern [...]

Ich hab mir erlaubt die relevanten Teile Deiner Frage mal hervorzuheben 
damit es offensichtlicher wird. Sag Deinem Chef Dass Du das Projekt 
nicht weiterentwickeln kannst wenn er vor Dir geheim hält was es macht, 
wozu es dient und wie es funktioniert oder funktionieren soll, denn Du 
kannst genausowenig hellsehen wie irgendeiner von uns hier.

Lass Dir Zugriff geben auf den bisherigen Code und alle existierende 
Dokumentation zu dem Projekt.

: Bearbeitet durch User
von George S. (fisch-otter)


Lesenswert?

@ Bernd:
Ich werde am Montag versuchen, an noch mehr Infos über das Projekt zu 
kommen und melde mich anschliessend wieder.

@Alle: Schonmal vielen Dank für die bisherigen Inputs! Ich versuche noch 
mehr über den geplanten verwendungszweck in Erfahrung zu bringen. Je 
nach dem kann ich den Widerstand dann auch weglassen falls die 
ursprüngliche Verwendung nicht mehr benötigt wird.

Gruss George / Fisch-Otter

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.