Multimaster:
Mein erster Ansatz ist/war mal der, daß auf einem I2C Bus mehrere µC hängen, die von einander unabhängig so agieren können, daß sie ihre Nachrichten sicher durchbringen und auf Konflikte richtig reagieren, daß sie nicht hängenbleiben oder irgendwas verschluckt wird.
Konkret: Auf der RNBFRA-Karte sollen der Mega32 und der 2313 hemmungslos die übrige I2C Peripherie benutzen können, d.h. der 1213 wütet am Expansion-Port und der Mega mit dem Power Port.
Dazu hab ich den Mega als Multimaster konfiguriert, also mal Master richtung Output-PCF, mal Slave.
Der 2313 Co war eigentlich nur Master, er hat in der Schleife mal das Powerport und mal den Mega angequatscht. (normales Bascom I2C)
Mit der HW-TWI am Mega geht das eigentlich super, dem geht nix verloren, wenn ihm der 2313 mal in die Suppe spuckt, merkt er das und wiederholt seine Sendung, bis sie durch ist. Daß der mega mit 400 kHz fährt und der 2313 mit irgendwas langsamen, spielt keine Rolle.
D.h. Mehrere Megas mit Hw-TWI über I2C zu vernetzen ist so mal ein Klacks, da brauchst kein Protokoll, außer der eingebauten Arbitrierung.
Mit den 2313 Bascom Soft-I2C routinen ist das erwartungsgemäß so eine Sache. Der wartet nicht auf einen freien Bus, der fängt einfach an.
Also hab ich ihm mit dem Assembler erstmal eine Stop-Condition-detection eingebaut, und er sendet erst, wenn die da ist.
Das ist zwar etwas laborhaft theoretisch, war aber mal ein Versuch.
Auf diese Art geht das Ganze mal ganz gut, der Mega kann multimastern, wie er mag, und der 2313 kann auch dazwischen "mastern"
Was jetzt fehlt, ist dem 2313 eine anständige Arbitrierung einzubauen, und natürlich eine vernünftige Slave-Function mit erträglicher Bus-Speed.
Bis 100 kHz kann ich dzt. mitspielen, mal sehen, was geht.
(Da wird natürlich gestretcht, wo es geht, logo, wunder gibt's keine)
Und dann den ganzen Schmafu so zu konfektionieren, daß man das auch brauchen kann.
*stöhn*
EDIT @dirk:
etwas hat's schon mit dem Protokoll zu tun. Denn ich find' der Mega auf einer RNBFRA sollte sozusagen "routen" können auf die I2C.
Das durchschlängeln von RS232 will mir nicht unter die Nase
Lesezeichen