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



Teraz jest 19 mar 2026, o 04:41


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
Autor Wiadomość
PostNapisane: 29 kwi 2014, o 09:39 
Offline
Użytkownik

Dołączył(a): 28 paź 2013
Posty: 28
Pomógł: 1

Witam Wszystkich!

Staram się podłączyć uC (ATMEGA) do magistrali 1Wire w charakterze SLAVE. Mój SLAVE prawidłowo czyta z magistrali (rozpoznaje RESET PULSE oraz komendę SEARCH ROM wystawioną przez HOSTa), lecz niestety nie potrafi nadawać :( To znaczy, gdy mój SLAVE wysyła do mastera bity 1 i 0, master odczytuje 1 i 1. Obniżanie stanu linii do poziomu 0 realizuję poprzez ustawienie PINU jako wyjście ze stanel "0", zwolnienie magistrali zaś jako ustawienie PINU jako wejście (i nasłuch magistrali). Wygląda na to, że MASTER nie widzi mojego wystawiania stanu niskiego. I tutaj wpadłem na pomysł, by linię magistrali zwierać do masy za pomocą tranzystora. Tylko jak to zrobić? To znaczy jasne jest dla mnie, że tranzystor musi działać w charakterze klucza, czyli tylko stan pełnego zatkania bądź pełnego przewodzenia.

I tutaj kilka moich wątpliwości...

1. Czy muszę dawać rezystor na bazę (wszak nic nie zasilam, tylko chcę odprowadzić ładunki do masy), czy w ten sposób nie zrobię zwarcia i nie ugotuję źródła zasilania. Aczkolwiek rezystor podciągający ogranicza prąd magistrali.

2. Czy stworzyć obciążenie za tranzystorem (na linii E - MASA) za pomocą rezystora, policzyć prąd Iegnd i do tego prądu policzyć rezystor bazy?

3. Szukać problemów w oprogramowaniu, bo powinno to działać bez żadnych tranzystorów... Wszak wydaje mi się, że RESPONSE PULSE master widzi, bo próbuje skanować magistralę.

Załączam rysunek z zapytaniem końcowym, który wariant? A, B, C, D czy E? A może F, czyli każdy mój pomysł zły i trzeba to zrobić inaczej?

Pozdrawiam i czekam z niecierpliwością na pomoc...

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 kwi 2014, o 10:56 
Offline
Użytkownik

Dołączył(a): 28 paź 2013
Posty: 28
Pomógł: 1

squeez Dziękuję za odpowiedź. Wstyd się przyznać, ale nie. W sumie, stwierdziłem, że skoro dochodzi do wysłania przez MASTERa polecenia ROM SEARCH, to MASTER musi odczytywać "0" z mojego SLAVE, ponieważ musiał zobaczyć impuls "obecności" :( Coraz mniej to rozumiem. Dlaczego nie łapie bitów?

Oba procki narazie podłączone są do jednej płytki stykowej. Także nie ma problemu z odległością czy tym podobnymi kwestiami. PULL-UP to klasyczne 4,7K.

Czyli tak naprawdę schemat "C", tylko jaki rezystor dać? Czy mam policzyć prąd dla PULL-UP'a i przyjąć taki prąd Ice i wtedy odpowiedni prąd dla bazy?

Jest jeszcze motyw taki, że PIN, którym podłączam się do 1Wire to INT0, przerwania na oba zbocza. Zbocze opadające zeruje timerek a zbocze narastające sprawdza ile upłynęło czasu (ile trwał impuls). Jeśli czas trwania impulsu oznacza RESET PULSE od mastera, zaczyna się cała obsługa w moim SLAVE.

W nocie katalogowej jest napisane, że jeśli mam włączone przerwania INT0, to zmiana stanu generuje przerwanie nawet jeśli PIN pracuje jako OUT. Może tu jest pies pogrzebany? To znaczy po zdiagnozowaniu RESET PULSE wyłączyć przerwania INT0 tak aby pin powrócił pod kontrolę systemu IO a nie kontrolera przerwań, może mi się tylko wydaje, że ustawiam PIN na wyjście a tak naprawdę cały czas jest wejściem bo kontroler przerwań go skanuje?

Może ktoś rozwiać ten dylemat (ja niestety dopiero po 20 będę mógł fizycznie powrócić do swojego układu i empirycznie się przekonać)...

Jeszcze jedno. Czasy w masterze i slave wydłużyłem do maksimum, podejrzewając na początku, ze może SLAVE nie nadąża :( Nic się nie zmieniło, gdy wepnę w miejsce swojego SLAVE (odłączając go od magistrali) termometr DS18B20, wszystko działa jak należy :(



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


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