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



Teraz jest 10 kwi 2026, o 11:50


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 10 lip 2013, o 14:46 
Offline
Nowy

Dołączył(a): 13 maja 2013
Posty: 18
Pomógł: 0

Witam.

Na magistrali TWI jest PCF8583 odpytywany co 1 sekundę. Działało bez zarzutu. Dołożyłem PCF8574 i tak nieszczęśliwie (a właściwie szczęśliwie, bo dzięki temu znalazłem nieścisłość, o której piszę) zastosowałem procedurę jego obsługi w pętli głównej, że układ był na okrągło atakowany komendami z procesora. Układ przestał działać. Dragon pomógł sprawdzić, że program utyka w procedurze "TWI_stop()",

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

W googlach ktoś komuś radził, żeby usunąć wykrzyknik z tej instrukcji. Znalazłem kilka źródeł, gdzie faktycznie tego wykrzyknika nie ma. Tutaj moje pytanie: powinien być, czy nie? Czekamy na wystawienie stanu niskiego, czy wysokiego (bo do tego się to de facto sprowadza)?

Kiedy powyższą instrukcję zastąpiłem

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

układ działa poprawnie. Nawet przy atakowaniu PCF8574 bez przerwy w pętli głównej (docelowo to zmienię).
W erracie Mirka dot. TWI jest tylko dodatkowa funkcja ustawiająca "bitrate", ale funkcja "stop" jest bez zmian.
Mógłby mnie ktoś oświecić jakimś linkiem lub bezpośrednim wytłumaczeniem?

pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lip 2013, o 15:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lut 2013
Posty: 223
Zbananowany użytkownik

Pomógł: 21

Datasheet M16 twierdzi:
Cytuj:
• Bit 4 – TWSTO: TWI STOP Condition Bit
Writing the TWSTO bit to one in Master mode will generate a STOP condition on the Two-wire Serial Bus. When the STOP condition is executed on the bus, the TWSTO bit is cleared automatically. In Slave mode, setting the TWSTO bit can be used to recover from an error condition. This will not generate a STOP condition, but the TWI returns to a well-defined unaddressed Slave mode and releases the SCL and SDA lines to a high impedance state.

Czyli kiedy bit TWSTO zostanie ustawiony przez osprzęt na 0 to transmisja sygnału "STOP" (koniec transmisji TWI) została ukończona.

Według mnie nie powinno być tej negacji logicznej.

PS. Dzięki za zwrócenie uwagi, bo u mnie była, a cały czas mnie ciekawiło, czemu układ się losowo, co parę minut/godzin restartuje przez watchdoga. Ciekawe, czy mu się teraz polepszy ;)

_________________
Nie pisz komentarzy - dobry kod komentuje się sam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lip 2013, o 15:25 
Offline
Moderator
Avatar użytkownika

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

Kurczę wygląda na to, że wkradł się błąd .... rzeczywiście ... muszę to też w erracie zamieścić, choinka jasna.

No ustawiamy bit na 1 i musimy czekać aż procek go wyzeruje, czyli negacja to błąd tutaj. W większości wypadków to będzie działać no ale mogą się zdarzyć dziwne przypadki gdy nie zadziała ...

_________________
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: 10 lip 2013, o 15:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lut 2013
Posty: 223
Zbananowany użytkownik

Pomógł: 21

Dziwnym przypadkiem jest chociażby wykonanie przerwania zaraz po wydaniu rozkazu nadania "STOP", a przed sprawdzeniem pętli. Jeżeli w trakcie przerwania sygnał "STOP" został w pełni nadany, to właśnie pięknie ucegliliśmy program :)

_________________
Nie pisz komentarzy - dobry kod komentuje się sam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lip 2013, o 16:07 
Offline
Moderator
Avatar użytkownika

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

Już jest informacja w erracie .... kurczę to ważny istotny błąd może być

Cytuj:
Mógłby mnie ktoś oświecić jakimś linkiem lub bezpośrednim wytłumaczeniem?


Skontaktuj się ze mną na PRIV ;) .... mam dla ciebie specjalną wiadomość - ok?

_________________
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: 10 lip 2013, o 21:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2013
Posty: 568
Zbananowany użytkownik

Pomógł: 31

Sam sprawdziłem swoje biblioteki i mam tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Zastanawiam się czy to oczekiwanie jest potrzebne?

_________________
Und schreien

Spring
Erlöse mich
Spring
...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lip 2013, o 21:45 
Offline
Moderator
Avatar użytkownika

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

Cytuj:
Zastanawiam się czy to oczekiwanie jest potrzebne?


Jak pisałem wyżej w większości przypadków nie ... a szczególnie przy niskich prędkościach i wolnym taktowaniu procka ... bo czy damy to oczekiwanie czy go nie damy, czy damy z tym błędem to i tak w większości przypadków to działa ;) Ale wiadomo to nie tylko program ale i elektronika, więc np bez dobrego podciągania SDA i SCL do VCC (najczęstszy błąd początkujących) i większym kwarcu - wszystko może się potęgować i zaczynają się wtedy schody.

A prawidłowo powinno się czekać na poprawne zakończenie sekwencji I2C STOP'u .... co nie jest tyle istotne np na końcu wysyłanej ramki jeśli dalej jest przerwa czasowa - ale np w przypadku repeated start/stop .... może być szczególnie ważne.

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 

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