#include "twi.h"
#include "pcf8574.c"
Idź do kodu źródłowego tego pliku.
Funkcje | |
uint8_t | pcf8574_write (uint8_t addr, uint8_t value) |
uint8_t | pcf8574_read (uint8_t addr, uint8_t *var) |
Przed użyciem biblioteki należy zainicjować TWI przez TWI_INIT(). Pamiętaj też o podciągnięciu pinów GPIO 8574 do VCC. Ekspander nie wymaga przełączania trybów (odczyt / zapis).
Przykładowe wykorzystanie:
#define F_CPU 16000000 #include <avr/io.h> #include <tAvrLib/pcf8574.h> #include <util/delay.h> /* Na wypadek błędu, zacznie migać pierwsza dioda portu B */ void err() { while (1) { PORTB |= _BV(0); _delay_ms(250); PORTB &= ~_BV(0); _delay_ms(250); } } int main() { uint8_t tmp = 0; /* zainicjowanie portów. Pierwsza dioda portu B świeci */ DDRA = 255; DDRB = 255; PORTA = 0; PORTB = ~_BV(0); /* ustawienie pull-up dla TWI oraz jego zainicjowanie */ PORTC |= _BV(0) | _BV(1); TWI_INIT(); /* ustawienie wyjść pierwszego ekspandera na 0x02, drugiego na 0x01 */ if (!pcf8574_write(0x0, 0x02)) err(); if (!pcf8574_write(0x1, 0x01)) err(); /* odczyt drugiego ekspandera i wyświetlenie jego stanu na porcie A */ if (!pcf8574_read(0x1, &tmp)) err(); PORTA = tmp; /* druga dioda portu B sygnalizuje pomyślne zakończenie programu */ PORTB &= ~_BV(1); return 0; }
Schemat połączeń dla powyższego przykładu:
uint8_t pcf8574_write | ( | uint8_t | addr, | |
uint8_t | value | |||
) |
Ustawienie portów wyjściowych.
addr | Numer ekspandera (liczba 3-bitowa) | |
value | Stan portów wyjściowych (bit ustawiony - stan wysoki) |
uint8_t pcf8574_read | ( | uint8_t | addr, | |
uint8_t * | var | |||
) |
Odczyt portów wejściowych.
addr | Numer ekspandera (liczba 3-bitowa) | |
var | Adres zmiennej, pod który ma być zapisany stan portów |