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



Teraz jest 9 sty 2025, o 05:20


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 5 cze 2013, o 08:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 lut 2013
Posty: 36
Lokalizacja: Nowy Sącz
Pomógł: 1

Witam wszystkich :)
Jako że z programowania jestem słaby, PurePatch jest dla firm, piszę w tym dziale tzn. Bascom- jedyny język który rozumiem :)
Jako DAC posłuży mi układ PCM5122. Od 75 strony zaczyna się magia. No dobra, może nie magia, ale tutaj prosił bym o wytłumaczenie.
Karta katalogowa

Wszystkie dane były by wysyłane poprzez I2C -wydaje mi się że jest to łatwiejsze niż wysyłanie po SPI.
Przejdźmy teraz do sedna. Poniżej mamy wykaz rejestrów.

Obrazek

Interesują mnie tylko Page 0 i Page 1.
Jak wygląda struktura?

Obrazek

Powyżej mamy przykład- Page 0, Rejestr 4.
I chcę teraz odczytać PLCK, 4-ty bit. Jak to zrobić? Jak to wszystko napisać?
Poniżej kawałek kodu, do odczytu.
Kod:
I2Cstart
I2Crbyte
I2Cstop

Jest to jednak odczyt wartości bajtowych. Jaki wynik otrzymam w uP? Co z bitami które są zarezerwowane? Pojawią się tam zera?
Jak adresować pozostałe rejestry?
Wielkie dzięki :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 cze 2013, o 17:19 
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

Musisz najpierw wybrać rejestr, dokonując zapisu, a potem odczytać z niego dane. Dodatkowo jak chczesz zmienić stronę (Page) to kolejno wybierasz rejestr 0 do zapisu, a potem wysyłasz adres strony i dopiero wtedy masz do niej dostęp. Adres układu to 10011(ADR2)(ADR1)(R /W) i dla zerowych ADRx wynosi 152 do zapisu i 153 do odczytu. Monżna odczytywac kolejno rejestry ustawiająć 1 bit podczas wyboru adresu.
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Z wyborem strony to będzie pewnie tak:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jak dla mnie to bity zarezerwowane mogą mieć jakieś wartości i nie należy ich zmieniać tzn. że należy odczytać rejestr zmienić bity które nas interesują i zapisać z powrotem.


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 cze 2013, o 18:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 lut 2013
Posty: 36
Lokalizacja: Nowy Sącz
Pomógł: 1

Dzięki za odpowiedź.
Faktycznie, adresowanie jest pokazane w tabeli 49 (72 strona).
W tabeli 50, czyli pojedynczy zapis mamy tak, wg. kolejności:
1. St - start transmisji
2. Slave address - adres zapisu- 152
3. R/W - zapis - 0 (dla tego Slave address 152)
4. ACK - potwierdzenie ze strony PCM
5. DATA - wybór strony ( od 0 do 255 ) - o tym napiszę jeszcze niżej.
6. ACK - potwierdzenie ze strony PCM
7. DATA - zapis ustawień
8. ACK - potwierdzenie ze strony PCM
9. ACK - j.w.
10. Sp - stop transmisji

Z wyborem strony będzie wg. mnie inaczej.
Page 0- mamy 120 "adresów", potem zaczyna się page 1, od jedynki do dziewięciu. Później page 44 (tam już nie za bardzo rozumiem).
Jak chcę zapisać coś do 4-tego rejestru (PLL Lock Flag, PLL enable) muszę wpisać- w punkcie 5-tym, co pisałem wyżej: 00000011 (cztery). Czekam na potwierdzenie, i teraz dopiero zapisuję wartości danych bitów dla danego rejestru 8-mio bitowego (ten screen co podałem za przykład).

Zastanawia mnie teraz jedna rzecz. Sumując te "adresy" 120 + 9 = 129- to jest suma Page 0 i Page 1. Dodając Page 44, która składa się z 74 adresów, w sumie daje to 203. Brakuje więc 52 rejestrów 8-mio bitowych. Fakt, w tym Page 44 opisany jest tylko jeden przykład. Ponad to, tam mamy już rejestry 128 bitowe- i, wg. mnie, będą to rejestry konkretnie pod PurePatch Studio.
Z 2giej strony- liczba 128 jest zbyt mała, a 203 leży w przedziale do 255. Więc chyba po prostu nie ma tych rejestrów. Dobrze myślę? ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 cze 2013, o 18:52 
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

Przemek6 napisał(a):
5. DATA - wybór strony ( od 0 do 255 ) - o tym napiszę jeszcze niżej.
Nie. Wyraźnie pisze reg addr czyli adres rejestru. Nie należy mylić rejestru ze stroną.
http://www.ti.com/lit/ds/symlink/pcm5122.pdf napisał(a):
In any page, register 0 is the Page Select Register. The register value selects the Register Page from 0 to 255
for next read or write command.

Na każdej stronie rejestr 0 jest Rejestrem Wyboru Strony. Wartość rejestru wybiera Stronę Rejestrów z zakresu 0 do 255.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 cze 2013, o 19:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 lut 2013
Posty: 36
Lokalizacja: Nowy Sącz
Pomógł: 1

No właśnie, umknęło mi "In any page", i "zakodowałem" sobie, że rejestr 0 jest do wyboru rejestrów- fakt, jest to trochę nielogiczne... .
Przeczytałem kilka razy Twój pierwszy post i więcej rozumiem, niż nie rozumiem :)
Wielkie dzięki- myślałem że będzie to całkowicie wykraczało poza moje rozumowanie- wówczas nie zabierał bym się za to. Teraz tylko PCB wykonać, odpalić- wówczas odezwę się ponownie.
Pozdrawiam :)



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

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