Gast
#955559
Hallo zusammen ich habe mal eine Frage bezüglich den I2C Einstellung. In der I2C Routine von Peter Fleury finden sich folgende Einstellung: F_CPU = 4MHz; SCL_CLOCK = 250kHz; TWSR = 0; => TWPS = 0 => prescaler = 1 TWBR = ((F_CPU/SCL_CLOCK)-16)/2; // must be > 10 for stable operation TWBR = Value of the TWI Bit Rate Register TWPS = Value of the prescaler bits in the TWI Status Register Meine Frage lautet muss das TWBR Register wirklich größer 10 sein? Oder ist dies nur auf sein Beispiel bezogen. Aus dem Datenblatt des ATMEGA32 habe ich folgendes entnommen: a) Die CPU Clock muss 16-mal größer sein als die SCL Frequenz. b) SCL_CLOCK=(F_CPU/(16+(2*TWBR)*4^TWPS)) Weiterhin habe ich ein I2C EEPROM das max. mit SCL=1000kHz arbeiten kann. Wenn nun a) gilt und mein Systemtakt 11,059MHz beträgt, dann darf die SCL_CLOCK max. 11,059MHz/16=691,18kHz betragen. Angenommen ich würde jetzt SCL=450kHz und einen Vorteiler von 1 (TWPS=0)wählen. Dann folgt aus b) TWBR=((F_CPU/SCL_CLOCK)-16)/(2*4) = ((11,059M/450k)-16)/8= 1 Geht das?