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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 18 lip 2025, o 08:42


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
    Autor Wiadomość
    PostNapisane: 21 cze 2013, o 12:05 
    Offline
    Użytkownik

    Dołączył(a): 02 sie 2012
    Posty: 43
    Lokalizacja: Jabłonna
    Pomógł: 0

    Witajcie.
    Pod atmega88 mam podłączony expander 8574.
    Expander ten pracuje tylko i wyłącznie jako wejście, tzn , że ma monitorować jakieś dowolne switche.

    Do komunikacji z PCFem stosuje funkcje TWI_write_buf do podciągnięcia wejść no i oczywiście TWI_read_buf do odczytu stanu.
    Niestety o ile funkcja TWI_write_buf wydaje się działać poprawnie, o tyle z odczytem mam problem. Wygląda jakby się program wieszał.
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Jako, że projekt jest dosyć ograniczony ,to jedyną metodą debugowania jest u mnie "zastukanie" przekaźnikiem.

    Dopóki nie było funkcji TWI_read_buf, to przekaźnik sobie pykał. Po dodaniu funkcji program jakby nie dochodził do miejscia gdzie jest pierwsze załączenie przekaźnika.

    Czy przyczyną tego stanu rzeczy jest mój błąd w adresacji i wywołaniu funkcji, czy raczej problem leży w architekturze TWI dla tego procesora ? ( biblioteki są pod mega32)

    Pozdrawiam

    Kody umieszczamy przy pomocy syntax=c - Zielony J.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 cze 2013, o 14:18 
    Offline
    Moderator
    Avatar użytkownika

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

    a czytales dokladnie niebieska ksiazke ??? baaaaardzo wyraznie pisalem ze nie ma uniwersalnych funkcji twi write i read dla wszystkich scalakow i2c jakie sa na swiecie i podalem przyklady dla rtc i eeprom a ty co ? sprawdzales pdfa ? przystosowalee te funkcje do swojego scalaka ? czy tak na zywiol poszedles ? ;)

    ------------------------ [ Dodano po: 3 minutach ]

    poza tym , choc moze sie myle bo jestem poza firma i nie mam pdfow to w tych scalakach nie ma zadnego podciagania do vcc. Jesli sie myle to niech mnie ktos poprawi

    _________________
    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: 21 cze 2013, o 18:41 
    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

    Porównując do AVRów ustawienie 0 w układzie PCF8574 daje stan niski, a ustawienie 1 powoduje, że I/O działa jak wejście z rezystorem podciągającym do plusa. Ma to swoje zalety, bo można łączyć wyjścia równolegle, gdy potrzebny jest większy prąd wyjścia w stanie niskim.
    Co do programu to oczywiście jest źle i należy w tym przypadku napisać swoje funkcje:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    W tym przypadku jak widać adres musi 8-bitowy, a ty powyżej używasz 7-bitowego.
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    _________________
    Dragonus Cracovus: Biomagia



    Ostatnio edytowano 3 lip 2013, o 18:51 przez Krauser, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 cze 2013, o 21:13 
    Offline
    Użytkownik

    Dołączył(a): 02 sie 2012
    Posty: 43
    Lokalizacja: Jabłonna
    Pomógł: 0

    @Mirku. Tak. Czytałem.
    Do noty zaglądałem. Ogólna zasada jest taka, że zapis jest pod adresem układu a odczyt jest z adresu+1
    Widziałem w funkcji że jest SLA+1 i wydawało mi się ,że to jest to.

    Podczas debugowania program stawał na
    Kod:
    while (len--) *buf++ = TWI_read( len ? ACK : NACK );


    @Krauser, oczywiscie z tym adresem masz rację. Moje przeoczenie.
    Już się poprawiam.
    Co do funkcji to zaraz spróbuje zastosować zmiany.
    Dam znać



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 lip 2013, o 17:22 
    Offline
    Użytkownik

    Dołączył(a): 02 sie 2012
    Posty: 43
    Lokalizacja: Jabłonna
    Pomógł: 0

    Działa jak należy.
    Zmodyfikowałem tylko linię
    Kod:
    result = TWI_read( NACK );


    Niestety bez obsługi LCD do debugowania się nie obeszło :)

    Teraz mam inny problem, bo jest kwestia debounc no i maskowania bitów.
    Ale to temat na dzisiejszy wieczór ;)


    Pozdrawiam



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 lip 2013, o 18:54 
    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

    gaza napisał(a):
    Niestety bez obsługi LCD do debugowania się nie obeszło

    Ups... przepraszam, że wpakowałem cię na minę i już poprawiłem powyżej dla innych bywalców forum. Przynajmniej więcej się nauczyłeś :lol:

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 lip 2013, o 20:23 
    Offline
    Użytkownik

    Dołączył(a): 02 sie 2012
    Posty: 43
    Lokalizacja: Jabłonna
    Pomógł: 0

    nie ma sprawy :)
    Z tym brakiem przypisania to się od razu zorientowałem. Myślałem, że to takie wyzwanie dla mnie ;) na zasadzie "niech troche pokombinuje" ;)

    Debugowanie potrzebne było z powodu debounce.
    Po prostu moje testowe zwieranie wyjsc PCF-a do masy powodowało sporo drgań i urządzenie nie zachowywało się tak jak należy.
    Poradziłem sobie z tym banalnie prosto a zarazem nieelegancko.
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Natomiast do maskowania wyniku zastosowałem unie pola bitowego ze zmienną
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Być może jest to przerost formy, ale w odróżnieniu od
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Mogę dowolnie nazwać sobie "bity" które później w programie ułatwiają orientację



    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 12 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