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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 12 kwi 2025, o 21:54


    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 ] [ Zaznacz wszystko ]
    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 ] [ Zaznacz wszystko ]
    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 ] [ Zaznacz wszystko ]
    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 ] [ Zaznacz wszystko ]
    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 ] [ Zaznacz wszystko ]
    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 4 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:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO