Få liv i i2c med 16F18346
Postat: 17 augusti 2019, 12:49:51
Som sgat försöker jag med koden nedan få ut ngt på i2c busen men det är stendött, signalen är hög bara.
Har inte använd denna Pic'en innan men den har en hel del register och annat som jag inte riktigt är van vid. Vad missar jag?
Har inte använd denna Pic'en innan men den har en hel del register och annat som jag inte riktigt är van vid. Vad missar jag?
Kod: Markera allt
#include "SSD1306driver_lite.h" // include SSD1306 OLED display driver source code
#define VFB5 PORTA.F5
#define TEMP PORTA.F4
#define BTN PORTC.F5
#define OUT PORTC.F4
#define ADC4 PORTC.F6
#define EN4 PORTC.F7
#define ADC3 PORTB.F6
#define EN3 PORTB.F4
#define ADC2 PORTC.F2
#define EN2 PORTC.F1
#define ADC1 PORTC.F0
#define EN1 PORTA.F2
char txt[11];
Init_main(){
OSCCON1=0B00000001;
OSCFRQ=0b00000110; // set internal oscillator to 16MHz
OSCTUNE=0B00000000;
ANSELA=0b00110000; // configure all PORTS
ANSELB=0b01000000; // i2c2 ligger på port B5 o B7, stänger av adc
ANSELC=0b01000101;
TRISA=0b01000000;
TRISB=0b01000000; //sätter b5 o b7 som utgång
TRISC=0b01100101;
delay_ms(1000); // wait a second
I2C2_Init(400000); // initialize I2C communication with clock frequency of 400kHz
EN1=1;
EN2=1;
EN3=1;
EN4=1;
}
// main function
void main(){
Init_main();
while(1){
I2C2_Start();
I2C2_Wr(0xD0);// D0 is the address of the slave device
I2C2_Wr(0x03);// write Register address
I2C2_Wr(0xA2);// write your data
I2C2_Stop();
delay_ms(500);
}
}