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?
Didn't find your answer? Ask the community — no account required.
M
Marek Dzwonnik
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
G
gem
Dnia Sat, 23 Jul 2005 21:48:17 +0200, Marek Dzwonnik napisał(a):
...
Wielkie dzieki, rzeczywiscie trzeba sie bylo wczytac.
G
g333
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
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.