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 00:33


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
    Autor Wiadomość
    PostNapisane: 21 cze 2019, o 19:50 
    Offline
    Użytkownik

    Dołączył(a): 05 sty 2015
    Posty: 393
    Lokalizacja: Mielec
    Pomógł: 14

    Witam forumowiczów.

    Mam pytanie odnośnie tablic np tab[20]
    Czy wewnątrz funkcji dzialamy na tablicach bezpośrednio czy na kopii tablicy.
    Do czego zmierzam
    Mam kod
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Tablice tab[20] napełniam bajtami odebranymi z uart, po uruchomieniu funkcji flagą w while i nawet jesli sa inne dane w tablicy niż w warunku if wewnatrz funkcji to mi zapala diode, nawet je ksuje wysylajac 255.

    Czemu się tak dzieje? Co robie nie tak, Przecież całe wyrażenie musi być spełnione a tylko pierwszy bajt tab[0] jest poprawny a pozostałe są inne po odebraniu z uart.

    Pozdrawiam.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 cze 2019, o 20:49 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2014
    Posty: 1040
    Lokalizacja: Trójmiasto
    Pomógł: 190

    Tablica, jeśli jest przekazywana jako zmienna do funkcji, jest traktowana jako wskaźnik na pierwszy element tablicy więc nie może być mowy o kopii.
    U ciebie i tak tablica nie jest przekazywana jako argument funkcji, tylko funkcja operuje na zmiennej globalnej więc też nie może być mowy o kopii.
    Odnośnie twojego problemu to niestety za mały ten fragment kodu aby coś powiedzieć. Tą tablice masz stworzoną w głównym pliku programu czy w bibliotece, czy może tu i tu i problem jest z przykrywaniem nazw?



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

    Dołączył(a): 05 sty 2015
    Posty: 393
    Lokalizacja: Mielec
    Pomógł: 14

    Deklaracja jest tylko w bibliotece uarta jako globalna, bo poco wiecej.

    W przerwaniu uart jest (piszę z głowy, bo poza komputerem jestem)

    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.



    Wygląda to jakby dane zapisywane do tablicy z uarta się mieszały/przemieszczały w tablicy, ale sprawdzałem i przychodzą tak jak chce i zapisują się w tablicy poprawnie, sprawdzane na terminalu i wyświetlaczu 2x16,ale po parsowaniu zapisuje do każdego bajtu wartość 255 i ta wartość sie zmienia dopiero jak przyjdą nowe dane do uart i nigdzie wiecej nie sa zapisywane, a jednak wlacza mi ta diode, a nie powinno.

    Pozdrawiam

    ------------------------ [ Dodano po: 41 minutach ]

    Zapomniałem dodać że mam jeszcze przerwanie od timera co 10ms.
    Baud rate 57600

    I wysyłam dane w czasie 1s 400 bajtów.



    Teraz tak myślę że balol jest z tym

    ------------------------ [ Dodano po: 43 minutach ]

    Timer-em sprawdzę jak bede przy komputerze.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 cze 2019, o 22:27 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 cze 2017
    Posty: 169
    Lokalizacja: Słupsk
    Pomógł: 2

    A co to za magiczny zapis ?
    PORTB |= ~( 1<<PB7);

    _________________
    Lampka Leuchtglas
    Motorek Witka



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 cze 2019, o 22:35 
    Offline
    Użytkownik

    Dołączył(a): 05 sty 2015
    Posty: 393
    Lokalizacja: Mielec
    Pomógł: 14

    To jest wywołane po spełnionym warunku if, podaje odpowiedni stan na noge diody by swieciła,

    Kod pisze z pamieci, babol literowy zawsze się może trafić, ale to nie temat problemu.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 cze 2019, o 20:42 
    Offline
    Użytkownik

    Dołączył(a): 05 sty 2015
    Posty: 393
    Lokalizacja: Mielec
    Pomógł: 14

    Panowie/Panie

    Temat rozwiazany, wina sterownika, wysyła losowo te 3bajty (które uruchamiały warunek) które są pod innym przyciskiem, dziwne zachowanie bo to czasami sie dzieje i tylko przy zwalnianiu przycisku, jakis bug programowo/elektronichny, sterownik nie ja budowałem ani nie pisałem programu.

    Obecny program odbiornika napisany pod ten sterownik działa prawidłowo po odebraniu odpowiednich komuniktów od sterownika.

    Pozdrawiam



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