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



Teraz jest 3 sty 2025, o 23:02


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 309 ]  Przejdź na stronę Poprzednia strona  1 ... 5, 6, 7, 8, 9, 10, 11  Następna strona
Autor Wiadomość
PostNapisane: 25 maja 2012, o 05:19 
Offline
Użytkownik

Dołączył(a): 16 lut 2012
Posty: 219
Pomógł: 1

A czy takiego "bugga" mam tylko w tym miejscu, czy jeszcze gdzieś, coś przeoczyłem? Bo nie wiem, może robie coś dobrze, a jeszcze o czymś nie wiem co mi psuje robote.Zagdadnienia ze stron ci mi podałeś ja je rozumiem i je przyswoiłem. Tylko po prostu mam jeszcze brak w prawy. np. nie byłem pewien czy w jednym miejscu jest znak mnożenia czy wskaźnika? Jak to wogóle interpretować, bo nie wiem jak to rozgryźć?:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Poprostu nadal nie czuje, w którym miejscu jest błąd? Zmieniałem wewnątrz tej funkcji i nic.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 maja 2012, o 06:50 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

Klucha napisał(a):
A czy takiego "bugga" mam tylko w tym miejscu, czy jeszcze gdzieś, coś przeoczyłem? Bo nie wiem, może robie coś dobrze, a jeszcze o czymś nie wiem co mi psuje robote.Zagdadnienia ze stron ci mi podałeś ja je rozumiem i je przyswoiłem. Tylko po prostu mam jeszcze brak w prawy. np. nie byłem pewien czy w jednym miejscu jest znak mnożenia czy wskaźnika? Jak to wogóle interpretować, bo nie wiem jak to rozgryźć?:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Poprostu nadal nie czuje, w którym miejscu jest błąd? Zmieniałem wewnątrz tej funkcji i nic.

Ale tu nie ma żadnego "buga". Ten fragment napisał SunRiver i napisał go dobrze. Jak dla mnie rewelacja.
Ja też nie mam wprawy i nie wiedziałem na pierwszy rzut oka jak to też tam się odbywa. Dlatego wziąłem kartkę, ołówek i po kolei wpisywałem wartości do poszczególnych komórek, bajtów i bitów. Tobie radzę zrobić to samo.
Ale żeby to zrobić trzeba nie tylko przeczytać strony które Ci podałem, ale je zrozumieć.
A podpowiedź? No dobra:
1. SunRiver ślicznie powstawiał Ci nawiasy, żebyś wiedział gdzie jest mnożenie a gdzie wskaźniki
2. Przeczytaj jeszcze raz strony które Ci wskazałem. Ale masz je rozgryźć, przestudiować, przeanalizować. Razem z kropkami, przecinkami, średnikami, myślnikami i wszystkim co się tam znajduje ;)

Zaś co do błędu - to nie ma go w programie. Tkwi on w Twoim sposobie myślenia. Po prostu nie wiesz co chcesz zrobić. Nie chcesz przyjąć do wiadomości tego co już wcześniej Ci napisałem. Zastanów się jak FIZYCZNIE działa ten sprzęt. Jak działają rejestry 595, jakich danych potrzebują, jak te dane przemieszczają się z rejestru do rejestru, a czym "karmi" je ten program.
A tak swoją drogą, wiesz co to jest algorytm? Czy potrafisz rozpisać algorytm zasilania 595 danymi?
Jeżeli tak to pokaż go tu proszę.

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 maja 2012, o 13:42 
Offline
Użytkownik

Dołączył(a): 16 lut 2012
Posty: 219
Pomógł: 1

Nie nie nie, źle się wyraziłem. Ten kod jest jak najbardziej poprawny i szacun dla twórcy. Zgodze się, błędnie myślę. Mając na myśli "bugga" miałem na myśli problem kodu w mojej konfiguracji, czyli pare wyświetlaczy.I chodziło mi czy ten mój błąd jest jeszcze w innych miejscach czy tylko w tej funkcji?

Napiszę teraz jak ja to rozumiem i napisz czy dobrze myśle:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Najpierw w pętli pobierana jest kolumna (wskaźnik aktualnej komórki znaku) na którą wskazuje zmienna pętli i zapisuje do zmiennej. Potem po każdym pobraniu jednej kolumny wyłuskiwana jest 1 lub 0 i wskazuje na element tablicy (wykona się to 8 razy). I potem ponownie ruszy od nowa pętla j, przy czym wtedy pętla j=1.
Czyli wydaje mi się, że pętla "i" powinna wykonywać się 16 razy (16 razy pownniśmy zapisywać kolumny). I potem fizycznie przekazać na 595. Co mówisz?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2012, o 06:22 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

Klucha napisał(a):
Najpierw w pętli pobierana jest kolumna (wskaźnik aktualnej komórki znaku) na którą wskazuje zmienna pętli i zapisuje do zmiennej. Potem po każdym pobraniu jednej kolumny wyłuskiwana jest 1 lub 0 i wskazuje na element tablicy (wykona się to 8 razy). I potem ponownie ruszy od nowa pętla j, przy czym wtedy pętla j=1.
Czyli wydaje mi się, że pętla "i" powinna wykonywać się 16 razy (16 razy pownniśmy zapisywać kolumny). I potem fizycznie przekazać na 595. Co mówisz?

Gdybyś zrobił to co Ci radziłem to byś wiedział.
Następny fragment do doczytania z książki to działanie pętli. W tym co ważne pętli zagnieżdżonych czyli takich kiedy jedna pętla wykonuje wewnątrz drugiej. Chyba, że to tylko literówka, ale w takim razie na temat Twojej staranności już się wypowiadałem wcześniej :(

Dlaczego i zmienia się od 0 do 4 czyli 5 razy a j od 0 do 7 czyli 8 razy?

Może lepiej zamiast zgadywać zacząć myśleć?

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2012, o 18:19 
Offline
Użytkownik

Dołączył(a): 16 lut 2012
Posty: 219
Pomógł: 1

Dobra inaczej. Powiedzmy, że w pętle główną ustawimy 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.


Chcę, aby jedna kropka przesuwała się w lewo i z dołu do góry (na dwóch wyświetlaczach):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pętla odpowiedzialna za właśnie przesuwanie w lewo w jednym wierszu jest ustwiona na 16. I dalej ten sam problem, na lewym nie ma nic. To może wprzerwaniu coś nie tak?, zajrzyjmy:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

I tutaj wydaje mi się, że if(++row_track ==8) row_track = 0; powinno być ustawione na 16, gdyż później przekazywana jest tablica do funkcji wskazująca maksymalnie na 8 element, a powinna na 16?nie?:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Ale z drugiej strony zmienna row_track steruje odpowiednio wierszami i liczba 16 nie może być, bo wierszy mamy 8 i nie może być np:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Co kolega na to?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2012, o 19:40 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

cztery posty wyżej napisałem Ci co ja na to :(
Dla przypomnienia:
Cytuj:
Nie chcesz przyjąć do wiadomości tego co już wcześniej Ci napisałem. Zastanów się jak FIZYCZNIE działa ten sprzęt. Jak działają rejestry 595, jakich danych potrzebują, jak te dane przemieszczają się z rejestru do rejestru, a czym "karmi" je ten program.
A tak swoją drogą, wiesz co to jest algorytm? Czy potrafisz rozpisać algorytm zasilania 595 danymi?
Jeżeli tak to pokaż go tu proszę.


I jeszcze raz:
Cytuj:
Może lepiej zamiast zgadywać zacząć myśleć?


Bez TWOJEGO zaangażowania w myślenie nigdzie nie dojdziemy.

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2012, o 20:27 
Offline
Użytkownik

Dołączył(a): 16 lut 2012
Posty: 219
Pomógł: 1

Fizycznie najpierw zostają wprowadzane dane do rejestru, sterowane sygnałem zegara oraz sygnałem, który przenosi do zatrzasków(zbocze narastające). Pętla wykonuje to 16 razy. Za każdym razem obiegu pętli dane zostają przesuwane w lewo. Do tej funkcji (pętli) zostają przekazane kolejne dane. Za każdym razem 8 bitów, a nie 16. Zajrzałem do do noty pdf i zobaczyłem, że sygnał na wyjściu Q7' jest wcześniej niż na Q7. Jest to spowodowane tym przerzutnikiem typu D. Rejestr karmiony jest danymi, które najpierw zostały pobrane z tablicy, a potem wyłuskiwany jest przez przesuwającą się pętle i (ona wskazuje konkretny bit). Wydaje mi się, że rozumiem jak rejestr przesuwa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2012, o 20:43 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

Masz 2 rejestry prawda?
do pierwszego wrzucasz 8 bitów, tak?
z każdym bitem podajesz sygnał zegarowy, czyli 8 cykli
następnie 8 "pustych" cykli, tak? Czyli 8 taktów zegara bez podania żadnych danych na wejście danych
Razem to daje 16 cykli zegara, tak?

Co się znajduje w pierwszym, a co w drugim 595?

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2012, o 20:50 
Offline
Użytkownik

Dołączył(a): 16 lut 2012
Posty: 219
Pomógł: 1

Nie rozumiem tylko, dlaczego te "puste" dane są w pierwszym rejestrze do któego wprowadzaliśmy, a nie w drugim? Te właściwe 8 bitów są w takim razie w drugim rejestrze, ale to akurat wiem, że wproawdzam tylko 8 bitów za każdym razem z sygnałem zegarowym w pętli, któa się wykonuje 16, zamiast wprowadzać 16 bitów. Dlatego coś mi nie pasuje w tym miejscu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


row_track wskazuje na element tablicy przekazany do funkcji. I właśnie on maksymalnie wynosi 8. Na dalsze elementy niż 8 już nie wskaże. Dobrze rozumiem?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2012, o 20:54 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

Klucha napisał(a):
Nie rozumiem tylko, dlaczego te "puste" dane są w pierwszym rejestrze do któego wprowadzaliśmy, a nie w drugim? Te właściwe 8 bitów są w takim razie w drugim rejestrze, ale to akurat wiem, że wproawdzam tylko 8 bitów za każdym razem z sygnałem zegarowym w pętli, któa się wykonuje 16, zamiast wprowadzać 16 bitów. Dlatego coś mi nie pasuje w tym miejscu:

row_track wskazuje na element tablicy przekazany do funkcji. I właśnie on maksymalnie wynosi 8. Na dalsze elementy niż 8 już nie wskaże. Dobrze rozumiem?

Bo nie rozumiesz jak działają rejestry 595, gdybyś to zrozumiał to byś wiedział!
Pomyśl i przemyśl jeszcze raz co się dzieje z danymi w rejestrach.
To jest klucz do tego programu i do tego projektu

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2012, o 20:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8589
Pomógł: 337

Ktoś w jednym z tematów gdzie się znęcaliśmy nad 595 z okazji wyświetlacza zapodał taki rysunek:

Obrazek

ładnie obrazuje działanie 595 :) trzeba go trochę dłużej oglądać :)

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2012, o 21:01 
Offline
Użytkownik

Dołączył(a): 16 lut 2012
Posty: 219
Pomógł: 1

To jeśli wiesz,od którego miejsca nie rozumiem, to powiedz gdzie robię błąd i mi wytłumacz. Rozumiem jak przesuwają, robi to program, wprowadza dane przesuwane w lewo szeregowo. Przesuwa je na dalsze wyjścia, aż w końcu dojdzie do Q7', który wyrzuca je do wejścia następnego. Wiem, że wprowadzam 8 bitó danych i na którymś nie powinno być nic.
-Wytłumacz mi proszę co tam się dzieje, bo widzisz sam nie mogę tego wyjaśnić?
-Jak to się robi, że dane przesuwamy w lewo wpuszczając, je do lewego 595, a pokazuje się na prawym? Ja bym myślał, że wprowadzamy pierwsze 8 bitów do lewego, a na prawym nic nie powinno być.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2012, o 21:08 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

oj Klucha, Klucha... :(
te dane się nie zatrzymują po wysłaniu 8 impulsów zegarowych. One przesuwają się dalej z każdym impulsem
Gdyby tak było, że się zatrzymują jaki byłby sens łączenia ich w kaskadę?
A po to właśnie jest wyjście Q7'
A przecież wszystkie wejścia zegarowe masz połączone razem

To co z tego wynika?

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 maja 2012, o 12:47 
Offline
Użytkownik

Dołączył(a): 16 lut 2012
Posty: 219
Pomógł: 1

Ja wiem, że po każdym bicie zatwierdzany jest zegar do zatrzasku, a nie po bajcie.Wiem, że dane się nie zatrzymują, nie wiem skąd to wziąłeś, ale mniejsze z tym. Zegary mam razem, więc jeśli dane dostaną się do drugiego 595 to zostaną przesunięte w takt zegara shift clock, a wprowadzane są do zatrzasku zboczem narastajacym latch clock (w każdym zapisie bitu). Dane wyrzucane są wyjście Q7' a wprowadzane do wejścia A drugiego. Problem jest w tym, że ja przesuwam najpierw dane 8 bitów, a potem 8 bitów pustych (bądź odwrotnie właśnie tu nie jestem pewien). Nie wiem, w których miejscu kodu jest ten problem. Wydaje mi się, że coś w przerwaniu musi być nie tak, bo później jest tylko funkcja, któa fizycznie wpisuje dane do 595, wykonuje się to 16 razy i za każdym razem zatwierdza latch clock:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Ostatnio edytowano 29 maja 2012, o 12:51 przez Klucha, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 maja 2012, o 12:50 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

Klucha napisał(a):
Ja wiem, że po każdym bicie zatwierdzany jest zegar do zatrzasku, a nie po bajcie.Wiem, że dane się nie zatrzymują, nie wiem skąd to wziąłeś, ale mniejsze z tym. Zegary mam razem, więc jeśli dane dostaną się do drugiego 595 to zostaną przesunięte w takt zegara shift clock, a wprowadzane są do zatrzasku zboczem narastajacym latch clock (w każdym zapisie bitu). Dane wyrzucane są wyjście Q7' a wprowadzane do wejścia A drugiego. Problem jest w tym, że ja przesuwam najpierw dane 8 bitów, a potem 8 bitów pustych (bądź odwrotnie właśnie tu nie jestem pewien).

Skoro wszystko wiesz to w czym problem?

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 maja 2012, o 12:57 
Offline
Użytkownik

Dołączył(a): 16 lut 2012
Posty: 219
Pomógł: 1

Problem w tym, że dla funkcji (each_led)i nie tylko, nie wiem w którym miejscu wprowadzam te 8 bitów do bufora (jeszcze nie do zatrzasku 595), zamist 16 bitów tak aby mieć dane przesuwane na dwóch wyświetlaczach, a nie na jednym. Bo dlatego mam 8 bitów pustych i w konsekwencji pusty lewy wyświetlacz..



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 maja 2012, o 14:46 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

Nie wyciągasz wniosków z własnych doświadczeń. :(
Nie czytasz i nie starasz się zrozumieć tego co się do Ciebie pisze. :(
Nie przeczytałeś a w każdym razie nie przyswoiłeś sobie lektury, którą Ci poleciłem :(
Nie przemawiają do Ciebie obrazki (animacja), którą parę postów wyżej wkleił SunRiver. Albo jej wcale nie obejrzałeś. :(

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 cze 2012, o 21:22 
Offline
Nowy

Dołączył(a): 13 cze 2012
Posty: 10
Pomógł: 0

Witam, mnie również zainteresował temat obsługi matrycy 8x8. Wczoraj złożyłem takie dwie matryce i udało mi się zmodyfikować kod by poprawnie wyświetlane były napisy na dwóch matrycach. Problem w moim przypadku pojawił się gdy dołożyłem trzecią. Problem jest podobny do zgłaszanego przez kolegę kluchy mianowicie na jednej z trzech matryc nic się nie pojawia chociaż tablice deklaruje jako u32 i przesuwam w funkcji Shift_Int o 24 bity(z tego wynika ze 8 bitów nie jest ustawianych)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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


Proszę o podpowiedź dlaczego przy 16 bitach wszystko działa poprawnie a przy większej ilości kolumn jest problem(dlaczego kolejne bity nie są ustawiane) .
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 cze 2012, o 21:38 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

no ale to byś musiał jeszcze sprawdzić:
1. jak wypełniasz row_buffer[]
2. jakie dane wysyłasz jako shiftData do funkcji Shift_Int

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 cze 2012, o 21:58 
Offline
Nowy

Dołączył(a): 13 cze 2012
Posty: 10
Pomógł: 0

No właśnie wydaje mi się, że wypełnienie row_buffer[] nie jest poprawnie. Problem w tym, że za bardzo nie wiem jak to poprawić.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


a jeśli chodzi o shiftData to tutaj nic się nie zmienia. Zmieniłem jedynie w przerwaniu miejsce wyłączania i załączania Output Enable rejestru 74hc595.

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: 14 cze 2012, o 20:38 
Offline
Nowy

Dołączył(a): 13 cze 2012
Posty: 10
Pomógł: 0

Ma ktoś jakiś pomysł co może być powodem mojego problemu ?

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2012, o 20:42 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

A sprawdzałeś statycznie bez przesuwania?

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2012, o 20:48 
Offline
Nowy

Dołączył(a): 13 cze 2012
Posty: 10
Pomógł: 0

przesuwania

-- dodano 14 cze 2012, o 22:02 --

zamieszczę cały kod - może łatwiej będzie sprawdzić

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


Za wszelkie uwagi dziekuje

-- dodano 14 cze 2012, o 22:23 --

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


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


nic sie nie wyświetla, (jak przesuwam o 19 bitów to widzę, że matryca 3 obcina wyświetlane znaki)

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2012, o 21:31 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

Dlatego proponuję żebyś do row_buffer[] wpisał na stałe wartości np.
row_buffer[0]=0xA5A5A5
row_buffer[1]=0x5A5A5A
row_buffer[2]=0xA5A5A5
itd...
Zobacz co Ci się wyświetli na matrycach i daj znać

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2012, o 21:52 
Offline
Nowy

Dołączył(a): 13 cze 2012
Posty: 10
Pomógł: 0

Przy statycznym wyświetlaniu nadal ostatnia matryca nie świeci jedyny błąd na dwóch pozostałych(świecących) matrycach jest to, że ostatnia kolumna jest zaświecona - 16 bit (powinna być wygaszona przy wpisie 5a5a5a)

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 cze 2012, o 05:43 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

Elhion napisał(a):
Przy statycznym wyświetlaniu nadal ostatnia matryca nie świeci jedyny błąd na dwóch pozostałych(świecących) matrycach jest to, że ostatnia kolumna jest zaświecona - 16 bit (powinna być wygaszona przy wpisie 5a5a5a)

Pozdrawiam

Jaki z tego morał? Ano taki, że masz gdzieś błąd sprzętowy a nie programowy ;)

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 cze 2012, o 06:34 
Offline
Nowy

Dołączył(a): 13 cze 2012
Posty: 10
Pomógł: 0

No nie bardzo z tego powodu, że jeśli ustawie przesunięcie 16 bitów w swith_int i u16 row_bufer[0,0,0...] to wszystko jest ok tz. świecą 2 matryce z 3 (lewa i środkowa) a jeśli przesunę o 24 bity i ustawie u32 row_bufer[0,0...] to też świecą tylko dwie matryce z tym, że środkowa i prawa (bit 16 świeci niepoprawnie). Z tego wynika, że sprzętowo podpięte jest wszystko ok. Problem jest ze funkcja shift_int{} nie odczytuje bitów od 17 do 24 z long int u32 row_buffer[] (tak mi sie wydaje).
Wydaje mi się ze problem jest tutaj

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

Czy shiftData na pewno jest u32, czy nie trzeba jakoś to rzutować ....


Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 cze 2012, o 12:08 
Offline
Nowy

Dołączył(a): 13 cze 2012
Posty: 10
Pomógł: 0

Problem rozwiązany. Trzeba było rzutować przesuwaną wartość na liczbę 32bitową. Kompilator domyślnie ustawia wpisaną w kodzie liczbę jako int. Z tego powodu 16bit w kodzie powyżej miałem niepoprawnie wyświetlany.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 cze 2012, o 13:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8589
Pomógł: 337

No wreszcie ktoś rozgryzł moje bazgroły :) Brawo !!

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 cze 2012, o 14:13 
Offline
Nowy

Dołączył(a): 13 cze 2012
Posty: 10
Pomógł: 0

Wielkie dzięki za bardzo dobrze napisany program ;)



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: 309 ]  Przejdź na stronę Poprzednia strona  1 ... 5, 6, 7, 8, 9, 10, 11  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] 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