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 17 maja 2025, o 10:59


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
    Autor Wiadomość
    PostNapisane: 2 wrz 2016, o 19:17 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 sie 2013
    Posty: 165
    Lokalizacja: Sycyna Południowa
    Pomógł: 4

    Witam :) Zacząłem się bawić się tymi rejestrami, są mi one potrzebne do ulepszonej wersji sterownika wzmacniacza. Sam rejestr działa ok. Da się wysłać cały bajt, wszystko ładnie pracuje, ale pytanie nasuwa się w kwestii oprogramowania tego rejestru żeby działało tak jak chce.

    Wpadłem na pomysł sterowania:

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


    Teraz całą tą tablicę chciałbym wysłać do rejestru tak, żeby kolejne bity odpowiadały stanom wyjść rejestru (0 - wyłączone, 1 - włączone). Później bym przypisywał wartości odpowiadające kolejnym bitom zależnie co bym chciał zrobić. Problem mam z przepisaniem tej tablicy do np zmiennej i tą zmienną wysyłać do rejestru a może jest jakiś prostszy "patent" na tą tablicę? A może jest sposób operować na jednej zmiennej i tylko podmieniać odpowiednie bity? Czy może pomysł do d...? ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 wrz 2016, o 19:32 
    Offline
    Użytkownik

    Dołączył(a): 29 lip 2014
    Posty: 195
    Pomógł: 44

    Witam,

    Kwestia tego, czy potrzebujesz tą tablicę jeszcze do czegoś, jeśli tak, to możesz zrobić np. tak:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    i w zmiennej var_shift_reg masz binarną reprezentację swojej tablicy.

    Pozdrawiam, QuadMan.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 wrz 2016, o 19:54 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 sie 2013
    Posty: 165
    Lokalizacja: Sycyna Południowa
    Pomógł: 4

    No byłem kurcze blisko :) Dziękuję już wszystko jest jasne :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 wrz 2016, o 09:03 
    Offline
    Użytkownik

    Dołączył(a): 14 paź 2012
    Posty: 43
    Lokalizacja: Szczecin
    Pomógł: 0

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


    Nie rozumię powyższego ..hmm. Dzielimy wielkość tablicy przez jej adres!? Co to nam daje?

    dzięki z góry za wyjaśnienie!



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 wrz 2016, o 18:02 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 18 lip 2012
    Posty: 208
    Lokalizacja: Kraków
    Pomógł: 16

    Nie przez adres a przez wartość komórki na którą aktualnie wskazuje tab.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 wrz 2016, o 18:59 
    Offline
    Użytkownik

    Dołączył(a): 14 paź 2012
    Posty: 43
    Lokalizacja: Szczecin
    Pomógł: 0

    Juffre napisał(a):
    Nie przez adres a przez wartość komórki na którą aktualnie wskazuje tab.


    Dzieki za pomoc! Już jasne :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 wrz 2016, o 03:02 
    Offline
    Użytkownik

    Dołączył(a): 29 lip 2014
    Posty: 195
    Pomógł: 44

    Witam,

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


    Nie rozumię powyższego ..hmm. Dzielimy wielkość tablicy przez jej adres!? Co to nam daje?

    dzięki z góry za wyjaśnienie!


    Sorry, że dopiero teraz, wcześniej mnie nie było. To "stary" trick. Chodzi po prostu o wyznaczenie ilości elementów tablicy tab. Operator siezof dla tablic działa w ten sposób, że podaje jej wielkość w bajtach ( dla czepialskich: to pewne uproszczenie, ale na tym etapie wystarczy), więc jeśli w ogólnym przypadku chcesz znać ilość elementów tablicy, to dzielisz sizeof(tab) - bo tyle ona zajmuje w bajtach, przez rozmiar w bajtach 1 elementu tejże tablicy.
    Z kolei, sizeof(tab[0]), czy sizeof(tab[k]) w ogólnym przypadku to właśnie ilość bajtów potrzebnych na 1 element naszej tablicy. Ale tab[0] to przecież *tab, stąd zapis jak powyżej.
    Twoja tablica jest typu uint8_t, więc w sumie wystarczyło by samo sizeof(tab), ( bo po co dzielić przez 1 ? ;-) ) ale odruchowo piszę zawsze to co wyżej.

    Pozdrawiam, QuadMan.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 wrz 2016, o 11:13 
    Offline
    Użytkownik

    Dołączył(a): 14 paź 2012
    Posty: 43
    Lokalizacja: Szczecin
    Pomógł: 0

    Dzieki QuadMan za dogłębne wyjaśnienie! W sumie proste ale można się zamotać :)

    Pozdrawiam Janusz



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