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



Teraz jest 21 kwi 2026, o 04:34


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 18 lut 2014, o 14:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lip 2012
Posty: 203
Lokalizacja: Sosnowiec
Pomógł: 2

Witam

Od jakiegoś czasu piszę bibliotekę do czujnika MS5541
DS http://media.digikey.com/pdf/Data%20Sheets/Measurement%20Specialties%20PDFs/MS5541-CM.pdf
Pisanie zaczynałem od stworzenia zmiennych potem były obliczenia(obliczenia przeprowadzałem na przykładzie z DSa- wszystko obliczane jest prawidłowo) na koniec zostawiłem funkcje do wysyłania i odbierania po SPI i obsługę PWMa odpowiedzialnego za taktowanie czujnika.
Niestety nie mam jak sprawdzić czy dobrze ustawiłem SPI i PWM a doświadczenie moje w tym temacie jest znikome.
Testy z czujnikiem zacząłem wczoraj i natrafiłem na problem z którym sam raczej sobie nie poradzę.
Cały projekt dodaję jako załącznik.

Do wyświetlania wyników używam wyświetlacza z nokii 3310 (SPI)
Biblioteka do niego pochodzi ze strony: http://www.dharmanitech.com/2008/10/thermometer-design-using-ds1621.html
Przerobiłem ją nieco do swoich potrzeb, dodałem funkcję do wyświetlania INTów, i zmieniłem inicjowanie SPI tak by działało jednocześnie z innymi urządzeniami SPI

Niestety program zawiesza się w miejscu:

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


Wg mnie program zawiesza się w funkcji MS5541_RECIVE() a dokładniej na
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

ale to są tylko moje przypuszczenia.

Zdaję sobie sprawę że babranie się w czyimś kodzie nie jest najprzyjemniejszą rzeczą, więc na początek proszę kogoś o sprawdzenie 3 rzeczy:

1- czy PWM jest odpowiednio ustawiony do generowania częstotliwości 32.768 (nie jest to dokładnie tyle, ale odchyłka jest dopuszczalna) na pinie OC1A (PB1)
2- czy generowanie tej częstotliwości włącza się 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 wyłącza tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

3- czy dobrze zrozumiałem przebiegi z DS czujnika i odpowiednio inicjalizuję SPI do wysyłania i odbierania danych z MSa

Myślę że błąd jest gdzieś tutaj i to proponuję sprawdzić najpierw, ale jestem początkujący więc mogę się mylić ;)
Dodam jeszcze że do swojej biblioteki dołożyłem parę dobrych rozwiązań z tej tu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pozdrawiam :)


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.

_________________
sig on ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lut 2014, o 21:14 
Offline
Użytkownik

Dołączył(a): 05 lut 2013
Posty: 302
Pomógł: 19

Pokaz schemat jak to podlaczyles, zajrzalem pobieznie do kodu i wietrze problem w polaczeniach.
W kodzie na pewno jest tez problem z tym ze czesto dlubiesz w rejestrze SPCR nadpisujac ustawienia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lut 2014, o 22:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lip 2012
Posty: 203
Lokalizacja: Sosnowiec
Pomógł: 2

Mój błąd...
Schematu nie mam bo jest to banalne połączenie więc rozpiszę co i jak:

MS5541:

SCLK---- PB5(SCK)
GND-----GND
VDD-----3.3V
MCLK----PB1(OC1A) (PWM)
DIN------PB3(MOSI)
DOUT----PB4(MISO)
między VDD a GND wpięty kondensator tantalowy 47uF

Wyświetlacz:

VDD-----3.3V
SCLK----PB5(SCK)
SDIN----PB3(MOSI)
D/C-----PB6
SCE-----PB2(SS)
GND----GND
RES-----PB0
(wyświetlacz działa, na nim debuguję program)

Jak widać wyśw i czujnik korzystają z jednego SPI przez co muszę dłubać w rejestrze SPCR
W głównym programie na zmianę używa się funkcji do czujnika i wyświetlacza więc standardowe inicjowanie nie ma sensu.

_________________
sig on ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 mar 2014, o 11:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lip 2012
Posty: 203
Lokalizacja: Sosnowiec
Pomógł: 2

Witam ponownie
Ruszyłem trochę temat więc odgrzewam ;)

Za pomocą analizatora stanów sprawdziłem czy dobrze generuję MCLK iSCLK - jest ok
Zacząłem po kolei sprawdzać jak przebiegają funkcje związane z SPI

Reset wygląda dobrze:
ObrazekObrazek

następnie funkcja MS5541_GET_WORDS()

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


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

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


Send recive SPI:

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


ObrazekObrazek

Jak widać z przebiegu SCLK przestaje tykać przed funkcją MS5541_RECIVE.
Wyjaśni mi ktoś dlaczego tak się dzieje ?

Już jasno nie zerowałem rejestru SPDR przed odebraniem...

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

_________________
sig on ;)



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: 4 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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