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



Teraz jest 18 sty 2025, o 01:24


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 6 maja 2013, o 14:05 

Pomógł: 0

Potrzebował bym "jakiś" "profesjonalny" czyli w stylu Mirka ;) kod obsługi przetwornika DAC.............

Próbuję napisać sterownik do MAX5321, ale nie wiem jak zacząć, nie wiem, czy nazywać funkcje obsługi DACa z nazwą tj. modelem przetwornika, bo przy użyciu kilku różnych trzeba będzie jakoś różnicować je w projekcie.

Potrzebował bym jakiś przykładowy kod, jak to należy robić, nie wiem, szukałem na pudn bo na sourcecode nie mam punktów. Ale wszystkie przykłady to jakieś śmiechu warte są, coś na zasadzie byle działało nie ważne jak.

Przetworniki są najczęściej po SPI miło by było jak by przykład był na podobnym rozwiązaniu.

Nie wiem, czy nie mam weny, ale za cholerę nic mi nie przychodzi do głowy.......
Oczywiście kod tylko w C ;).

PS. Od dłuższego czasu chodzi za mną projekt zasilacza w stylu laboratoryjnych rozwiązań Agilent, HP itp. Czyli pełna regulacja cyfrowa, w dodatku z możliwością "zaprogramowania" kiedy i jak zmienić napięcie itp.
Dodatkowo potem będzie rozbudowany o możliwość, badania i ładowania ogniw Liton itp.
Część analogową praktycznie mam wstępnie obmyśloną.......



Ostatnio edytowano 8 maja 2013, o 09:24 przez rezasurmar, łącznie edytowano 1 raz

Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 6 maja 2013, o 19:31 
Offline
Użytkownik

Dołączył(a): 20 sty 2012
Posty: 101
Pomógł: 5

Możesz podesłać link do dokumentacji? Za Chiny nie mogę znaleźć żadnych informacji o tym przetworniku. Sam robię sterowanie do zasilacza dokładnie w ten sam sposób więc możliwe, że będę mógł pomóc :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 maja 2013, o 07:47 

Pomógł: 0

A tu są dokumentacje

https://www.dropbox.com/sh/fa033q1mdjqnt27/QINuBUVhEK

Przypomniałem sobie o projekcie AVT2999, ale niestety to wewnętrzny DAC atxmegi i troszkę inaczej do niego się podchodzi ;).

http://minikombajn-pomiarowy.googlecode ... /src/DAC.c



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 7 maja 2013, o 21:08 
Offline
Użytkownik

Dołączył(a): 17 sty 2013
Posty: 327
Lokalizacja: Białystok
Pomógł: 14

Jakbyś mógł to sprawdź, czy to NAPEWNO jest ten model DAC? Podałeś MAX5321 i link do dokumentacji, ale niegdzie nie ma tego konkretnego elementu, może cyferki Ci się zamieniły?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2013, o 07:10 

Pomógł: 0

Fakt ;), sorry literówka, ma być MAX5231 ;).........



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 14 maja 2013, o 10:13 
Offline
Użytkownik

Dołączył(a): 20 sty 2012
Posty: 101
Pomógł: 5

Nie dałem rady wcześniej, ale jestem :)
Pierwszą rzeczą jaka rzuca mi się w oczy, to sterowanie za pomocą słów 16-bitowych. Przydała by się jakaś podpowiedź czy i jak wysłać sprzętowo słowo 16-bitowe przy pomocy AVRa :) Ja u siebie zaimplementowałem programową obługę SPI, miedzy innymi z tego względu, ale nie wiem czy takie rozwiązanie Cie satysfakcjonuje ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 maja 2013, o 10:18 

Pomógł: 0

