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



Teraz jest 12 lut 2025, o 15:17


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 35 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 4 lis 2014, o 09:16 
Offline
Użytkownik

Dołączył(a): 03 lis 2014
Posty: 28
Pomógł: 0

Witam ponownie to mój drugi post. Tym razem coś trudniejszego. ;)
Nabyłem układ DS1267-050 http://datasheets.maximintegrated.com/en/ds/DS1267.pdf
Myślałem, że sobie poradzę, ale ręce mi zaczynają opadać. ;) Wklejam mój kod, który nie działa. Proszę o pomoc. Gdzie jest błąd?

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



Ostatnio edytowano 4 lis 2014, o 10:33 przez wojtek76, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2014, o 09:38 
Offline
Użytkownik

Dołączył(a): 22 sty 2014
Posty: 1806
Zbananowany użytkownik

Pomógł: 168

Kod wstawiamy w znaczniki takie jak syntax Panie Kolego :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2014, o 09:46 
Offline
Użytkownik

Dołączył(a): 03 lis 2014
Posty: 28
Pomógł: 0

Czy kod, który wstawiłem nie jest czytelny? nie rozumiem uwagi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2014, o 10:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lip 2013
Posty: 208
Lokalizacja: Kielce
Pomógł: 15

wojtek76 napisał(a):
Czy kod, który wstawiłem nie jest czytelny? nie rozumiem uwagi.


Nie jest czytelny. Proszę zapoznać się z regulaminem forum i wątkiem topic7402.html?hilit=wstawianie%20kodu#p84212



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2014, o 10:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

wojtek76 napisał(a):
Czy kod, który wstawiłem nie jest czytelny? nie rozumiem uwagi.


Zrozumiesz uwagę, gdy zobaczysz, że nikt nie przeczyta kodu w celu pomocy ;)
Ułatwiaj sprawę ludziom, którzy chcą Ci ewentualnie pomóc.

Odpowiadając, dla mnie nie nie jest czytelny. To jest różnica jak między czytaniem kodu w notatniku, a programie do pisania softu.

z Niebieskim pozdRowieniem,
Doman89



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2014, o 10:34 
Offline
Użytkownik

Dołączył(a): 03 lis 2014
Posty: 28
Pomógł: 0

ok, rozumiem. poprawiłem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2014, o 11:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Ja uważam, że komunikacja powinna przebiegać nastepująco:

wg START OF COMMUNICATION
- CLK i RST => 0
- RST => 1
- DQ => x (1 lub 0)
- CLK => 1
- DQ => ^x
- CLK => 0

wg END OF COMMUNICATION

Po ostatnim bicie jak damy już CLK => 1
- CLK i RST => 0
- DQ => ^x

Pozatym zajrzyj do tabelki: AC ELECTRICAL CHARACTERISTICS

Masz tam podane czasy jakie są minimalne przy zmianach odpowiednich stanów.

z Niebieskim pozdRowieniem,
Doman89


------------------------ [ Dodano po: 1 minucie ]

Co do czasów przykładowo:

- CLK i RST => 0
- RST => 1

Między tymi operacjami powinno być minimum 50ns przerwy - tcc

------------------------ [ Dodano po: 9 minutach ]

Co do czasów to się może lekko pośpieszyłem, bo nie ma tam żadnych mikrosekund, są same nanosekundy.

------------------------ [ Dodano po: 19 minutach ]

Poza tym dodałby jeszcze, że dane powinny być wysyłane:

1. Stack bit - 1 lub 0,
2. Potentiometer1 - 8bit
3. Potentiometer2 - 8bit

Ty piszesz, że wiesz, że musi być 17 bitów a i tak posyłasz 24 ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2014, o 11:36 
Offline
Użytkownik

Dołączył(a): 03 lis 2014
Posty: 28
Pomógł: 0

doman, dziękuję za poświęcony czas. przesyłam uproszczony kod. Proszę popraw mnie jeśli coś źle zrozumiałem.

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


------------------------ [ Dodano po: 4 minutach ]

co do wysyłania 24 bitów ... tak bez sensu przecież wysyłam bit po bicie :)



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

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

1. Ja bym zrobił osobną inicjalizację:

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


którą wrzucasz w setupie.

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


Nie mówię, że na 100% zadziała, ale coś koło tego ;)

Nie znam się na Ardunio, więc trzeba brać na to poprawkę.

z Niebieskim pozdRowieniem,
Doman89



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2014, o 12:11 
Offline
Użytkownik

Dołączył(a): 03 lis 2014
Posty: 28
Pomógł: 0

bardzo dziękuję :) teraz nie mogę, ale przetestuję to popołudniu



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

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Po drugiej pętli zapomniałem o zakończeniu transmisji:

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


z Niebieskim pozdRowieniem,
Doman89


------------------------ [ Dodano po: 1 minucie ]

Do tego jeszcze nie wiem jak w Arduino sprawa wygląda z SPI, ale aż się prosi aby ją zastosować. Ale tu musi się jakiś Arduiczny kolega wypowiedzieć.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2014, o 12:53 
Offline
Użytkownik

Dołączył(a): 03 lis 2014
Posty: 28
Pomógł: 0

Przygotowałem pełny kod. Przyznam że namąciłeś mi w głowie.
DS1267_set_value(255, 255, 0) w setup() powinno ustawić oba potencjometry na max. Zerknij proszę czy moje rozumowanie jest prawidłowe? :)

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2014, o 13:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Na szybkiego przeglądając jest spoko, tylko, że jak dla mojego stylu klamry w if'ie i else są zbędne, bo nie trzeba ich stosować gdy jest jedna instrukcja warunkowa - tak przynajmniej jest w czystym C ;)

Jak coś to ktoś inny sprawdzi dokładnie bo ja lecę do pracy. Jak coś napisz efekty działania.

z Niebieskim pozdRowieniem,
Doman89



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2014, o 13:20 
Offline
Użytkownik

Dołączył(a): 03 lis 2014
Posty: 28
Pomógł: 0

tak, klamry są zbędne, ale osobiście wolę z klamrami ;) może się to wydawać mało eleganckie gdy nie są potrzebne ;). Oczywiście poinformuję o efektach. Jeszcze raz dzięki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2014, o 17:10 
Offline
Użytkownik

Dołączył(a): 03 lis 2014
Posty: 28
Pomógł: 0

I po testach... niestety potencjometr nie zmienia wartości. Pomiary: między H1 a W1 30k, L1 - W1 20k



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2014, o 21:47 
Offline
Użytkownik

Dołączył(a): 03 lis 2014
Posty: 28
Pomógł: 0

Może będzie pomocny kod źródłowy napisany w BASCOM AVR ? http://mirley.firlej.org/potencjometr_cyfrowy
i może jeszcze to: http://www.basicx.com/codeexamples/files/DS1267.bas



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2014, o 23:01 
Offline
Użytkownik

Dołączył(a): 03 lis 2014
Posty: 28
Pomógł: 0

Zauważyłem, że na Vcc mam 4,2V ... chyba może być za mało. Wg specyfikacji Vcc powinno mieścić się między 4,5 a 5,5V.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2014, o 00:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

wojtek76 napisał(a):
Zauważyłem, że na Vcc mam 4,2V ... chyba może być za mało. Wg specyfikacji Vcc powinno mieścić się między 4,5 a 5,5V.


Kolega dobrze zbudowany układ to podstawa, bo tak to jest niestety błądzenie po omacku.

Zasil układ 5V i dopiero się baw, bo inaczej to nawet dobry kod może nie pomóc.
z Niebieskim pozdRowieniem,
Doman89



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2014, o 12:10 
Offline
Użytkownik

Dołączył(a): 03 lis 2014
Posty: 28
Pomógł: 0

ok, mam równiutkie 5V na układzie. Coś się zaczyna dziać, ale to nadal "bzdury". Gdy puszczę DS1267_set_value(255, 255, 0) między W1 a L1 jest około 62k, dla DS1267_set_value(1, 1, 0) jest 50k.
Dodam, że układ jest zasilany oddzielnie 5V a arduino z USB gdzie jest poniżej 5V. Połączyłem razem masy (nie wiem czy ma to znaczenie).

------------------------ [ Dodano po: 33 minutach ]

Analizowałem program i wg tej dokumentacji: http://pdfserv.maximintegrated.com/en/an/AN409.pdf wynika, że kod jest dobry. Przynajmniej tak mi się wydaje.
"To write the 17 bits out to one of the DS1267s, the following procedure must be performed:
1. Assert RST (high)
2. Place a data bit on DQ pin
3. Pulse CLK
4. Repeat steps 2) and 3) 16 more times
5. De-assert RST (low)
If n DS1267s are cascaded together, then steps 2) and 3) are performed n x 17 times before RST is
deasserted."



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

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Powiem, Ci, że ciężko mi odpowiedzieć, czemu jest tak. Spróbuję coś poczytać, ale dziś to już nie dziś -> praca na południe.

Masy na pewno muszą być połączone oby układów. Vb masz połączone do masy? Zasilanie masz stabilizowane i odfiltrowane? Zastanawia mnie wartość 62k, skoro masz wersję 50k.

z Niebieskim pozdRowieniem,
Doman89



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2014, o 12:50 
Offline
Użytkownik

Dołączył(a): 03 lis 2014
Posty: 28
Pomógł: 0

