Grzegorz
Guest
Tue Sep 13, 2005 4:43 am
Witam.
Od blisko miesiaca mecze sie z tym przetwornikiem i za nic nie moge sie z
nim skomunikowac, nie mowiac juz o odczycie napiecia. Moj mikrokontroler to
ATMega8535 a programy pisze w BASCOMie. Czy jest tu jakis kruczek? Odczyt i
zapis bajtow do AD7730 wykonuje dokladnie wedlug przebiegow sygnalow
podanych w dokumentacji. A moze ktos sie bawil tym przetwornikiem?
Bardzo prosze o pomoc i wszelkie informacje
Pozdrawiam
Grzegorz
CodiJack
Guest
Tue Sep 13, 2005 5:52 am
Użytkownik "Grzegorz" napisał w wiadomości
Quote:
Witam.
Od blisko miesiaca mecze sie z tym przetwornikiem i za nic nie moge sie z
nim skomunikowac, nie mowiac juz o odczycie napiecia. Moj mikrokontroler
to
ATMega8535 a programy pisze w BASCOMie. Czy jest tu jakis kruczek? Odczyt
i
zapis bajtow do AD7730 wykonuje dokladnie wedlug przebiegow sygnalow
podanych w dokumentacji. A moze ktos sie bawil tym przetwornikiem?
Niedawno skonczylem "zabawke" na AD7730. Wprawdzie procek to PIC, ale to bez
znaczenia. Uscislij bardziej pojecia "nie moge sie z nim skomunikowac", to
znaczy piszesz do np. MODE REGISTER odczytujesz z niego i wartosci sa rozne?
Moze zle skonfigurowales porty? Patrzyles czy przetwornik cos Ci wystawia? A
jak tam zegar? Itd, itp...
Napisz dokladnie co robiles, co dostawales, bo inaczej to ni huhu...
Pozdrawiam,
CodiJack.
Grzegorz
Guest
Tue Sep 13, 2005 8:52 pm
Quote:
Niedawno skonczylem "zabawke" na AD7730. Wprawdzie procek to PIC, ale to
bez
znaczenia. Uscislij bardziej pojecia "nie moge sie z nim skomunikowac", to
znaczy piszesz do np. MODE REGISTER odczytujesz z niego i wartosci sa
rozne?
Moze zle skonfigurowales porty? Patrzyles czy przetwornik cos Ci wystawia?
A
jak tam zegar? Itd, itp...
Napisz dokladnie co robiles, co dostawales, bo inaczej to ni huhu...
Pozdrawiam,
CodiJack.
Po pierwsze dziekuje za odpowiedz. Konkretnie problemem jest podstawowa
czesc programu - czyli fragment odpowiedzialny za wysylanie i odbieranie
bajtow do i z procka tutaj jest cos nie tak. W sumie sklecilem mniej wiecej
cos takiego: (jest to fragment, ktory mial sluzyc do najprostszego pomiaru.
Procedura probe jest napisana na podstawie pseudokodu z dokumentacji,
natomiast procedury Ad_read i Ad_write - mialy realizowac przebieg sygnalu z
rysunków "Read cycle timing diagram" i "write cycle timing diagram" ze
strony 36 Datasheeta)
Sub Probe_ad
Call Ad_write(&H02)
Set Cs
Call Ad_write(&H21)
Call Ad_write(&H80)
Set Cs
Call Ad_write(&H21)
Set Cs
Call Ad_read()
Call Ad_write(&H30)
Set Cs
Result01 = W1
Result23 = W2
Result45 = W3
End Sub
------------------------------------------
Sub Ad_read()
W = 0
W1 = 0
W2 = 0
W3 = 0
Set Pol
Bitwait Rdy , Reset
Reset Cs
For I = 7 To 0 Step -1
Reset Sclk
Waitms 1
W = W1
W1 = Dout * I
W1 = W1 + W
Set Sclk
Waitms 1
Next
For I = 7 To 0 Step -1
Reset Sclk
Waitms 1
W = W2
W2 = Dout * I
W2 = W2 + W
Set Sclk
Waitms 1
Next
For I = 7 To 0 Step -1
Reset Sclk
Waitms 1
W = W3
W3 = Dout * I
W3 = W3 + W
Set Sclk
Waitms 1
Next
Set Cs
Waitms 1
End Sub
----------------------------------------
Sub Ad_write(byval D As Byte)
Set Pol
For I = 8 To 1 Step -1
B(i) = D Mod 2
D = D \ 2
Next
Reset Cs
Waitms 1
For I = 1 To 8
Reset Sclk
Waitms 1
Din = B(i)
Set Sclk
Waitms 1
Next
Waitms 1
End Sub
-----------------------------------
Ogolnie musze sie przyznac, ze nie do konca wiem co robie i o co w tym
wszystkim chodzi... Zalezy mi tylko, zeby w zmiennych W1, W2 i W3 miec wynik
pomiarow (bo z tego co wyczytalem, to trzy bajty sa wlasnie), ktory
ewenetualnie moglbym zlozyc w calosc. Nie wiem, czy bedziesz wiedzial cos z
tego kodu, ale licze, ze tak.. A moze zabieram sie do tego ze zlej strony? W
ogole, to nie wiem jak sprawdzic, czy ten uklad dziala.. Aha.. Nazwy
sygnalow w programie odpowiadaja wyprowadzeniom Ad7730.
Jeszcze raz dziekuje za pomoc.
Pozdrawiam
G.
CodiJack
Guest
Wed Sep 14, 2005 6:28 am
Użytkownik "Grzegorz" napisał w wiadomości
Quote:
Ogolnie musze sie przyznac, ze nie do konca wiem co robie i o co w tym
wszystkim chodzi...
I tu lezy pies pogrzebany

. MUSISZ DOKLADNIE PRZECZYTAC PDF-a! Jak chcesz
cos konkretnego robic, skoro sam nie wiesz do konca co robisz? Jak chcesz
obsluzyc specjalizowany AD skoro nie wiesz do konca jak dziala?
BTW nie znam basica ale z tego co wydumalem w funkcji Read cos skladanie
bitow nie za bardzo bedzie dzialac (trzeba iteracyjnie przesuwac, nie
mnozyc). Generalnie robie tak:
1. Twardy reset AD.
2. Inicjalizacja i kalibracja.
3. Odczyt.
Zawsze piszac do rejestru robie jego odczyt celem weryfikacji, jak cos nie
zadziala to wiem dlaczego. Zrob prosty test zapisz do MODE register,
odczytaj, porownaj. Jak OK to wiesz ze napewno wartosc zostala zapisana. Jak
zainicjujesz AD to nie wylaczaj funkcji ciaglego odczytu
"Call Ad_write(&H30)". Na pinie RDY bedziesz ciagle mial impulsy - znaczy AD
non stop przetwarza.
Jak masz tylko 1 AD na SPI procesora to po co wachlowac CS? Dopnij go do
GND. To samo z POL.
Wez oscyloskop zobacz jak wygladaja sygnaly. Na poczatek zrob tylko jedno -
zapisz i odczytaj z jednego rejestru. Jak Ci to ruszy, reszta bedzie kwestia
czasu. Jak zwalczysz poprawny zapis do jednego rejestru i dalej bedzie
problem, cos pomyslimy...
CodiJack.