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



Teraz jest 24 lut 2025, o 20:21


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 9 paź 2013, o 18:26 
Offline
Użytkownik

Dołączył(a): 27 lis 2012
Posty: 291
Pomógł: 6

1 Czy START to jest tylko zaznaczona sekwencja sygnałów na SDA i SDL?
Obrazek

2 Czy TWINT=1 w pętli while
Kod:
TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTA);
while (!(TWCR&(1<<TWINT)));

oznacza
a) tylko że AVR wysłał taką sekwencję jak na w/w rysunku nie biorąc wcale pod uwagę stanu podłączonego urządzenia na magistrali?
b) że wysłał w/w sekwencję a oprócz tego zadziałał odbiornik na magistrali?
Która odpowiedź jest prawdziwa? a czy b?



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

Dołączył(a): 08 mar 2013
Posty: 236
Lokalizacja: Warszawa
Pomógł: 5

W sumie jest oznaczenia jakie stany muszą byc na linii SDA i na SCL. Prawdopodobnie ustawić jako wyjście i stan niski i SDA na wysoki i odczekac ileś.

ja to rozumiem tak: false = 0, Truse = 1. Jeśli negacja falsa da true, a true da falsa, znaczy pętla zostanie pominięta w przypadku kiedy mam negacje true znaczy 1.

Mi sie wydaje, że a), a co do dopasowanie wystarczy odpowiedni czas jako opóżnienie - bezczynność.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 paź 2013, o 19:38 
Offline
Moderator
Avatar użytkownika

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

Paul Dirac napisał(a):
a) tylko że AVR wysłał taką sekwencję jak na w/w rysunku nie biorąc wcale pod uwagę stanu podłączonego urządzenia na magistrali?
b) że wysłał w/w sekwencję a oprócz tego zadziałał odbiornik na magistrali?
Która odpowiedź jest prawdziwa? a czy b?


Ale kolega zakombinował ;) .....

Master? ... trzeba myśleć z takiego punktu widzenia a nie rozważać coś czego nie ma

więc jeśli master to niezależnie czy to procek czy cokolwiek ZAWSZE wyśle taką sekwencję bo to panie on rozpoczyna gadanie z innymi ... więc o jakim tu odbiorniku mowa w pkt.b) ??? jakimś bliżej nieokreślonym ;)

Slave ? ... slave panie to grzecznie czeka aż mu master zapoda zekwencję startu - dopiero wtedy czeka na dane przeznaczone ew dla niego i wtedy się ew odzywa jeśli go master poprosi ... ale oczywiście to nadal master generuje start

_________________
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: 9 paź 2013, o 20:13 
Offline
Użytkownik

Dołączył(a): 27 lis 2012
Posty: 291
Pomógł: 6

Zakładałem oczywiście że START wysyła MASTER.
Czyli podsumowując
w kodzie
Kod:
TWI_start(void) {
TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTA);
while (!(TWCR&(1<<TWINT)));
linijka
Kod:
TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTA);
spowoduje taką sekwencję SDA SCL u MASTERA
Obrazek A to spowoduje że TWINT=1 (bo wykrył w/w sekwencję SDA SDL)
i dzięki linijce
Kod:
while (!(TWCR&(1<<TWINT)));
program pójdzie dalej.
Trochę dziwne. Kontroler sprawdza sam siebie. Tak jakby nie wierzył fabryce która go zrobiła.
Przecież nie robimy np czegoś takiego.
Kod:
X=5;
while (X!=5);

Wystarczy samo
Kod:
X=5;



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 paź 2013, o 22:34 
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

Tu chodzi o to, że procesor jest dużo szybszy niż I2C i pętla while to oczekiwanie na skończenie wykonywania sekwencji strat. W pierwszej linijce flaga TWINT jest zerowana, a w kolejnej procesor czeka, aż zostanie ona ustawiona.

_________________
Dragonus Cracovus: Biomagia



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

Dołączył(a): 27 lis 2012
Posty: 291
Pomógł: 6

Dzięki
Trochę męczyłem publikę, ale opłacało się.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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