zasilanie stabilizowane i odfiltrowane. Vb jest w "powietrzu", a powinno być podłączone do masy? :D faktycznie ... przeoczyłem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2014, o 13:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Kolega to jeszcze na wyjściu poproszę abyś napisał, jakie zmiany po tym Vb, przeczytam jak wrócę wieczorem ;)

z Niebieskim pozdRowieniem,
Doman89



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2014, o 20:08 
Offline
Użytkownik

Dołączył(a): 03 lis 2014
Posty: 28
Pomógł: 0

Witam ponownie, podłączyłem Vb do masy. Wysyłam cyklicznie co 3 sekundy:
DS1267_set_value(0, 0, 0). Na W1 i L1 dostaję rezystancję 0 (i już się cieszę) ale po 2 lub 3 cyklach rezystancja zmienia wartość na 30k (po dłuższej pracy 25k) na W1 H1 28k (waha się między 27 - 28).
Dla DS1267_set_value(255, 255, 0). Na W1 i L1 dostaję rezystancję 0 przez cały czas, na W1 H1 28k (waha się między 27 - 28).
Sorry ... zgłupiałem. Wygląda na to, że trzeba pomyśleć nad kodem. :(

Ciekawa informacja (pochodzi z http://mirley.firlej.org/ds1267):
"Początek komunikacji wymaga narastającego zbocza na linii RST. Gdy to nastąpi układ jest gotowy do odbioru danych. Są one wpisywane do rejestru na każdym zboczu narastjącym sygnału zegarowego CLK, przy czym muszą być spełnione odpowiednie warunki odnośnie czasów opóźnień (patrz karta katalogowa). "
hmmm



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2014, o 08:56 
Offline
Użytkownik

Dołączył(a): 03 lis 2014
Posty: 28
Pomógł: 0

sprawdzę jeszcze ten kod:

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



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

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Kolega obstawiam, że shiftOut to będzie ta sama funkcja co Ci napisałem (takie SPI programowe), jedyna różnica jaką zauważyłem, że bajty od Potentiometr1 i Potentiomer2 są przesyłane na odwrót.

No ale testuj, na tym polega "zabawa" programisty. Aczkolwiek jak dalej będzie źle, to ja bym szukał błędu w połączeniach może?

Napisz co się zmieniło po zastosowaniu funkcji to może coś się jeszcze wymyśli ;)

z Niebieskim pozdRowieniem,
Doman89



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2014, o 12:54 
Offline
Użytkownik

Dołączył(a): 03 lis 2014
Posty: 28
Pomógł: 0

po południu walczę dalej, ale już profilaktycznie zamówiłem AD8402. Czas pokaże, który będzie chciał współpracować.
Połączenia sprawdzałem już kilka razy, ale profilaktycznie zrobię to jeszcze raz. Może po prosty układ jest walnięty? jeszcze się nie poddałem. :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2014, o 17:15 
Offline
Użytkownik

Dołączył(a): 03 lis 2014
Posty: 28
Pomógł: 0

no! znaczna poprawa ta funkcja przynajmniej robi coś z sensem. B00000000 daje 0 oporności na L1 i W1, H1 W1 = 30k. B11111111 L1 W1 28k, H1 W1 0, L1 H1 28k. Na H0 L0 W0 pomiary są o 2k niższe.
Wygląda jak by jego max oporności wynosiła 30k. Gdzie jest reszta 20k? :)
Zastanawiam się z z tym Vb? taka ciekawostka: Vb do masy zakres oporności jest między 0 a 30k. Vb bez masy 20k - 40k.



Ostatnio edytowano 6 lis 2014, o 17:40 przez wojtek76, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2014, o 17:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Teraz widzę, że u Ciebie jest byte ( odpowiednik uint8_t ), ja miałem int.

No cóż jak zaznaczyłem, na Arduino się nie znam, a układu DS1267 nigdy nawet w łapkach nie miałem :P.

Ale widać jakieś efekty są ;)
Co do oporu to nie będzie tak, że 50k uzyskasz jak podłączysz Vb do -5V? Wiem, że tak się robi, jak się nie ma to Vb podłącza się do GND. Więc jakieś różnice muszą być jak się podpina w dwóch różnych konfiguracjach.

z Niebieskim pozdRowieniem,
Doman89



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2014, o 17:41 
Offline
Użytkownik

Dołączył(a): 03 lis 2014
Posty: 28
Pomógł: 0

nie mów mi że potrzebuję symetryczne zasilanie?

------------------------ [ Dodano po: 1 minucie ]

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2014, o 17:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

No nie wiem czy na 100%, ale zobacz, że na nóżkę Vb daje się napięcie od -5V do GND ;)

A w celach naukowych spróbuj kolega taką funkcję:
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jak zadziała, lepiej będzie Ci zrozumieć "jak to działa" ;)

z Niebieskim pozdRowieniem,
Doman89



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: 35 ]  Przejdź na stronę 1, 2  Następna strona

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