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



Teraz jest 30 cze 2026, o 17:04


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
Autor Wiadomość
PostNapisane: 21 paź 2015, o 20:32 
Offline
Użytkownik

Dołączył(a): 12 kwi 2014
Posty: 39
Pomógł: 0

Próbuję się porozumieć z pewnym urządzeniem za pomocą I2C poprzez TWI w Atmega88Pa. Mam taki problem, że przy pierwszej próbie porozumienia się z urządzeniem oraz sprawdzenia WHO_AM_I, TWI_start przechodzi, a po TWI_write(adres urządzenia + W) w TWSR&0xF8 mam 0x00(H). Przy próbie wysłania TWI_write(adres urządzenia + R) dostaję raport o błędzie "SLA+R has been transmitted; NOT ACK has been received". Czy to oznacza, że urządzenie odpowiada, czy NACK oznacza jednak, że nie?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 paź 2015, o 00:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 sty 2013
Posty: 80
Lokalizacja: Trzciniec
Pomógł: 0

Akronim od Acknowledgement, skrót ACK
Wg mnie NACK oznacza brak potwierdzenia, więc raczej urządzenie nie odpowiada.

_________________
Zło dobrem zwyciężaj.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 paź 2015, o 10:35 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8631
Pomógł: 338

zazwyczaj odpowiedź NACK oznacza że wystąpił błąd w transmisji i urządzenie oczekuje retransmisji
bloku danych (Negative Acknowledgement)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 paź 2015, o 12:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Nie piszcie mu co znaczy NACK, bo na TWI (I2C) jeżeli mamy odpowiedź ACK i NACK to jest operowanie jednym bitem. A jak wiesz szyna ma jeszcze swój neutralny stan. Tak więc 3 elementów na 1 bicie nie da się przekazać :(
ACK jest to ściągnięcie przez urządzenie szyny do stanu low.
NACK jest zostawieniem szyny w stanie high.
Brak odpowiedzi jest zostawieniem szyny w spokoju czyli także high.
Więc nie odróżnisz na szynie braku odpowiedzi od NACKa.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 paź 2015, o 14:10 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8631
Pomógł: 338

rskup napisał(a):
Nie piszcie mu co znaczy NACK,


Ok. przepraszam nic więcej nie napiszę ...
Pzdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 paź 2015, o 14:16 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27462
Lokalizacja: Szczecin
Pomógł: 1045

rskup napisał(a):
Nie piszcie mu co znaczy NACK

Pomyśl przez chwilę zanim kolejny raz coś takiego napiszesz ok ?

To, że nie da się przedstawić na 1 bicie trzech stanów to nie oznacza, że początkującemu nie można przedstawić pewne rzeczy w uproszczeniu. Tym bardziej, że jeśli się założy, że na i2c masz TYLKO dwa urządzenia o znanych ci adresach a nie ma awarii na i2c czyli np nie jest rozerwana żadna linia - to w zupełności takie wyjaśnienia jak wyżej wystarczą

rskup napisał(a):
A jak wiesz szyna ma jeszcze swój neutralny stan.

Ja tobie powiem, że ma jeszcze jeden stan - nieokreślony stan HiZ ... jeśli np uszkodzenie linii nastąpi przed rezystorem podciągającym do VCC wtedy jest sieczkarnia bo raz może być odczytywany jako Hi a innym razem jako Lo

REASUMUJĄC - jeśli chcesz uzupełnić , dodać coś od siebie bo czujesz że warto - to na tym forum robimy to kulturalnie ok ? TO jest u nas najważniejsza i niepisana zasada. Liczę na zrozumienie.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 paź 2015, o 15:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Powiem tak ... ja to odczuwam inaczej :cry:
Kolega [JungleMan zapytał się co oznacza w praktyce, że procesor zwrócił informację NACK a dostał wykład że NACK to jest negatywna odpowiedź nie wnosząca mu nic w dalsze rozwiązanie problemu. A według mnie chodziło o mu o to, co to w praktyce oznacza jak dostaje NACKa. Czy ma komunikację z układem czy nie. Czy układ mu fizycznie odpowiedział czy mógł to być całkowity brak komunikacji.
Więc stąd się wzięło moje
Cytuj:
Nie piszcie mu co znaczy NACK


A co do stanu nieustalonego to jest to oczywiste, że istnieje, ale w tym wypadku to informacja jest zbędna zrozumienia zwracanej przez procesor informacji NACK / ACK.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 paź 2015, o 15:11 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27462
Lokalizacja: Szczecin
Pomógł: 1045

rskup napisał(a):
Więc stąd się wzięło moje

No dobrze więc powiem ci wprost, o wiele bardziej kulturalnie byłoby to samo napisać na przykład tak:

"Moim zdaniem ...."

albo

"Ja chciałbym dodać/uzupełnić ... "

albo

"Uważam że warto doprecyzować...."

Nie dostrzegasz różnicy ?

--------------------------------------

rskup napisał(a):
A co do stanu nieustalonego to jest to oczywiste, że istnieje, ale w tym wypadku to informacja jest zbędna zrozumienia zwracanej przez procesor informacji NACK / ACK.

Moim zdaniem nie jest zbędna - jeśli już sięgasz po szczegóły na samo dno ... to wręcz ważne, żeby początkująca osoba wiedziała co ją czeka w przypadku awarii sprzętowej magistrali i2c ....

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 paź 2015, o 16:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Tak jest znaczna różnica, ale te zwroty nie wyrażają mojej dezaprobaty do merytorycznej części odpowiedzi do których odnosiłem, bo według mnie nic one w rozwiązanie problemu kolegi JungleMan nie wnosiły (a chyba to można na forum wyrażać?).
Kolega JungleMan zadał jedno proste pytanie
Cytuj:
Czy to oznacza, że urządzenie odpowiada, czy NACK oznacza jednak, że nie?
a udzielane odpowiedzi nie odnosiły się do zasady działania szyny I2C/TWI.


Co do
Cytuj:
Moim zdaniem nie jest zbędna
to chodziło o sytuację problemu. Bo pytanie było o interpretację odpowiedzi ACK/NACK w atmedze. I czy NACK jest z powodu że pomylił funkcje, adresy, porty czy dał nie taki rezystor jak trzeba lub ma uszkodzone kabelki, to jest już głębsza kwestia do późniejszej analizy.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 paź 2015, o 16:08 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27462
Lokalizacja: Szczecin
Pomógł: 1045

rskup napisał(a):
a chyba to można na forum wyrażać?

Można ale nie obrażając innych, nawet przez myśl ci nie przeszło, że np ktoś mógł czegoś nie wiedzieć po prostu!

Zasada forum jest taka, że jeśli ktoś zadaje pytanie, to zawsze namawiam aby każdy próbował podpowiadać, to ludzka rzecz się mylić, a za to na naszym forum nikt nie będzie słyszał jakichś nagan - tylko po prostu inna osoba, która akurat ma większą wiedzę, chętnie podpowie, wtedy skorzysta na tym i pytający i podpowiadający ....

Więc panie kolego swoje dezaprobaty schowaj proszę sobie do kieszeni i nie wylewaj ich na forum. Jak chcesz pomagać - to zapraszam. Jak chcesz sobie wyrażać dezaprobaty bo tobie się to podoba to powiem krótko - zmień forum i na innym wyrażaj co tylko chcesz i jak chcesz ....

Na tym forum jest jedna zasada - POMAGAMY SOBIE - a nie pomiatamy sobą ....

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

rskup napisał(a):
to chodziło o sytuację problemu. Bo pytanie było o interpretację odpowiedzi ACK/NACK w atmedze. I czy NACK jest z powodu że pomylił funkcje, adresy, porty czy dał nie taki rezystor jak trzeba lub ma uszkodzone kabelki, to jest już głębsza kwestia do późniejszej analizy.

Widzisz - każdy może mieć inne zdanie co do obecnej a co do późniejszej analizy. Ty masz swoje i ja nie wyrażam dezaprobaty wyrażając się tak jak ty. Gdybym ja albo kto inny to zrobił to pewnie zaraz poziom twojej dezaprobaty by się zaognił .... chwila i kłótnia !

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2015, o 20:59 
Offline
Użytkownik

Dołączył(a): 12 kwi 2014
Posty: 39
Pomógł: 0

Podsumowując zatem, to, że otrzymuję NACK oznacza, że urządzenie nie działa lub prosi o retransmisję i nie da się tego rozróżnić.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2015, o 21:31 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8631
Pomógł: 338

JungleMan napisał(a):
Podsumowując zatem, to, że otrzymuję NACK oznacza, że urządzenie nie działa lub prosi o retransmisję i nie da się tego rozróżnić.


Najprostszym rozwiązaniem w sytuacji gdy dostajemy NACK dla kolegi jest :

1. Sprawdzenie
a. strona sprzętowa - przewody i pullupy <zwłaszcza gdy to stykówka)
b. poprawność adresowania urządzenia

2. Programowa
a - poprawność wyboru adresu do odczytu i zapisu do urządzenia
b - poprawność ustawień dla magistrali i2C (porównanie warunków z notą układu)

Bardzo pomocne w takim wypadku jest urządzenie sprzętowe o nazwie Analizator Logiczny
klony Saleae mozna nabyć za grosze na Taniocha Markt , a oszczędza się wiele włosów na głowie

przykładowo jakby kolega wkleił screen z analizatora transmisji od razu było by wiadome
co jest nie tak i szybko znaleźć winowajce


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2015, o 21:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

W pierwszym poście pisałeś że przy adresowaniu dostajesz status 0x00
Cytuj:
a po TWI_write(adres urządzenia + W) w TWSR&0xF8 mam 0x00(H)
a nie jest to normalna wartość na poprawnie działającej szynie I2C (TWI), co także jest opisane w datasheetcie:
Obrazek
TWSR = 0x00 => "Bus error due to an illegal START or STOP condition"

Dlatego z quizu SunRiverowego wybrałbym 1a :D

--
Pozdrawiam,
Robert


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2015, o 23:03 
Offline
Użytkownik

Dołączył(a): 12 kwi 2014
Posty: 39
Pomógł: 0

Przetestowałem program na takim samym czujniku i okazało się, że program odpalił, czyli adresacja i ustawienia magistrali są w porządku. Poza tym, gdy przełączałem podłączenia magistrali I2C pomiędzy inne urządzenia, te działały poprawnie, więc problem ze stykami raczej odpada. Wynika z tego, że po prostu czujnik nie działał albo płytka z nim była źle zrobiona (obudowa 5x3x1mm - trudne lutowanie i zrobienie płytki). Dziękuję Wam za pomoc.



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

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