Sprzętowa obsługa PCF8583
- Aro
- Użytkownik
- Posty: 677
- Rejestracja: 30 paź 2006, 18:49
- Lokalizacja: Świerczyniec | Wrocław
- Kontakt:
Sprzętowa obsługa PCF8583
Witam, Czy są jakieś różnice między TWI a I2C? Dotychczas we wszystkich programach, z którymi się spotkałem obsługa PCF8583 była realizowana programowo, mimo że procesor posiadał TWI.
-
ZbeeGin
TWI jest nieco bardziej zaawansowane niż I2C. Posiada parę dodatkowych właściwości - jest to ten drugi powód, że nie nazwa się I2C (pierwszy to prawa licencyjne firmy Philips). TWI obsługuje pełen zbiór funkcji I2C zatem kompatybilność wsteczna jest zachowana. Choć obecnie pojawiła się nowa specyfikacja I2C rozszerzająca zakres adresów na szynie (10bitów).
Myślę, że TWI jest nowością, zatem wszyscy idą "na skróty" wykorzystując sprawdzone i działające procedury emulacji programowej.
Myślę, że TWI jest nowością, zatem wszyscy idą "na skróty" wykorzystując sprawdzone i działające procedury emulacji programowej.
- Aro
- Użytkownik
- Posty: 677
- Rejestracja: 30 paź 2006, 18:49
- Lokalizacja: Świerczyniec | Wrocław
- Kontakt:
Skorzystałem z takiego "skrótu". Procedury przepisane z książki. Mam jedno "ale". Taki program nie działa:
Z układu odczytane zostają tylko sekundy. Zeby wszystko odczytac, muszę osobno dla każdego rejestru podawac adres. W czym może tkwic problem?
Kod: Zaznacz cały
start_PCF();
write_PCF(0xa0);
write_PCF(adr);
start_PCF();
write_PCF(0xa1);
czas[2]=read_PCF(1); //czytaj sekundy, wyślij ACK
czas[1]=read_PCF(1); //czytaj minuty, wyślij ACK
czas[0]=read_PCF(0); //czytaj godziny, nie wysyłaj ACK
stop_PCF();Co zawiera zmienna 'adr'? Prawdopodobnie cała ta procedura działa po poszerzeniu o jej resztę (przeczytaj dokładnie tą książkę). Generalnie układy RTC na I2C działają na zasadzie: wyślij rozkaz odczytu+nr. rejestru (sekund/minut/itp.) - odczytaj wartość (sekund/minut/itp.). W drugą stronę działa to oczywiście jako ustawianie zegara, alarmu itp. Jeśli chodzi o odpowiednie adresy, to wysyłam do karty katalogowej danego układu.