Hallo icebobo.
Zitat von
icebobo
Wie kann ich eigentlich die
I2C Frequenz einstellen?
Das sagt mir, dass du anscheinend noch keinen Blick in die I2C-Dokumentation des Controllers getan hast .
Zitat aus dem Datasheet:
"SSPADD register holds the slave device address
when the SSP is configured in I2C Slave mode. When
the SSP is configured in Master mode, the lower
seven bits of SSPADD act as the baud rate generator
reload value."
Siehe auch Table 9-3, I2C Clock Rate w/ BRG
Meine relevante Zeile dort für den nachfolgenden Codeausschnitt wäre: F_CY = 1MHz, f_SCL = 100kHz, Reloadwert = 0x0A, ich weiche davon mit d'9' um zehn Prozent nach oben ab, weiss aber nicht mehr, warum; es funktioniert aber gut und ist ohnehin ziemlich unkriitisch.
Bei mir sieht die Initialisierung mit 4MHz-Resonator für 100kHz I2C-Takt so aus:
Code:
I2C_INIT100
bsf STATUS, RP0 ; Bank 1
movlw d'9' ;
movwf SSPADD ; Reload-Wert für Clock-Takt
bcf STATUS, RP0 ; Bank 0
;
movlw b'00001000' ; I2C Master Mode mit SSPADD
movwf SSPCON ;
bsf SSPCON,SSPEN ; und aktivieren
;
return ;
Gruß
RoboHolIC
Lesezeichen