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



Teraz jest 8 gru 2024, o 01:44


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: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

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 ]
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: 110
Pomógł: 11

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 ]
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: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

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 ]
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: 110
Pomógł: 11

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: 27315
Lokalizacja: Szczecin
Pomógł: 1041

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: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

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: 27315
Lokalizacja: Szczecin
Pomógł: 1041

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: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

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: 110
Pomógł: 11

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: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

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: 27315
Lokalizacja: Szczecin
Pomógł: 1041

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 1 gość


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