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



Teraz jest 25 mar 2026, o 07:14


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
Autor Wiadomość
PostNapisane: 30 gru 2016, o 18:05 
Offline
Nowy

Dołączył(a): 11 mar 2014
Posty: 12
Lokalizacja: Opole
Pomógł: 0

Witam

Mam problem z zrozumieniem zapisu z programu 03_Multi_LED

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

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

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


W książce na stronie 212 do maskowani wyświetlaczy mamy:
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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


I to rozumiem ale jak to jest z tym MASKA_ANODA

Problem pojawił się przy próbie zmiany z młodszych bitów na starsze portu.

Z góry dziękuję za odpowiedź.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2016, o 18:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

a to trzeba prześledzić co się dzieje po kolei.
załóżmy że ANODY_PORT miał wartość 0b01010111,
A MASKA_ANODY to 0b00001111
jeżeli zapiszemy
ANODY_PORT = (ANODY_PORT | MASKA_ANODY);
to
ANODY_PORT = (0b01010111 | 0b00001111);
co da jedynki we wszystkich młodszych 4 bitach, (stan wysoki na PC0, PC1, PC2, PC3)
a w starszych 4 pozostanie bez zmian.(bo te może są wykorzystane do innych celów. )
i zmieni się na : 0b01011111. :)

------------------------ [ Dodano po: 3 minutach ]

po zapoznaniu się z operatorami bitowymi,
trzeba po prostu krok po kroku rozpisać sobie co się dzieje z bitami.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2016, o 20:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
zido napisał(a):
...Problem pojawił się przy próbie zmiany z młodszych bitów na starsze portu.

Może rozwiń to - chcesz podłączyć ANODY do "bitowo wyższych" PIN'ów ( np.: PB2, PB3, ...)?

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2016, o 21:03 
Offline
Nowy

Dołączył(a): 11 mar 2014
Posty: 12
Lokalizacja: Opole
Pomógł: 0

Dokładnie. Chce podłączyć anody do portów P4, P6 ,P6, P7
I za bardzo nie kumam co z tą MASKA_ANODA

------------------------ [ Dodano po: 12 minutach ]

Czy jeśli to dobrze rozumiem to zmieniam.

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


oraz

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2016, o 21:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

Tajemnica w rozwikłaniu problemu tkwi w operatorach
i rozpisaniu matematycznie na kartce .
I nastanie światłość. :) powaga ;)
Mogę później to rozpisać, bo teraz znowu piszę z telefonu. :(.

------------------------ [ Dodano po: 1 minucie ]

Rozpisz to sobie w formie bitowej.

------------------------ [ Dodano po: 5 minutach ]

Widzę że masz BB
Przeanalizuj operatory & | ~
Reszta jak w matmie, najpierw nawiasy. ()



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2016, o 21:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
zido napisał(a):
...I za bardzo nie kumam co z tą MASKA_ANODA

Więc proponuję zapoznać się z krwawym poradnikiem:
http://mirekk36.blogspot.com/2014/03/maskowanie-bajtow-z-przymruzeniem-oka.html
Tak jak pisze kol.Daro69 cała tajemnica tkwi w operatorach, a ja dodam że "MASKA" jest to wskazanie na których PIN'ach (w Twoim przypadku, bo nie tylko do tego to służy ) podłączone są ANODY wyśw.
Możemy (chodzi tylko o czytelność bo kompilatorowi to za przeproszeniem wisi ;) ) zapisać w postaci #define - jak w przykładzie który prezentujesz, może być HEX lecz mniej czytelny 0x0F lub binarnie wtedy od razu widać: 0b00001111.
0b00001111 - ANODY od PIN0 do 3; 0b00111100 - ANODY od PIN2 do 5.
No ale obejrzyj poradnik to lepiej zrozumiesz.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2016, o 22:37 
Offline
Użytkownik

Dołączył(a): 07 kwi 2013
Posty: 33
Pomógł: 4

Cześć
Zajrzyj tuhttp://mikropasje.blogspot.com/2016/12/multipleksowanie-i-przerwania-czesc-3.html. Myślę że prościej się nie da :) :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2016, o 22:39 
Offline
Nowy

Dołączył(a): 11 mar 2014
Posty: 12
Lokalizacja: Opole
Pomógł: 0

Dla ANODY_PORT przyjmuje 0b11100110
Dla MASKA_ANODY mam 0b11110000

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


otrzymuję: 0b11110110 (wszystkie wyświetlacze zgaszone)

Podstawiając do:

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


mam ANODY_PORT 0b11110110
& ~MASKA ANODY 0b00001111
= 0b00000110*

~licznik 0b11101111 (Licznik wartości 16,32,64,128)
& MASKA_ANODY 0b11110000
= 0b11100000
| 0b00000110*
ANODY_PORT= 0b11100110


Młodsze bity zostają takie same, starsze zmieniają się o 1. Wyświetlacze dalej ciemnne

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


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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2016, o 23:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

linijka 15 ??
zido 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.
       

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

:D

------------------------ [ Dodano po: 3 minutach ]

nowe_anody = (anody_młodsze_bity_pozostawione,) | (odwrócony licznik_starsze bity) ;


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2016, o 23:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

A kto mi powie czemu w linii nr.17 sprawdzam czy lincznik jest równy 0? ;)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2016, o 23:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

anshar napisał(a):
A kto mi powie czemu w linii nr.17 sprawdzam czy lincznik jest równy 0?

hiehie.. :)
no tak.
licznik nie będzie większy od 128, bo przeskoczy na 0. hiehie.. :)
Racja anshar. :)
albo - if(licznik <16) licznik=16; :)

------------------------ [ Dodano po: 3 minutach ]

ps.
@anshar . Fajny masz słoiczek z pigułkami. :) :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 gru 2016, o 00:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Daro69 napisał(a):
hiehie.. :)
no tak.
licznik nie będzie większy od 128, bo przeskoczy na 0. hiehie.. :)

hiehie
Dokładnie tak. ;)

Można przecież też w drugą stronę zacząć od licznik=128 i przesuwać w prawo, a gdy licznik<16 to łobuza znowu ustawiamy na 128.
Daro69 napisał(a):
Fajny masz słoiczek z pigułkami.

No nie wiem jak to się stało, :o ale jakoś tak mi się zrobiło ostatnio. :shock:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 gru 2016, o 00:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

hihi..
Ewentualnie pozostawić licznik tak jak był pierwotnie ,
i przed operacją maskowania przesunąć bity o 4 w lewo :)
By znalazły się w miejscu starszych. ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 gru 2016, o 16:31 
Offline
Nowy

Dołączył(a): 11 mar 2014
Posty: 12
Lokalizacja: Opole
Pomógł: 0

Dziękuję wam wszystkim

Działa prawidłowo.

Życzę szczęśliwego Nowego Roku 2017



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

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