Realizacja transmisji do LCD44780 poprzez konwerter(expander) I2C na PCF8574 z góry postu ale z dowolnych pinów uC Przykład przeróbki : Powielić w eclipse lekcję LCD_I2C_PCF8574 z inną nazwą projektu dla sprawdzenia działania
Katalog z biblotekami I2C_TWI zlikwidować, w to miejsce wstawić katalog z biblotekami I2C_SOFT z lekcji 08_I2C_SOFT
W biblotece lcd44780.c zawierającej obsługę I2C w miejsce bibloteki i2c.twi.h nalezy wprowadzic odwłołanie do i2c.soft.h
W biblotece lcd44780.h jwst definicja #define PCF8574_LCD_ADDR po której nalezy wprowadzić adres konwertera(expandera)
(Jak okreslic adres - są wskazówki we wcześniejszych postach w tym watku)
Biblotekę i2c_soft.c pod koniec uzupełnić o 2 dodatkowe funkcje ( zamieszczam dzięki uprzejmości kolegi tonygryps ) :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Wyszczególnić odwołania do tych funkcji w końcówce pliku i2c_soft.h :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Plik i2c_soft_cfg.h
Uzupełnić o makra upraszczające dostęp do portów :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
oraz określić w nim piny z których wychodzimy z I2C do konwertera.
Skompilować i sprawdzić czy przykładowy program z licznikiem termometrem i bużką zawarty w main.c działa.
------------------
Idea samych przeróbek jest taka , ze w wersji sprzętowej bibloteka LCD z I2C od Mirka pośrednio odwołuje się do funkcji :
uint8_t TWI_read_int(uint8_t SLA);
uint8_t PCF8574_read( uint8_t SLA );
których nie ma w wersji programowej obsługi I2C - a więc należało je w niej dodać.
PZDR - Paweł