pcf8591 jak obsluzyc?

Jul 23, 2005 3 Replies

Witam



Mam problem z pcf8591, czytam datasheeta i czegos nie rozumiem. Jest to konwerter A/C C/A, 4 wejscia 1 wyjscie analogowe komunikacja po I2C.



Komunikacja wedlug datasheeta wygladac ma tak:



A/D:



Start | Address 1 | A | Data byte 1 | A | Data byte 2 | A | .....



gdzie A to Acknowledge



D/A:



Start | Address 0 | A | Control byte | A | Data byte 1 | A | Data byte 2 | A | .....



gdzie w CONTROL BYTE ustawiamy takie parametry jak:



A/D CHANNEL NUMBER AUTO-INCREMENT FLAG ANALOGUE INPUT PROGRAMMING ANALOGUE OUTPUT ENABLE FLAG



Jak przy komunikacji A/D okreslic o ktory kanal nam chodzi (mamy cztery)? po co przy komunikacji D/A jest CONTROL BYTE?


Uzytkownik "g333" <gemay_o2_pl@pomysl_zanim_wyslesz.ble> napisal w wiadomosci news:hroevun6z760.15tk7z4qjnu8s$. snipped-for-privacy@40tude.net

Niepotrzebnie powiazales CONTROL_BYTE wylacznie z przetwarzaniem C/A.

Po pierwsze musisz tego PCFa skonfigurowac. Po zaadresowaniu kosci do _zapisu_ (bajt adresowy z bitem R/W\ = 0) wysylasz do niej sekwencje bajtów. Pierwszy bajt jest wpisywany do rejestru konfiguracyjnego CONTROL_BYTE i decyduje o trybie pracy.

Nastepne bajty wysylane po I2C sa wpisywane do rejestru DAC i po kazdym ACK wystawiane do przetwornika i w postaci analogowej na wyjscie. Mozesz zakonczyc transmisje (STOP condition) od razu po bajcie kontrolnym nie wysylajac niczego do DACa - wyjscie analogowe pozostanie w niezmienionym stanie. Mozesz wyslac jeden bajt danych, aktualizujac poziom na wyjsciu DAC (wystawienie danych do przetwornika i zmiana napiecia wyjsciowego nastepuje bezposrednio po ACK). Mozesz w jednej sesji (za jednym adresowaniem) wyslac tych danych wiecej, aktualizujac przetwornik wielokrotnie, w rytmie kolejnych ACK.

Majac skonfigurowany uklad, mozesz przystapic do konwersji ADC i odczytu wyników. Adresujesz kosc do odczytu (wysylasz bajt adresowy z bitem R/W\ = 1), po czym _czytasz_ z niej kolejne bajty reprezentujace wyniki przetwarzania ADC. Z wybranego kanalu (patrz bity CB[1,0] ), lub z kolejnych kanalów jezeli zostal wybrany tryb AUTO_INCREMENT.

Kazdy ACK w trybie odczytu inicjuje konwersje ADC. Zatem wyniki pojawiaja sie na wyjsciu z opóznieniem jednego odczytu. Tzn. pierwszy bajt odczytany w danej sesji zawiera stara wartosc rejestru ADC, a jezeli jest to pierwsza sesja po wlaczeniu zasilania, to pierwszy odczyt zwróci 80h.

Tak rzecze PDF.

formatting link

Dnia Sat, 23 Jul 2005 21:48:17 +0200, Marek Dzwonnik napisał(a):

...

Wielkie dzieki, rzeczywiscie trzeba sie bylo wczytac.

Dnia Sat, 23 Jul 2005 21:48:17 +0200, Marek Dzwonnik napisał(a):

...

Wielkie dzieki, rzeczywiscie trzeba sie bylo wczytac.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required