Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 11 lip 2026, o 18:59


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 11 sty 2014, o 14:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Mam prośbę o pomoc i wskazówki w celu uruchomienia na mojej płytce testowej przetwornika DAC
TLC5615 po TWI czyli I2C.
Jak się za to zabrać i ewentualnie jakieś przykłady w C obsługi tego układu i wykorzystania go uwzględniając połączenia na mojej płytce.

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 sty 2014, o 18:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Witam
Z tego co wyczytałem w DS tcl5615 firmy TI
http://www.ti.com/lit/ds/symlink/tlc5615.pdf
nie jest sterowany przez I2C tylko SPI

pinologia

DIN - MOSI
SCLK - CLK
CS - CS

a na wyjściu OUT masz sygnał analogowy
dodatkowo wyjście DOUT jest wyjściem rejestru przesuwnego
Nie zagłębiałem się w DS ale tam zawsze jest wszystko dokładnie opisane
warto tam zaglądać :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 sty 2014, o 22:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Ale przecież na moim schemacie i płytce testowej nie mam podłączonego układu do SPI procesora tylko do PC0,PC1 i a skoro do PC0--SCL ,PC1--SDA ,to jak to możliwe że nie jest to I2C??
Przyznam się że nie rozumiem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 00:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Niestety tego to ja nie wiem
opieram się jedynie na DataScheed i tam jest napisane 3-wire serial interface

Nie wiem może inny producent układu inna odmiana
Podaj więcej info ,
co to za płytka testowa z jakim uC ,schemat może jakoś to
da się rozszyfrować

Ja jestem trochę za cienki ale może ktoś bardziej doświadczony będzie w stanie pomóc
ale bez pełniejszej informacji jest to wręcz niemożliwe



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 12:39 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8631
Pomógł: 338

Zwykle gdy jest SPI jest i TWI jedno drugiego nie wyklucza jednak w przypadku tego DACA jest on na SPI więc sam rozumiesz
pisałem ci na czacie i pokazałem przykład :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 12:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Do tej pory wydawało mi się że komunikacja procesora z peryferiami poprzez SPI polega na wykorzystaniu pinów PB5,PB6 i PB7 tzn. MOSI,MISO i SCK ,a przecież mój układ DAC TLC5615 jest na stałe przyłączony do pinów PC0 i PC1 oraz do PC6 a są to przecież piny SDA i SCL procesora Atmegi16 dedykowane do komunikacji TWI(I2C) a więc czy możliwe jest to żeby producent płytki testowej błędnie ją zaprojektował i wykonał??
Nadal nie rozumiem .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 13:15 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8631
Pomógł: 338

ale mamy zarówno SPI sprzetowe jak i Programowe, przeciez nie musi wisieć na fizycznych pinach :)
w przypadku twojego DAC-a Producent nie wspomina o TWI i pochodnych ...
wcale nie musi byc błąd konstrukcyjny ...

może został żle obsadzony układ :??
np DAC5571 jest na I2C



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 13:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Czyli z tego ci piszesz mogę ten układ obsłużyć w istniejącej u mnie na płytce konfiguracji tylko i wyłącznie poprzez poprzez programowe SPI ?
Dobrze a więc nie będę już wspominał o tym TWI:-)
Teraz proszę jeszcze o wskazówki tak krok po kroku ,łopatologicznie jak się zabrać za obsługę tego układu w języku C.
Nadal nie posiadam jeszcze żadnego doświadczenia jeśli chodzi o DAC i łatwiej będzie mi zrozumieć wszystko jak zobaczę jakiś wzór,przykład niż tylko teoria bez przykładu.Proszę o pomoc:-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 15:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Mam coś takiego po poprawkach i dostosowaniu do swoich potrzeb-prosze o sprawdzenie.
spi_dac.h
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