To już nie problem, bo nawet jest podpowiedź w przebiegach samego DAC, można śmiało wysyłać dwie 8bitowe dane.
I tak konstrukcja całego słowa 16bitowego będzie robiona za pomocą przesunieć bitowych, bo dana samej wartości przetwornika jest w "środku" między S0, a C0,C1,C2 :).
U mnie hardware za pomocą bibliotek Mirka powstaje, co prawda ostatnio nie bardzo miałem czas, ale może na dniach do tego siądę.

Ostatnio robiłem testy czy aby przesunięcia bitowe działają zgodnie z moimi założeniami......

A tu początek biblioteki z inicjacją SPI

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


Oraz, definicje funkcji (chwilowo same nazwy;)), oraz opisy funkcji by łatwiej napisać obsługę.
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
  
cytowanie selektywne  Cytuj  
PostNapisane: 14 maja 2013, o 11:41 

Pomógł: 0

Tylko teraz się zastanowiłem i nie wiem czy nie lepiej było by zrobić tak

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


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


Bo po co tworzyć kolejną funkcję pośredniczącą, jak już te "modelujące" dane dla DAC mogą od razu przekazywać
je do SendSpiWord(....);

No i dopisałem trochę nowych linijek ;), spróbuję dzisiaj to puścić po SPI zobaczymy jakie dane wychodzą

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


PS. Nie wiem, czy nie dobrze było by jakoś inicjować zmienne dac_data ?, tj. jeżeli są one tworzone jako zmienne lokalne, to czy trzeba by je zainicjować za każdym razem?, czy wystarczy że, zadeklarujemy zmienną globalną dac_data?, chyba nie, bo przecież, przy każdej funkcji tworzona jest nowa zmienna dac_data, coś mi się zdaje, że albo najlepiej było by użyć wskaźnika hmm, albo za każdym razem inicjować zmienna dac_data w każdej funkcji.
Macie jakąś podpowiedź?



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 14 maja 2013, o 19:32 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Tylko, że we wszystkich funkcjach za wyjątkiem ostatniej nie ma definicji zmiennej dac_data, czyli tak jakbyś chciał korzystać ze zmiennej globalnej, która będzie oczywiście cały czas zajmowała pamięć.
Właściwie to nie potrzebujesz nawet tej zmiennej lokalnej, bo możesz zrobić np. tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

a w ostatniej funkcji nie musisz zerować wystarczy że zamiast |= użyjesz =


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 maja 2013, o 08:06 

Pomógł: 0

Dzięki, Krauser :D jak zwykle prostujesz moje koślawe postawy programistyczne ;).

Po uwagach kolegi Krauser wygląda to tak.....

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
  
cytowanie selektywne  Cytuj  
PostNapisane: 16 maja 2013, o 12:47 

Pomógł: 0

No i działa :D

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


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


Dzięki ci Krauser jeszcze raz, teraz reszta funkcji napisać obsługę tylko za pomocą wskaźników

PS. przydał się też bardzo Acute :), bo funkcja Mirkowa
SendSpiWord była nie do końca zgodna z moimi potrzebami bo jeżeli był LSB pierwszy to ok, ale jeżeli MSB to trzeba było zamienić miejscami j/w przerzucanie danych do SPDR, by się kolejność danych zgadzała :D.

PS2, zaczyna mi się podobać te pisanie sterowników :D bo jest to najbliżej sprzętu jak się tylko da, a to bardziej rozumiem, niż abstrakcyjne twory klas, dziedziczenia itp :).



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 17 maja 2013, o 13:18 

Pomógł: 0

W zasadzie teraz to już mam regulowany "zasilacz" ładnie się reguluje od 0do4,1V po 1mV. Dodatkowo jest fajna funkcja shutdown, oraz wejście LDAC, dzięki czemu można pracować w dwu trybach, albo wyjście "idzie" za wejściowym buforem, albo ustawiamy bufor i cyk, mamy na wyjściu to co w buforze, albo programowo albo softwerowo :D.

Teraz tylko muszę przywalczyć z CS5532 ;), bo przydał by się i jakiś pomiar napięcia :D.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO