Forum: Mikrocontroller und Digitale Elektronik 2561 Port D0 Eingang und SDA


von Martin S. (paul-stanley)


Lesenswert?

hallo zusammen,
auf meinem board ist der port D0 fest mit einem taster verbunden.
da ich aber den I²C bus brauche ist es mir nun nicht ganz klar ob dies 
funktioniert, da am Port D0 auch SDA gleichzeitig aufliegt.
lassen sich die beiden sachen gleichzeitig betreiben oder muss ich 
meinen taster auf einen anderen port legen? das wäre kein grosses 
problem. müsste halt die leiterbahn auftrennen und auf einen anderen 
port löten.

gruss martin

von Ralf (Gast)


Lesenswert?

Hi,

das ist eigentlich eine unsaubere Lösung. Entweder Taster, oder I2C.

Schliesst der Taster nach Masse?

Dann funktioniert es, wenn:

a) Taster und I2C nicht gleichzeitig in Betrieb sind

b) der Port niemals bei gedrücktem Taster im Push-Pull-Betrieb eine 1 
ausgibt (sonst raucht es)

Wenn du das ganze unabhängig (und somit sauber) betreiben willst, löte 
um. Ist auch sicherer für den Port.

Da I2C open-collector bzw. open-drain ist, passiert nichts, wenn der 
Taster gedrückt ist (nur bei Schalten nach Masse(!)), die 
I2C-Kommunikation tut dann halt nicht.
Ist allerdings D0 eine aktive Ausgangsstufe, die gerade High ausgibt, 
wird es rauchen, wenn der Taster gedrückt ist.

Kannst du mal den Schaltplan vom Board posten?

Ralf

von Martin S. (paul-stanley)


Lesenswert?

hallo ralf,

danke für deine antwort.
der taster schaltet gegen masse und ich trenne lieber die leiterbahn auf 
und löte den taster dann auf einen anderen eingang. ist vom hersteller 
dann aber nicht sonderlich klug ausgedacht worden den I²C gleichzeitig 
auf einen auf dem board integrierten taster zu legen.

gruss martin

von Ralf (Gast)


Lesenswert?

> ist vom hersteller dann aber nicht sonderlich klug ausgedacht worden den I²C
> gleichzeitig auf einen auf dem board integrierten taster zu legen.
Je nachdem. Wenn das ein "Anfänger"-Board ist, ist das okay. Weil ein 
Anfänger erst mal LEDs zum Leuchten bringt und Taster einliest, bevor er 
mit I2C anfängt. Kann dein Controller den I2C-Bus evtl. auf andere Pins 
mappen? Manche Controller können das. Guck dir vor dem Auftrennen das 
Datenblatt an, wär schad drum, wenn du hinterher feststellst, dass du es 
hättest woanders hinmappen können.

Ralf

von Martin S. (paul-stanley)


Lesenswert?

es ist dieses board:
http://www.shop.display3000.com/pi12/pi2/pd43.html

allerdings mit:
atmel 2561
16 Mhz

von Ralf (Gast)


Lesenswert?

Tja, laut Datenblatt kann der 2561 nicht mappen, soweit ich das sehe. 
Aber da das ein fertiges Board ist, empfehl ich dir eher, den Taster 
einfach nicht zu benutzen, sondern einen der anderen. Oder brauchst du 
alle?

Wie ich sagte, es ist kein Problem, wenn der Taster nach Masse zieht, 
dann darf es nicht rauchen, es sei denn, der Port gibt 1 aus. Vielleicht 
kannst du das ja in der Software berücksichtigen.

Ralf

von Martin S. (paul-stanley)


Lesenswert?

hallo ralf,
ich brauche alle taster.
werd die leiterbahn auftrennen und eine anderen port benutzen.
das ist das einfachste und wohl auch beste, da ich mitten in der 
tempmessung über i²c die taster drücken können muss. ein verfälschter 
wert würde sofort eine warnmeldung ausgeben.

gruss martin

von Peter D. (peda)


Lesenswert?

Du kannst doch das I2C in Software machen, kostet auch nicht mehr Code.

Dann kannst Du jede beliebigen 2 Pins als I2C verwenden.


Peter

von Martin S. (paul-stanley)


Lesenswert?

laut datenblatt geht das nicht.
ist aber nicht schlimm. der taster ist in 2 minuten auf einem anderen 
port gelegt.

von Peter D. (peda)


Lesenswert?

Martin Schmid wrote:
> laut datenblatt geht das nicht.

Klar geht das.

Jeder Pin, der Eingang oder Ausgang sein kann, ist für SW-I2C geeignet.

Das ist ja der Witz an SW-I2C, daß es keine HW-Unterstützung braucht.


In Bascom oder Codevision ist SW-I2C schon mit eingebaut.


Peter

von Martin S. (paul-stanley)


Lesenswert?

..da warte ich mal noch ne weitere meinung ab..nichts für ungut peter.

gruss martin

von Ralf (Gast)


Lesenswert?

Da hat Peter recht, zumal es auch fertige Routinen in Assembler gibt 
(duuuu, Peter...)  :-)

Ausserdem brauchst du dann nicht das Board "verunstalten".
Der Controller wird das locker packen, ich glaub nicht, dass dein 
Programm 95% der CPU-Zeit braucht :-)

Ralf

von Martin S. (paul-stanley)


Lesenswert?

dann gebe ich da:

#define SCLPORT  PORTD
#define SDAPORT  PORTD

#define SCL  PB5
#define  SDA  PB4

einfach andere port´s ein ?????

von Ralf (Gast)


Lesenswert?

Nein, so einfach ist es dann doch nicht :-)
Du brauchst natürlich auch Software, die dann deine I2C Kommunikation 
übernimmt. Die SW dürftest du hier im Forum finden, da gibts bestimmt 
was.

Die #defines von oben sagen dann dieser Software, welche Ports denn nun 
für das Software I2C verwendet werden sollen.

Ralf

von Martin S. (paul-stanley)


Lesenswert?

hallo ralf,

danke für deine antwort. aber ich lege dann doch lieber den taster auf 
einen anderen port.

gruss martin

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.