Gast
#991267
Hallo Forum, ich arbeite derzeit mit einem PIC18 und realisiere einen I2C-Slave, der durch "address masking" auf verschiedene Adressen ansprechen soll. Der Sinn ist, zwei herkömmliche I2C-Slave-Schaltungen in einer neuen zu verheitraten, ohne an den Master.Geräten was verändern zu müssen. Die separaten Slave-Routinen funktionieren auf ihren jeweiligen Adressen. Meine Frage ist nun, wie ich mit Hilfe des "Address masking" und dem auslesen des SSP1BUF-Registers eine gültige Adressierung erkennen kann, ohne dass der ganze Bus durch das runterziehen der SCK-Leitung gesperrt wird. Ich denke, die Adress-Selektion sollte im State1 der üblichen PIC-I2C Statemachine stattfinden. Aber es muß dort irgendwie der Bus wieder freigegeben werden, wenn eine gesendete Adresse nicht überein stimmt. Am gleichen bus hängen nämlich noch zwei fest verdrahtete I2C-EEPROMS. Wenn ich das Mask-Register nutze und die maske in den Bereich solch eines EEPROMS fällt, sendet doch mein Slave dann auch ein ACK zurück, auch wenn er nix mit dem EEPROM zu tun haben soll?! Ich wäre für einen Code-Schnipsel speziell über diese Maskiererei sehr dankbar. Gerät 1: Slave-Adresse 44h Gerät 2: Slave-Adresse 4Eh (beide sollen in einem PIC18 verheiratet werden) EEPROM1: Slave-Adresse A0h EEPROM2: Slave-Adresse A2h Vielen Dank, Micha.