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 w 2025? 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 30 kwi 2025, o 01:57


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
    Autor Wiadomość
    PostNapisane: 24 sie 2015, o 20:48 
    Offline
    Użytkownik

    Dołączył(a): 15 lut 2012
    Posty: 224
    Lokalizacja: Opole
    Pomógł: 24

    Witam

    Próbuję uruchomić komunikację po I2C pomiędzy dwoma atmegami Atmega 644PA jako slave i Atmega8 jako master.

    Z Atmegi8 wylatują dane (sprawdzane na oscyloskopie, komunikowałem procka z akcelerometrem także kod od mastera jest ok) ale nie mogę ich odebrać - dostaję cały czas status 0xF8 przy odczycie z TW_STATUS.

    Wysyłałem też dane tak jak to robiłem z akcelerometrem (zmieniłem adres slave`a na taki jak acc...), ale również bez skutku.

    Dane z TW_STATUS odczytywałem przez UARTA.

    SDA i SCL oczywiście podciągnięte do VCC (4,7k)

    i2c_slave.c
    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.


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


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



    Ostatnio edytowano 27 sie 2015, o 22:49 przez ps19, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sie 2015, o 23:28 
    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

    A co z plikiem main.c układu slave?

    W układzie slave ustaw maskę TWAMR na 0xFE i wtedy każdy adres będzie dobry.

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 sie 2015, o 18:49 
    Offline
    Użytkownik

    Dołączył(a): 15 lut 2012
    Posty: 224
    Lokalizacja: Opole
    Pomógł: 24

    plik main_slave.c

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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 sie 2015, o 19:11 
    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

    Dodaj opóźnienie w tej pętli while, bo procesor będzie co chwilę w przerwaniu od wysłania bajtu. Za dużo przerwań jednego rodzaju powoduje opóźnioną reakcję przerwania o niższym priorytecie.

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 sie 2015, o 14:44 
    Offline
    Użytkownik

    Dołączył(a): 15 lut 2012
    Posty: 224
    Lokalizacja: Opole
    Pomógł: 24

    1.Do wysłania danych adres musi być parzysty. Zmieniłem adres na parzysty i zaczęło działać.

    Zrobiłem funkcję do wysyłania kilku parametrów, ale o ile mogę wysłać jeden parametr to w przypadku jak wysyłam "identyfikator" , a potem chcę odebrać odpowiednie dane to w rejestrze TWDR slave`a dostaję adres odbioru (adres +1) .

    Funkcja odbierająca (master):

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


    Slave main:

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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 sie 2015, o 13:11 
    Offline
    Użytkownik

    Dołączył(a): 15 lut 2012
    Posty: 224
    Lokalizacja: Opole
    Pomógł: 24

    Chyba znalazłem w czym leży problem:

    Errata procka:
    Kod:
    2. TWI Data setup time can be too short
    When running the device as a TWI slave with a system clock above 2MHz, the data setup time for the first
    bit after ACK may in some cases be too short. This may cause a false start or stop condition on the TWI
    line.
    Problem Fix/Workaround
    Insert a delay between setting TWDR and TWCR.


    Teraz pytanie jak zrealizować to opóźnienie skoro ustawianie TWDR jak i TWCR odbywa się w prerwaniu



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 sie 2015, o 20:05 
    Offline
    Użytkownik

    Dołączył(a): 15 lut 2012
    Posty: 224
    Lokalizacja: Opole
    Pomógł: 24

    refresh



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 sie 2015, o 23:42 
    Offline
    Moderator zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 18 lip 2012
    Posty: 3228
    Lokalizacja: Kraków - obok FAB5 ATMEL'a
    Pomógł: 91

    Nie odświeżamy tematów...

    _________________
    http://www.jaglarz.info



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 17 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:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO