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 04:31


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
    Autor Wiadomość
    PostNapisane: 2 lis 2023, o 17:36 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 mar 2015
    Posty: 323
    Lokalizacja: Rybnik
    Pomógł: 23

    Witam wszystkich.
    Chciałbym uruchomić sobie wyświetlacz ze sterownikiem ST7735S, który działa po SPI.
    Problem polega na tym, że jeszcze nigdy nic "sam" nie robiłem po SPI. Zawsze gotowce.
    Teraz chciałbym sobie napisać najprostszą bibliotekę SPI dla Atmega32 na podstawie BB i GB.
    Nie po to aby wyważać otwarte drzwi, tylko, żeby to dobrze wszystko zrozumieć.
    Mógłbym kupić profesjonalną bibliotekę Mirka, tyle tylko, że nie miał bym pojęcia jak to działa w środku.
    Ja chcę to wszystko sprawdzić osobiście, żeby się tego nauczyć.
    Chciałbym żeby mi ktoś sprawdził, czy funkcję, którą sobie napisałem do inicjalizacji SPI, ma prawo działać.
    Chodzi o to, że w tej funkcji użyłem instrukcji SWITCH, która w zależności od zadanego parametru, ma ustawić szybkość magistrali.
    Wszystko ma działać na sprzętowym SPI. Według noty pdf dla ATmega32, powinno być dobrze ale kiepsko u mnie z angielskim a wujek google pomaga ale tylko troszeczkę.
    Poniżej mój kod do funkcji. Chodzi mi o inicjalizację SPI. Proszę o sprawdzenie.

    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.

    _________________
    http://www.avrboss.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 lis 2023, o 20:35 
    Offline
    Użytkownik

    Dołączył(a): 09 lip 2019
    Posty: 117
    Pomógł: 12

    W teorii wygląda "legitnie", choć użycie switch/case w przypadku kiedy wartość na wejściu w formie definicji może mieć niespecjalny sens (pewnie kompilator i tak to sobie zoptymalizuje, ale to inna sprawa).

    Z tym działaniem to warto sprawdzić, czy inicjalizacja nie powinna zawierać bitów CPOL i/lub CPHA.
    Do końca nie wiem, co może u Ciebie nie działać, ale poniżej podaję swoje dwie funkcje, których użyłem do sterowania układem Max7219 / 72221 - może się przydadzą jako referencja :-)

    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.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 lis 2023, o 10:20 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 mar 2015
    Posty: 323
    Lokalizacja: Rybnik
    Pomógł: 23

    Nie chodzi o to, że coś mi nie działa.
    Po prostu chcę sobie sam napisać tę bibliotekę, żeby lepiej wszystko zrozumieć, dlatego nie używam gotowca.
    Podpieram się BB i poradnikami Mirka.
    Co do instrukcji "switch", to wkleiłem nie ten kod, bo ten właściwy mam na #if-ach.
    Chodziło mi tylko o sprawdzenie, czy taka inicjalizacja jest poprawna a moja funkcja wygląda tak:
    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.

    _________________
    http://www.avrboss.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 lis 2023, o 21:00 
    Offline
    Użytkownik

    Dołączył(a): 09 lip 2019
    Posty: 117
    Pomógł: 12

    mario2015 napisał(a):
    Chodziło mi tylko o sprawdzenie, czy taka inicjalizacja jest poprawna a moja funkcja wygląda tak:
    }[/syntax]

    Z punktu widzenia technicznego - wygląda na to, że jest poprawnie - to znaczy sprawdziłem nawet parę podstawowych scenariuszy czy działa używając układu Max7219 i procka ATmega32. I u mnie działa :-)
    Zrobiłem tylko taką modyfikację - akurat do swojego sprawdzenia:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Warto być może się zastanowić nad jakąś customizacją z tymi parametrami CPOL/CPHA (możliwość ich włączania) , bo po SPI dla każdego układu to może wyglądać inacze.

    PS.
    Wiadomo - o gustach się nie dyskutuje, ale można by też zrobić nieco stylowego liftingu - jeśli będziesz miał ochotę skorzystać to niżej kilka uwag

    1) W definicjach warto użyć przedrostka który będzie mówił czego dotyczy definicja, zmienna itd.
    zamiast CLK_DIV można użyć nazwy typu SPI_CLK_DIV
    W takim przypadku jak będziesz później dołączał jakiś inny kod, to bardziej precyzyjna nazwa sprawi, że są mniejsze szanse na konflikt definicji/zmiennych .

    2) Użycie zwykłego cyferka do definicji generalnie zadziała, ale mogą być kłopoty z czytelnościa - w przypadku wykorzystania takiego jak u Ciebie można się zastaowić nad rozwiązaniem w tym stylu
    Zamiast używać "#define CLK_DIV numerek" można spróbować zrobić kilka definicji zawczasu
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    od razu widać co jest grane i czego dotyczy. Jeśli będzie to po prostu jakaś liczba nie związana do tego z wartością - za parę tygodni być może trzeba będzie przeczytać cały kod, żeby dojść o co chodziło (to znaczy zakładam, że wiele osób ma lepszą pamięć ode mnie, ale akurat u mnie to może nawet nie być parę tygodni ;-) )

    3) Być może warto zastanowić się nad użyciem makr np. makra "Byte Value" _BV i zamiast pisać
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    przynajmniej dla mnie tak jest czytelniek, bo wiemy jaka była intencja

    podobnie staram się robić kiedy mam jakąś operację w kodzie - zamiast używać bezpośrednio wartości - robię sobię definicje
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    widać od razu wtedy po kodzie o co koderowi chodziło.

    No dobra, bo się za bardzo rozpisałem ;-)
    Mam nadzieję, że to co napisałem wyżej bedzie pomocne :-)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 lis 2023, o 22:11 
    Offline
    Moderator
    Avatar użytkownika

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

    mario2015 napisał(a):
    powinno być dobrze ale kiepsko u mnie z angielskim a wujek google pomaga ale tylko troszeczkę

    Ale po co ci wujek google ? tzn wiadomo też się przydaje no ale przecież TYLE RAZY wszędzie przypominam o byle translatorach internetowych, i aż wstyd w dzisiejszych czasach z nich nie korzystać tym bardziej, jeśli nie zna się do końca angielskiego, eeeeeh ale proszę jeszcze raz, dwie stronki. Pierwsza to PODSTAWA PODSTAW

    https://translate.google.pl/

    druga o wiele lepsza:

    https://www.deepl.com/translator

    więc na przyszłość - proszę nie pisz że nie masz jak dowiedzieć się o co chodzi w PDF po angielsku bo można sobie całą stronę skopiować z PDF i wrzucić do translatora. Lepszy techniczny jest ten drugi

    _________________
    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: 4 lis 2023, o 11:15 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 mar 2015
    Posty: 323
    Lokalizacja: Rybnik
    Pomógł: 23

    Dzięki moscow. Z niektórych porad na pewno skorzystam, ponieważ słyszałem o nich ale normalnie w świecie o nich zapomniałem.
    Nie skorzystam na pewno z pkt.3 , ponieważ do mnie bardziej przemawia taki zapis:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Tu od razu wiem, że w rejestrze SPSR ustawiam jedynkę w bicie SPI2X

    Mirku, tobie też dziękuję. Wujek google miałem właśnie na myśli ten tlanslator:
    https://translate.google.pl/
    i nie jest on zbyt precyzyjny ale jest pomocny.
    Na pewno sprawdzę ten drugi, który podałeś i chyba będę z niego korzystał.
    Jeszcze raz dzięki i pozdrawiam.

    _________________
    http://www.avrboss.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2023, o 14:45 
    Offline
    Moderator
    Avatar użytkownika

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

    moscow napisał(a):
    3) Być może warto zastanowić się nad użyciem makr np. makra "Byte Value" _BV i zamiast pisać

    O nie! że też ja tego nie zauważyłem :( .... BARDZO ale to BARDZO proszę nie polecać na tym forum tych MEGA MEGA KOCICH makr, toż ja walczę z nimi od Bluebooka a KAŻDY kto się z BB wychował na przesunięciach sam wie dlaczego tak to zwalczam - a tu proszę kolega moscow niefrasobliwie poleca ;) ... Więc moja gorąca prośba - proszę tego więcej nie robić tu na forum ok?

    makra _BV() są kocie, mega nieczytelne, i zwykle oznaczają że ktoś kto się nimi posługuje ma troszkę problemy ze zrozumieniem przesunięć, no nie każdy wiadomo ale tak zwykle jest i tu nawet nie ma co dyskutować .

    A cieszę się, że koledze autorowi już weszły w krew przesunięcia i sam z obrzydzeniem jak widzę patrzy na kocie BV()

    _________________
    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: 4 lis 2023, o 18:35 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 mar 2015
    Posty: 323
    Lokalizacja: Rybnik
    Pomógł: 23

    Dokładnie Mirku. Tak jak piszesz, że to kocie BV() ja też ich nie nawidzę.

    _________________
    http://www.avrboss.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2023, o 20:03 
    Offline
    Użytkownik

    Dołączył(a): 09 lip 2019
    Posty: 117
    Pomógł: 12

    mirekk36 napisał(a):
    moscow napisał(a):
    3) Być może warto zastanowić się nad użyciem makr np. makra "Byte Value" _BV i zamiast pisać

    [...] toż ja walczę z nimi od Bluebooka a KAŻDY kto się z BB wychował na przesunięciach sam wie dlaczego tak to zwalczam - a tu proszę kolega moscow niefrasobliwie poleca ;) ...

    Być może dobrą pointą będzie cytat z Blue Booka - str. 365 liniki 12-13 od góry
    "Ty możesz korzystać z zapisu, który bardziej przypadnie ci do gustu"
    ;-)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2023, o 20:49 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 mar 2015
    Posty: 323
    Lokalizacja: Rybnik
    Pomógł: 23

    Cytuj:
    "Ty możesz korzystać z zapisu, który bardziej przypadnie ci do gustu"

    I ja to rozumiem i na pewno Mirek.
    Przyjrzyj się jednak, który kod jest wtedy czytelniejszy i nie chodzi o przyzwyczajenia.
    Zobacz listingi współczesnych programistów i wskaż firmy, które piszą kod w "starym stylu", który i tak ciężko się czyta.

    _________________
    http://www.avrboss.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2023, o 22:15 
    Offline
    Moderator
    Avatar użytkownika

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

    moscow napisał(a):
    Być może dobrą pointą będzie cytat z Blue Booka - str. 365 liniki 12-13 od góry
    "Ty możesz korzystać z zapisu, który bardziej przypadnie ci do gustu"

    Dlatego ja NIKOGO nie zamierzam przekonywać na siłę co chyba widzisz ... mam nadzieję, ale proszę uszanuj mój tok dydaktyki na tym forum nie polecaj tego do czego ja świadomie zniechęcam bo to zaciemnia obraz ok? Tylko o to chodzi a nie żebym ja tobie wmawiał że źle robisz jak tego używasz czy coś ok ? ;) tym bardziej że chyba się znamy mniej więcej i rozumiesz moje podejście do nauczania języka C embedded

    ------------------------ [ Dodano po: kilkunastu sekundach ]

    mario2015 napisał(a):
    Zobacz listingi współczesnych programistów i wskaż firmy, które piszą kod w "starym stylu", który i tak ciężko się czyta.

    BARDZO DOBRZE powiedziane ! ;)

    _________________
    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: 11 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 21 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