Gast
#832422
Hallo und einen guten Tag zusammen...
Ich habe ein Verständnisproblem mit dem SMBus.
Gegeben ist folgender Codeausschnitt für die Initialisierung eines
Timers, der die Frequenz der SCL- Leitung des SM Bus bestimmt.
// Timer1 configured as the SMBus clock source as follows:
// - Timer1 in 8-bit auto-reload mode
// - SYSCLK or SYSCLK / 4 as Timer1 clock source
// - Timer1 overflow rate => 3 * SMB_FREQUENCY
// - The resulting SCL clock rate will be ~1/3 the Timer1 overflow rate
// - Timer1 enabled
//
void Timer1_Init (void)
{
// Make sure the Timer can produce the appropriate frequency in 8-bit
mode
// Supported SMBus Frequencies range from 10kHz to 100kHz. The CKCON
register
// settings may need to change for frequencies outside this range.
#if ((SYSCLK/SMB_FREQUENCY/3) < 255)
#define SCALE 1
CKCON |= 0x08; // Timer1 clock source = SYSCLK
#elif ((SYSCLK/SMB_FREQUENCY/4/3) < 255)
#define SCALE 4
CKCON |= 0x01;
CKCON &= ~0x0A; // Timer1 clock source = SYSCLK /
4
#endif
1) Was ist hier mit SMB_Frequency gemeint ? 1/3 der Timer overflow rate
? oder 3* Timer overflow rate
2) SMB_FRequency ist ist oben mit #define SMB_Frequency 100000 ? also
100kHz.
Wie passt das zusammen, wenn die SMB_Frequency doch vom Timer
beeinflusst wird ?
3) Ich habe eine Sysclk von 24,5MHz.
Dann ist doch, wenn ich keinen Prescaler benutze die Timeroverflow rate:
1/24,5MHz*2^8 ; da 8bit Timer ! , oder ?
Das entspricht einer Frequenz von: 95,7kHz
Wie groß ist jetzt die SMB_Frequency ?
Vielen Dank für eure Hilfe
mfg hans m.