spi_dac.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Ale nie wiem czy dobrze przerobiłem SPI sprzętowe na programowe (czy wystarczyło tylko zmienić zdefiniowane piny z
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

na
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


teraz co dalej wykonać w pliku main.c aby sprawdzić układ DAC w mojej konfiguracji płytki testowej(rysunek powyżej w pierwszym poście.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 16:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Muszę Cię zmartwić taka zamiana nie wystarczy

Musisz obsłużyć cały protokół komunikacji programowo wykorzystując
piny uC które masz podłączone do magistrali SPI

Zakładając , że masz tak piny w uC
PC0 - MOSI
PC1 - SCK
PC6 - SS

Pseudo kod

1. pin PC6 w stan aktywny (niski)
2. pin PC0 - LSB danej do wysłania (najmłodszy bit danej którą chcesz przesłać)
3. pin PC1 - stan wysoki -(może być konieczne małe opóźnienie) -zmiana na stan niski
4. punkty 2..3 powtarzasz aż przejdziesz po wszystkich bitach danej którą chcesz wysłać
5. pin PC6 w stan wysoki (nieaktywny)

Musiałbyś jeszcze sprawdzić w DS scalaka z którym się komunikujesz czy najpierw wysłać
bit LSB czy MSB danej którą przesyłasz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 18:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Proszę o dalszą pomoc i poprawę i uzupełnienie tego kodu.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 18:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Masz może BB tam na stronie 298 Mirek bardzo dokładnie wyjaśnia
programowy przesył danych .

A jeśli chodzi o Twój kod to nie odbierasz danych z DAC tylko do niego
zapisujesz.
W tym scalaku przesyłasz najpierw MSB , wartość wysyłana jest 12 -bitowa
Zajrzyj do DS tam jest wszystko łącznie z narysowanym protokołem ISP

Nie mogę Ci wkleić funkcji do wysyłania z BB bo dokładnie z
niej korzystałem ale mogę Ci podpowiedzieć jak analizować bity danej do wysłania

Pseudo kod
zmienna = 0xb10000000

dopuki (zmienna)
{
if (dana & zmienna) wystaw 1 na MOSI
else wystaw 0 na MOSI
SCK 1
SCK 0
przesun zmienna o 1 w prawo
}



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2014, o 18:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Skorzystałem z przykładu mojego BB na temat programowego SPI na dowolnych pinach procesora .Teraz wysyłam do DAC wartość do 1023 i przy tej wartości dioda LED ma około 1,9V i świeci dość jasno i jest ok.Prosze o sprawdzenie mojej funkcji do wysyłania 10 bitowej wartości do układu czy jest wszystko ok,czy też coś może nie jest fachowo.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.




oraz przykład wykozystania tej funkcji do zapalenia diody LED w programie głównym-proszę o uwagi .Nierozumiem tylko jednego ta dioda LED na wyjściu układu DAC nie wiele mi daje-co autor miał na myśli montując ją na płytce testowej,w jaki inny sposób mogę przetestować ten układ oprócz regulacji napięcia na diodzie LED poprzez zmianę wartości liczby 10 bitowej.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2014, o 21:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Cóż można powiedzieć
półżartem pół serio to tylko sam autor może wiedzieć :D

serio to kod według mnie OK
może dla samego przetestowania DAC-a w pętli głównej
inkrementuj zmienną a od zera do maksa z jakimś delayem
(żeby w ogóle zobaczyć różnicę)
a przed diodą wstaw miernik do obserwacji zmian napięcia
(może głupie ale będziesz miał obraz w jaki sposób zmienia Ci się napięcie)

Wykorzystanie DAC-a do sterowania diodą (moim zdaniem) to nie najlepszy
przykład (mam na myśli autora płytki) jest to element mało liniowy
ale można to wykorzystać inaczej może znajdziesz zastosowanie.
Mogę powiedzieć że ja już chyba znalazłem ale to dopiero pomysł
i nie wiem czy zda egzamin, muszę to porządnie przetestować
chcę wykorzystać DAC-a jako wskaźnik analogowy
(dla mnie wskazówka przyrządu to jest bajka - starej daty jestem :D )

Fajnie ,że udało Ci się temat ogarnąć gratki ;)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2014, o 16:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Dziękuję bardzo za konkretną pomoc i sugestie związane z moim tematem i za wyrozumiałość oczywiście:-)
Mnie bardzo cieszy to że wykorzystując przykład programowego SPI z książki BB ruszyło to w końcu.Wskaźnik analogowy woltomierz z niskim zakresem pomiarowym myślę że to dobry pomysł,muszę coś podobnego poszukać w sieci.
Jeszcze raz dziękuję i życzę miłego dnia:-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO