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



Teraz jest 23 sty 2026, o 19:41


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 13 gru 2016, o 15:36 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

Hej Głowię się już jakiś czas, szukałem w internecie, słuchałem tutoriali Mirka ale coś mi zasłania oczy i umysł. Pomóżcie jeśli łaska:


Mam funkcję odczytującą z tabeli dane i chcę je wysłać na wyświetlacz
Robię to po prostu:

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


Tutaj wynik muszę mieć zanegowany z uwagi na sterowanie. Wszystko działa!

Ale!!

LED_DATA u mnie przypisany jest do portu D! Całego portu - definicją #define LED_DATA PORTB

A na dwóch środkowych bitach tego portu mam podłączone inne rzeczy - na przykład diody LED.

Wydawało mi się że nie będzie problemu jeśli zastosuję maskowanie bajtu i zmodyfikuję linijkę w ten sposób:

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


No i działa ale dalej zeruje mi dwa środkowe bity portu

Podejrzewam, że robi to funkcja pgm_read_byte, i choć w tablicy mam tylko trzy pozycje

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


to dopisuje mi zerami resztę bajtu

W jaki sposób zrealizować maskowanie dwóch bitów środkowych portu tak, aby linijka
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

mi ich nie zmieniała?



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

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

& 0x11100111 ?

...............................................:
tu oczywiście miało być nie "0x" tylko "0b". :roll:



Ostatnio edytowano 13 gru 2016, o 16:53 przez Daro69, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2016, o 15:53 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

Ale jak to zastosować? W linijce robię już przepisanie do portu D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2016, o 16:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

Maskowanie z oraniem, że się tak wyrażę :) Najpierw pobierasz te dwa bity i zapamiętujesz gdzieś następnie robisz co masz zrobić z LCD i operatorem OR łączysz to co wyszło z zapamiętanymi bitami. Wszystko :)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2016, o 16:06 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

Ech! No właśnie chciałem tego "orania" uniknąć. Myślałem, że są na to jakieś sposoby, żeby przepisać tylko wybrane części bajtu - Jakaś maska.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2016, o 16:09 
Offline
Użytkownik
Avatar użytkownika

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

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: 13 gru 2016, o 16:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

W tym wypadku obawiam się, że prostszego i szybszego rozwiązania nie ma. Stosuję takie zabiegi od lat na portach i jeszcze nic się nie pogryzło.

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

@anshar, a po maskowaniu skąd weźmiesz te dwa bity?

_________________
http://www.sylwekkuna.com



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

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

&(LED_DATA & 0b00011000) ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2016, o 16:29 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

Dzięki anshar Działa! Sam nie wiem dla czego na to nie wpadłem. Prosta logika :) Ech zmęczenie...



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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