Knihovna I2c

Kdybys čet tak víš, že sháním knihovnu i2c.h. že ji v seznamu knihoven nemám, že dělám v XC8 a na MPLAB-X . Kdyby sis přečet ten odkaz, na kterej mě upozorňuješ (a seš přesvědčenej, že jsem hoi nečet ), tak víš, že ten uveřejněnej program ke ztažení tam je pro MPLAB - IDE a napsanej pro C32 a používá knihovmu plib.h
Už třicet let jsem nenapsal žádnej domácí úkol a dávno nechodim do školy. Živim se oboromem kterej je o několik tisíc voltů vejš než PICka a ty mám jen jako koníček. Akorát takovýdle šulíni jako jsi ty mi ho dokážou zkazit. Seš prostě namyšlenej hejter i s titulem ohvězdičkovanýho " profesionála " SE DI VYCPAT.

Já to čet’, neboj se. Taky používám MPLAB X a XC8 taky, ale pořád mi hlava nebere proč si PLIB pro XC8 nestáhneš, když teda víš že to tam je, a místo toho tu zbytečně vypruzuješ tím, že jsem podle tebe hater, když ti na to nehodím přímej link a místo toho tě upozorním na místní zvyklosti…?

Aha, tak tohle tě žere? Mám pro tebe novinu, tyhle hvězdičky jsou hodnocení BB fóra jen a pouze podle počtu komentů a jde to absolutně mimo mě a nijak mě nezajímají. Ovšem když se tu budeš bavit s lidma slušně a bez přezíravých podtónů, je možné že se jich někdy dočkáš (podmínkou je ovšem registrace), když ti na těch hvězdičkách tak záleží. Já poradím rád, stejně jako většina zdejších stálých členů, ale jsou tu jisté zažité zásady, kterým se vytrvale odmítáš podřídit. Dělej si co chceš, jsi dospělej, ale nezapomínej na to, že i ostatní jsou dospělí a můžou si také dělat víceméně co chtějí - takže se rozčiluješ marně a obecná pokora je to, co ti schází. Nadávky nekomentuju, stejně jako facka není argument, tak jím nejsou ani ony - ovšem o sobě jsi nám tím naznačil docela dost.

Uuštřil jsem čas hledáním další knihony a napsal si vlastní. Otestováno zatím jen na komunanikaci s DS1307. Tedy jen s jedním slave na sběrnici.
třeba to někomu pomůže do začátku.

#include <xc.h>
#include <pic18f2455.h>

void InitI2C(void) /// hotovo
{
TRISBbits.RB0 = 1;// set SDA jako vstup
TRISBbits.RB1= 1; // set SCL jako vsup
PIE1bits.SSPIE = 1; // povolení p?eru?ení od MSSP je povoleno
PIR1bits.SSPIF = 0; // p?íznak p?eru?ení od MSSP je nulován a ?eká se na vysílání a p?íjem
SSPSTAT = 0x80; // 80 SMP - ?ízení rychlosti p?eb?hu je odstaveno 100kHz
SSPCON1 = 0x28; // SSPEN - povolení MSSP a nastaveno na I2C nakofiguruje SDA a SCL a SSPM na Master a kmito?et podle vzorce fosc/ 4x(SSPADD+1)
SSPCON2 = 0x00; // ?innost I2C zatím pozastavena
SSPADD = 0x31; // nastavení rychlosti je podle vzorce fosc/ 4x(SSPADD+1) tj 20 000 000 Hz/ 4x (49+1) = 100 000 Hz
SSPCON1bits.SSPEN = 1;// opakovaný start ---- vy?adovaná rutina
// PIR2bits.BCLIF = 0; // nulování kolize na bus —to myslim je zbyte?ný nemám povoleno SMBUS v SSPStat
SSPCON2bits.PEN =1; // inicialiyuje stop stav na SDA a SCL - v init nutne, pro ukonceni prenosu.
while (PIR1bits.SSPIF == 0); //?eká na ukon?ení p?enosu

}
void I2C_Start(void) /// hotovo
{
PIR1bits.SSPIF = 0;
SSPCON2bits.PEN =0; // ne?inný stop stav na SDA a SCL — nenuluje automaticky
SSPCON2bits.SEN =1; // Inicializuje start na SDA a SCL povolí hodiny — nuluje automaticky
while (PIR1bits.SSPIF == 0); //?eká na ukon?ení p?enosu
}

void I2C_ReStart(void)
{
PIR1bits.SSPIF = 0;
SSPCON2bits.RSEN =1; // Inicializuje restart na SDA a SCL povolí hodiny
while (PIR1bits.SSPIF == 0); //?eká na ukon?ení p?enosu
}

void I2C_Stop(void) /// hotovo
{

SSPCON2bits.PEN =1; // inicialiyuje stop stav na SDA a SCL
while (PIR1bits.SSPIF == 0); //?eká na ukon?ení p?enosu
PIR1bits.SSPIF = 0; // p?íznak p?eru?ení od MSSP je nulován a ?eká se na vysílání a p?íjem 

}

void I2C_Write_Byte(unsigned char Byte) // hotovo
{
PIR1bits.SSPIF = 0; // p?íznak p?eru?ení od MSSP je nulován a ?eká se na vysílání a p?íjem
SSPBUF = Byte;
while (PIR1bits.SSPIF == 0); //?eká na ukon?ení p?enosu
}

unsigned char I2C_Read_Byte(void)
{
unsigned char RxData = 0; // RxData1 = 0,
PIR1bits.SSPIF = 0; // p?íznak p?eru?ení od MSSP je nulován a ?eká se na vysílání a p?íjem
SSPCON2bits.RCEN = 1; // povolení p?íjmu v re?imu master
while (PIR1bits.SSPIF == 0); //?eká na ukon?ení p?enosu
RxData = SSPBUF;
while (PIR1bits.SSPIF == 0); //?eká na ukon?ení p?enosu
SSPCON2bits.ACKDT = 1; //potvrzení ACK 0- je 1 - není - p?ipravení kvitování
SSPCON2bits.ACKEN = 1; // inicializuje ACK sekvenci na SDA a SCL ode?le stav ACKDT - povoleno kvitování
PIR1bits.SSPIF = 0; // p?íznak p?eru?ení od MSSP je nulován a ?eká se na vysílání a p?íjem - odesílání
while (PIR1bits.SSPIF == 0); //?eká na ukon?ení p?enosu odesláno
return RxData; // ,RxData1

Už to asi nebude aktuálne, ale myslím, že si hľadal toto : PIC18F Legacy Peripheral Libraries v2.0 - Linux
Po inštalacii nájdeš v adresári, kde máš nainštalovaný XC8, v zložkách include a sources adresár plib, v ktorom sú knižnice pre periférie. Samozrejme je tam aj I2C.h