Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

DAC 12bitowy MPC4822+SPI - problem

k_w
-
-
Posty:6
Rejestracja:27 lut 2008, o 12:52
Lokalizacja:swietokrzyskie
DAC 12bitowy MPC4822+SPI - problem

Postautor: k_w » 7 mar 2008, o 11:21

witam
W układzie są połączone: Atmega8 i MCP4822. Komunikacja ma przebiegać po SPI i tu właśnie pojawia sie problem. Tak wygląda program:

Kod: Zaznacz cały

$regfile = "m8def.dat" $crystal = 12000000 Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = low , Phase = 1 , Clockrate = 4, noss=0 Spiinit Do Gosub Spi_nadaj Loop End Spi_nadaj: $asm ldi r16, 00011111 Out Spdr , R16 Czekaj: sbis spsr,spif rjmp czekaj ldi r16,11111111 Out Spdr , R16 Czekaj1: sbis spsr,spif rjmp czekaj1 $end Asm ret
Link do datasheetz przetwornikiem.
W czym jest problem: sygnał na SCK i MOSI sa bo sprawdzałem na oscyloskopie ale wciąż nic nie dostaje na wyjściu przetwornika. Przetwornik oprócz SCK i SDI (dane) ma również dwa wejścia sterujące: CS i LDAC (w obu sygnał aktywny niski). Na szynie SPI mam podłączony tylko jeden odbiornik wiec podłączyłem CS na stałe do masy. LDAC służy do "zatrzaskiwania" rejestrów DACa i DACb po wpisaniu danych. Widziałem na jednej z dokumentacji Microchip'a, że ta linia była podłączona na stałe do masy wiec tak zrobiłem. Ale wciąż nic nie dostałem na wyjściu przetwornika. Więc zacząłem sterować CS - przed wysłaniem danych była ustawiana w stan H w czasie wysyłania danych stan L i po zakończeniu wysyłania danych znów stan H (program umieszczony wyżej nie posiada juz tego sterowania). Podczas takiego sterowania na oscyloskopie dostałem bardzo dziwne przebiegi (górny przebieg to dane a dolny to SCK).
Obrazek
Na lini zegarowej co osiem bitów pojawiał sie taki pik.
Po odpięciu lini CS od przetwornika przebiegi wyglądały dużo lepiej (górny przebiek - dane, dolny - SCK).
Obrazek
Więc wykorzystałem linie SS do sterowania przetwornikiem i podłączyłem ja do CS przetwornika ale wciąż nic nie dostaję na wyjściu przetwornika. I to również nie pomogło. Podłączyłem sondę do SS mikrokontrolera, aby zobaczyć jak jest sterowana ta linia no wydaje mi sie, że jest bardzo żle. Powinna być ustawiona w stan L podczas nadawania a w stan H jeśli nadawanie jest zakończone ale przebieg na tej linii wygląda tak (górny przebieg to SS a dolny to SCK)
Obrazek
Co do wpisywania wartości do rejestru przetwornika to trzeba wysłać 2x po 8 bitów. 4 pierwsze bity (dokładnie 3) służą do konfiguracji przetwornika, a następne 12 bitów to wartość którą przetwarzamy.
Ja wysyłam bajt1=00011111, bajt2=11111111 aby na wyjściu DACa przetwornika uzyskać napięcie 4,096V.
Obrazek
Sterowałem przetwornikiem w sposób pokazany na rysunku poniżej i wciąż nic
Obrazek
Proszę o pomoc ponieważ jest to dla mnie sprawa bardzo ważna i pilna. Być może ktoś używał tego przetwornika, miał podobne problemy i sie z nimi uporał. Proszę o pomoc.
Ostatnio zmieniony 20 sty 2009, o 18:12 przez k_w, łącznie zmieniany 1 raz.

adalberto
-
-
Posty:1
Rejestracja:19 mar 2008, o 11:14
Lokalizacja:mława

Postautor: adalberto » 19 mar 2008, o 11:30

Witam!
Testowałem ten D/A na Atmega88(Bascom AVR).Wysyłałem dane w pętli co 1 bit.
D/A pracował poprawnie.Jak cię jeszcze interesuje to na tela (604173808)

k_w
-
-
Posty:6
Rejestracja:27 lut 2008, o 12:52
Lokalizacja:swietokrzyskie

Postautor: k_w » 28 mar 2008, o 06:45

Przetwornik uruchomiony. Temat uważam za zamknięty.

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 73 gości