Bascom 2 getrennte I2C TWI an einem Controller DS1307

OP #3229396
Lesenswert?

Hallo zusammen,

hab folgendes Problem, ich Kommuniziere zwischen 2 AVR´s Master ATmega 
644p Slave ATmega 32, das funktioniert auch tadellos, jetzt wollte ich 
noch nen DS307 RTC dazu in den I2C hängen und mit dem Maste beide Slaves 
(DS1307 und Mega32 auslesen (Mega32 funktioniert weiterhin, DS1307 geht 
nicht) sobald ich den Mega 32 vom I2C trenne läuft auch die 
Kommunikation zum DS1307!
TWI geschwindigkeit schon auf 100khz gestellt, mit den Pullups gespielt 
aber leider hilft das alles nichts, darum jetzt die Idee mit 2 
getrennten I2C am Mega644P, geht das mit Bascom??
wenn ja kann mir jemand weiterhelfen wie ich das angehe?

Danke schon mal im Voraus
#3229404
Lesenswert?

@ Simon H. (simon24j)

>noch nen DS307 RTC dazu in den I2C hängen und mit dem Maste beide Slaves
>(DS1307 und Mega32 auslesen (Mega32 funktioniert weiterhin, DS1307 geht
>nicht) sobald ich den Mega 32 vom I2C trenne läuft auch die
>Kommunikation zum DS1307!

Dann stimmt wohl was nicht mit dem Atmega32, der funkt in die 
Kommunikation mit dem DS1307. Dort musst das Problem suchen und lösen.

>aber leider hilft das alles nichts, darum jetzt die Idee mit 2
>getrennten I2C am Mega644P, geht das mit Bascom??

Warum der Murks? I2C kann Dutzende Teilnehmer zusammenschließen!

>wenn ja kann mir jemand weiterhelfen wie ich das angehe?

Besorg die einen Oszi oder LogicAnalyzer und schau dir die I2C Signale 
an. Im Extremfall taktet man I2C mit 1Hz (EIN HERTZ) und schaut sich die 
Siganle mit LEDs an SCL und SDA an (mit Vorwiderständen und low aktiv, 
Kathode am Signal, Anode über Vorwiderstand an VCC.) Siehe 
Fehlersuche.
OP #3229432
Lesenswert?

@Falk

Danke für deine Antwort, über murks könnnte man sich jetzt streiten, 
aber egal.

hab mit der selben konfiguration auch schon weitere I2C teilnehmer dran 
gehabt, nen weiteren Mega8 und auch nen PCF mit Display, funktionierte 
auch alles problemlos, evtl. ist das problem auch das der mega32 3m 
entfernt ist!?!? den ds1307 hingegen nur 5cm am selben I2C Bus.
Wie gesagt die komm zum mega32 problemlos und auch zu weiteren I2C 
Problemlos, nur die DS1307 will ned :-( darum die Version angedacht die 
in deinen Augen Murks ist.
#3230050
Lesenswert?

@ Simon H. (simon24j)

>auch alles problemlos, evtl. ist das problem auch das der mega32 3m
>entfernt ist!?!?

Kann sein. Probier es mit deutlich kürzeren leitungen. Wenn es 
funktioniert, weißt du, dass logisch alles OK ist, aber die Signale 
wegen der langen Leitungen ein Problem haben. 3m ist zwar nicht gerade 
die Zielanwendung für I2C, es gaht aber, wenn man es richtig macht.

>Problemlos, nur die DS1307 will ned :-( darum die Version angedacht die
>in deinen Augen Murks ist.

Dann schau dir die Signale an, wenn du mit dem DS1307 redest und lange 
Leitungen dranhängen, ohne den 2. AVR. Dort wird wahrscheinlich ein 
Problem sein.
Gast #3231832
Lesenswert?

Doch, aber nicht so wie Du das haben möchtest.

z.B.
Als I2C Master verwendet der Atmega die Hardware SDA und SCL Pin's.

Gleichzeitig kannst Du die I2C Slave Lib laufen laussen:
Die I2c Slave Lib verwendet Timer0 und Int0 als SCL und SDA.

D.h. eine als Master und eine als Slave


(nur wenn Deine Hardware schon fix ist. Wo kommen dann die 2 
zusätzlichen Pin's für SDA und SCL her ?)
#3231891
Lesenswert?

held schrieb:
> Als I2C Master verwendet der Atmega die Hardware SDA und SCL Pin's.
>
> Gleichzeitig kannst Du die I2C Slave Lib laufen laussen:
> Die I2c Slave Lib verwendet Timer0 und Int0 als SCL und SDA.

Wer kommt denn bloß auf solche verrückte Ideen?
Als Slave mußt Du in 4µs reagieren bei 100kBit, bei 400kBit noch 
schneller.
Da der AVR keine Interruptlevel hat, macht Dir jeder andere Interrupt 
den SW-Slave platt.

Umgekehrt wird ein Schuh draus.
Der Slave muß immer das HW-I2C benutzen!
Und den Master macht man in SW, denn der gibt den Takt vor. Er darf also 
ruhig Pausen einlegen, wenn der MC grad Interrupts erledigen muß.
Gast #3235706
Lesenswert?

Hi

>aber anscheinend trotzdem in Bascom nicht möglich :-(

Du hast unter BASCOM Zugriff auf alle Register und Assembler geht auch. 
Also ist es möglich. Nur weil es BASCOM nicht mundgerecht serviert heißt 
das noch langen nicht, das es nicht geht.

Da findest du eine Anleitung für ein Software TWI-Master

http://www.avrfreaks.net/index.php?func=viewItem&item_id=75&module=Freaks%20Tools

MfG Spess
Gast #3296029
Lesenswert?

Hallo zusammen :-)
Keine Ahnung, ob der Beitrag hier noch aktuell ist, aber ich wollte mal 
kurz anmerken, dass man mit einem Atmega und Bascom durchaus mehrere 
I2C-Kanaele bauen kann, die sogar mit unterschiedlichen 
Geschwindigkeiten laufen. Nur kann man dafuer die Standard-I2C-Befehle 
nicht mehr verwenden, dass muss man manuell schreiben. Wer ein 
Codebeispiel haben will kann mich anschreiben. uwe.janowski at 
greencore-systems.pl

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