AD7683 - 10 bitów zamiast 16

Witam,

czy ktoś bawil się może układem AD7683? Jest to szeregowy 16-bitowy przetwornik A/C, tak prosty w obsłudze, jak tylko można wymyslić (do tej pory tak uważałem ;)

W obwodzie testowym podłączam REF+ do zasilania 5V, IN- do masy, IN+ na suwak potencjometru wieloobrotowego 220k zapiętego też między masę i zasilanie.

Objaw: podczas regulacji potencjometem dolne

4 bity są zawsze 1, kolejne 2 (od dołu) są zawsze 0, pozostałe zmieniają sie tak, jak powinny. Wyjątkiem jest zjechanie do zera - wtedy na wszystkich bitach jest 0. Kolejne wartości (jadąc od zera) sa następujące: 0000 0000 0000 0000 0000 0000 0000 1111 0000 0000 0100 1111 ... 1111 1111 1000 1111 1111 1111 1100 1111

Skok potencjometru jest dostatecznie mały, aby można było zaobserwować bardziej subtelne zmiany

- przy kręceniu nowa wartość pojawia się mniej więcej co 1/2 obrotu.

Czyli mam przetwornik 10-bitowy, a nie 16.

Raczej wykluczam błąd po stronie cyfrowej

- w końcu te górne 10 bitów mierzy prawidłowo, a zwraca wynik w postaci liczby 16-bitowej. Ale też głowy nie dam...

Szybkość próbkowania o dwa rzędy niżej od katalogowych

100 kHz.

Jak odzyskac straconych 6 bitów?

Pozdrowienia, MKi

Reply to
MKi
Loading thread data ...

Użytkownik MKi napisał:

Podaj sekwencje odczytu. Algorytm ,źródła coś w tym typie .. Używam takiego przetwornika i nie ma problemu.

Adam

Reply to
Górski Adam

[...]

A pdf Ty czytal i zgodnie z nim postepujesz ?

Bo ja tam widze ze pierwszych 5bit jest HiZ, potem jedno zero, potem D15..0, potem znow 0, potem HiZ ..

J.

Reply to
J.F.

Czytał, czytał. 22 cykle zegarowe. Pierwsze

5 bitów ignorowane, kolejne 16 znaczące (od najważniejszego), ostatni do zignorowania.

Skoro odczyt przy pełnej regulacji potencjometru (od oporu do oporu) zmienia się od 0000 do FFCF (szenastkowo) to raczej nie ma błędu z pomijaniem jakiegoś znaczącego bitu.

Pozdrowienia, MKi

PS. Wyjeżdżam na urlop, może świeże spojrzenie za tydzień pomoże ;) MKi

Reply to
MKi

Dzięki za informację, że ten przetwornik w ogóle działa. Przynajmniej nie muszę rozglądać się za zamiennikiem.

Służę źródłem '51. Zaprezentowany kod wklejony bezpośrednio z ostatniej wersji programu.

PdaSCKL, PdaSC, PdaDO - porty podłączone do odpowiednich wyprowadzeń przetwornika. W wyniku wartość znajduje się w parze R1,R2.

Komentarz do kodu: druga pętla powstała w celach testowych, po w PDF-ie były zaprezentowane 24 cykle. No to mu dorzucałem po kolei, począwszy od 22 w góre, aż przystopowałem na 32. Kolejne zmiany licznika w drugiej pętli (od 1 do 10) nic nie zmienialy. Zwiekszanie/zmniejszanie liczby NOP-ów (zegar procesora 24MHz, czyli instrukcje taktowane 2MHz) nie wpływały na wynik.

<kod>

SETB PdaSCLK CLR PdaCS NOP NOP CLR PdaSCLK MOV R4,#22 MOV R2,#0 MOV R1,#0 SETB PdaDO

RP_Loop1: SETB PdaSCLK NOP NOP MOV C,PdaDO MOV A,R2 RLC A MOV R2,A

CLR PdaSCLK

MOV A,R1 RLC A MOV R1,A

DJNZ R4,RP_Loop1 MOV R4,#10

RP_Loop2: SETB PdaSCLK NOP NOP NOP NOP NOP NOP

CLR PdaSCLK

NOP NOP NOP NOP

DJNZ R4,RP_Loop2

SETB PdaCS

</kod>

Pozdrowienia, MKi

PS. Wyjeżdżam na urlop, może świeże spojrzenie za tydzień pomoże ;) MKi

Reply to
MKi

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.