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



Teraz jest 22 kwi 2026, o 13:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 19 cze 2016, o 14:46 
Offline
Użytkownik

Dołączył(a): 22 mar 2014
Posty: 52
Pomógł: 0

Witam,

Napisałem sobie program do przedwzmacniacza TDA8425, i mam z nim problem.
Gdy linijka "i2c_send(adr_write, adr_func, 238);" jest za remowana to program działa,
Wartości zmiennych glos, bas, treble na lcd się zmieniają, ale gdy tylko odremuje "i2c_send(adr_write, adr_func, 238);" to program się zatrzymuje i dalej poza tą linijkę nie chce iść.
Tak samo dzieje się z pozostałymi linijkami i2c_send(...);

Co może być źle?
Jako biblioteki do i2c używam tej od pana Mirka do lcd też.

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
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2016, o 15:40 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

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

To jest Twoja pierwsza transmisja po załączeniu zasilania. Natomiast nota układu mówi:
Cytuj:
After a power-on reset all five functions have to be adjusted with five data transmitions. It is recommended that data information for switch functions are transmitted last because all functions have to be adjusted when the muting is sitched off. The sequence of transmission of other data information is not critical.
Poniżej jest rysunek 4, na którym jest pokazana sekwencja, jaka powinna być wysłana do układu po załączeniu zasilania.

Gdyby nie pomogło:
Nie znalazłem informacji jak długo trwa "power-on reset" w tym układzie, więc można ewentualnie spróbować na początku programu dać małe opóźnienie przed transmisją.

Zakładam, że te funkcje od TWI masz sprawdzone?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2016, o 15:59 
Offline
Użytkownik

Dołączył(a): 22 mar 2014
Posty: 52
Pomógł: 0

To co ja mam tu wysłać?

------------------------ [ Dodano po: 24 minutach ]

Kurde, wystarczy że gdzieś dopiszę tylko linijkę TWI_start(); a program już zatrzymuje się w miejscu tej linijki.
Co może być źle?

Biblioteki twi:

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


Na początek ... kolega odnajdzie i przeczyta zasady forum i jak jeszcze raz umieści biblioteki z książki gdziekolwiek to tu na forum bedzie tylko ban , ale moze sie skończyć gorzej .... SunRiver



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2016, o 16:45 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

mateusz19955 napisał(a):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Zdaje się, że bitrate jest w kHz. Jeśli tak, to powinieneś zmniejszyć do 100 lub mniej, bo ten układ ma maksymalną prędkość transmisji 100kHz.

Poza tym sprawdź, czy połączenia masz w porządku.

Usuń ten kod z forum, bo naruszasz prawa autorskie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2016, o 17:02 
Offline
Użytkownik

Dołączył(a): 22 mar 2014
Posty: 52
Pomógł: 0

Zmniejszenie prędkości nic nie pomogło.
A połączenia w tym przypadku nie mają znaczenia bo to program się zatrzymuje.
Co jeszcze może być nie tak, że po dodaniu funkcji do wysyłania przez i2c zatrzymuje program (program stoi w tym miejscu i dalej już nie chce przejść).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2016, o 17:06 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

andrews napisał(a):
A połączenia w tym przypadku nie mają znaczenia bo to program się zatrzymuje.

Skoro wiesz lepiej...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2016, o 17:14 
Offline
Użytkownik

Dołączył(a): 22 mar 2014
Posty: 52
Pomógł: 0

To jak połączenia są źle to procesor nie widzi tego tda(nie może nic do niego wysłać) i dlatego program może się zatrzymywać na funkcjach do wysyłania?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2016, o 17:32 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

mateusz19955 napisał(a):
To jak połączenia są źle to procesor nie widzi tego tda(nie może nic do niego wysłać) i dlatego program może się zatrzymywać na funkcjach do wysyłania?

Na magistrali mogą wystąpić różne sytuacje awaryjne (brak podciągania do Vcc, zwarcie do masy, zwarcie do Vcc), dlatego mikrokontroler po wykonaniu każdej operacji sprawdza, czy została wykonana poprawnie. Informacja o tym (po zakończeniu każdej operacji) znajduje się w rejestrze TWSR. W przypadku zaistnienia takiego błędu należy na niego odpowiednio zareagować w programie, bo inaczej maszyna stanów, jaką jest interfejs TWI, może się pogubić.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2016, o 17:43 
Offline
Użytkownik

Dołączył(a): 22 mar 2014
Posty: 52
Pomógł: 0

Tam są bity TWPS0 i TWPS1, one ustawiają jakiś preskaler. Ale do czego służy ten preskaler?
Jak sprawdzić czy wystąpiła jakaś awaria na magistrali tak jak pisałeś wyżej?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2016, o 18:01 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

mateusz19955 napisał(a):
Jak sprawdzić czy wystąpiła jakaś awaria na magistrali tak jak pisałeś wyżej?
To zbyt obszerny i zawiły temat, aby tłumaczyć na forum. Większość bibliotek do obsługi TWI, nie korzysta z tego rejestru i te kod działa, dopóki nie wystąpi jakaś sytuacja awaryjna. Dlatego prosiłem, żebyś sprawdził połączenia, bo to może mieć znaczenie, choć wcale nie twierdzę, że to musi być wina połączeń.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 cze 2016, o 13:28 
Offline
Użytkownik

Dołączył(a): 22 mar 2014
Posty: 52
Pomógł: 0

Problem rozwiązany.
Jednak problemem były połączenia (przewód nie łączył od scl i niebyło podciągania do vcc przez rezystor).



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 3 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