Здравствуйте. Я пытаюсь связаться с устройством, используя PIC18F26K83.Максимальная частота для SCL составляет 1 МГц в соответствии с таблицей устройств. Когда я устанавливаю тактовую частоту I2C на HFINTOSC (1 МГц), она может обмениваться данными с устройством (если частота системных часов составляет от 250 кГц до 1 МГц).Я ничего не меняю, я просто меняю системные часы с 500 кГц на 1 МГц, и он перестает работать.Как это может быть?Я использую HFINTOSC, который настроен на 1 МГц для тактовой частоты I2C, это зависит от системных тактовых импульсов?
И другой мой вопрос снова связан с тактовой частотой I2C.Как я уже говорил, когда я использую HFINTOSC для тактовой частоты I2C, он работает до тех пор, пока системная тактовая частота составляет 500 кГц.Однако, когда я пытаюсь использовать Fosc или MFINTOSC с (системная тактовая частота 500 кГц или 1 МГц), это не работает.Кто-нибудь может направить меня сюда?Потому что я застрял, и я не знаю, почему это может произойти.Заранее спасибо.
Коды для настройки внутреннего генератора:
// OSCCON1 REGISTER
NOSC2_BIT=1;
NOSC1_BIT=1;
NOSC0_BIT=0;//HF INTERNAL OSC
//OSCFRQ REGISTER HFINTOSC FREQ. SELECTION
FRQ3_BIT=0;
FRQ2_BIT=0;
FRQ1_BIT=0;
FRQ0_BIT=0; // 0010 : 4 MHz , 0000:1 MHZ
NDIV3_BIT=0;
NDIV2_BIT=0;
NDIV1_BIT=0;
NDIV0_BIT=1;//DIVIDE BY 2
Коды для конфигурации I2C:
//MODULE ENABLE
I2C1CON0.B7=1;delay_ms(500);
I2C1CON0.B7=1; //MODULE ENABLE
I2C1CON0.B6=0;//RSEN=0,RESTART ENABLE
I2C1CON0.B2=1;
I2C1CON0.B1=0;
I2C1CON0.B0=0; //MASTER MODE 7 BIT*/
I2C1CON1=0X80;
// SDA SCL pin ayarları
TRISC.RC4=0; //I2C:SDA
TRISC.RC3=0 ;//I2C:SCL
LATC.RC4=0;
LATC.RC3=0;
ANSELC=0XE7;// Clear RC3,RC4 analog inputs
ODCC4_BIT=1;//open drain control register, sink current only
ODCC3_BIT=1;
WPUC4_BIT=0;
WPUC3_BIT=0;// WEAK PULL UP DISABLE
//RXYI2C SLEW RATE PULLUP VS
RC3I2C=0X01;
RC4I2C=0X01;
SLRCONC.B4=0; //NO SLEW RATE LIMITING
SLRCONC.B3=0;
//PPS AYARLARI
PPSLOCK=0X55; //UNLOCK SEQUENCE
PPSLOCK=0XAA;
PPSLOCKED_BIT=0;
RC3PPS=0b00100001; //SCL OUTPUT RC3
I2C1SCLPPS=0b00010011; //SCL INPUT RC3
RC4PPS=0b00100010; //SDA OUTPUT RC4
I2C1SDAPPS=0b00010100; //SDA INPUT RC4
PPSLOCK=0X55; //LOCK SEQUENCE
PPSLOCK=0XAA;
PPSLOCKED_BIT=1;
//
I2C1CON2=0X04;
И коды для выбора часов I2C:
// I2C CLOCK
I2C1CLK.B3 =0;
I2C1CLK.B2 =0;
I2C1CLK.B1 =0;
I2C1CLK.B0 =1; //0010 HFINT OSC 0001 FOSC
//I2C FREQUENCY=1000/5=200KHz
//FME=0 MEANS DIVISION=5
Это изображение вывода SCL, когда я использую системные часы 500 Кбит / с и HFINTOSC для I2Cx CLK.
Редактировать: Iпроверил, что я вижу с MFINTOSC или Fosc как I2CxCLK, и он пуст.0В.К сожалению, нет часов.