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



Teraz jest 30 mar 2026, o 19:40


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 15 lis 2014, o 18:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 wrz 2012
Posty: 65
Pomógł: 0

Witam,

Po obejrzeniu genialnych poradników Mirka na temat MagicLED postanowiłem pobawić się jedną linijką. Pojawił mi się w głowie pewien pomysł, w którym mógłbym wykorzystać diody WS2812B, jednak pojawiła się pewna przeszkoda... i to tak na początek przygody z linikją :/

Problem jest zapewne prosty ale mimo iż spędziłem nad inwestygacja mnóstwo czasu nie odnalazłem błędu.
Od razu piszę, że dla kodu bez asemblera w stylu poradników dla MagicLED część 4 lub 5 diody świecą poprawnie. Problem się pojawia gdy chcę korzystać ze wstawek asemblerowych.

Problem: ATMega328P (F_CPU = 20MHz) nie wysyła żadnych danych na port określony jako wyjściowy - PB0 (sprawdzane oscyloskopem).

Poniżej jest mój kod, który jest (tak mi się przynajmniej wydaje) identyczny z filmu 06b.

main.c

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


ws281x.h

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


ws281x.c

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


Czy coś jest nie tak w tej wstawce asemblerowej, że na PB0 nie ma żadnych danych?

Dziękuję!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lis 2014, o 18:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 sty 2014
Posty: 448
Lokalizacja: DKL
Pomógł: 53

W, MkAvrCalculator masz narzędzie do generowania tej funkcji wysyłającej dane w ASM, weź pobierz stamtąd kod i sprawdź.

_________________
Migracja z punktu B do punktu C
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lis 2014, o 18:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 wrz 2012
Posty: 65
Pomógł: 0

Dzięki za poradę... wygenerowałem dla ATmega128P 20MHz (nie mam płatnej wersji MKAvrCalculator'a). Wkleiłem dane i nie ma poprawy... może jednak warto pełną wersję użyć.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lis 2014, o 18:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 sty 2014
Posty: 448
Lokalizacja: DKL
Pomógł: 53

Wersja MkAvrCalculatora nie ma znaczenia do tej funkcjonalności, sprawdziłem twój kod i ten z kalkulatora i nie ma żadnych różnic, poza spacjami i tabulatorami.
Problem zatem musi leżeć gdzieś indziej.

_________________
Migracja z punktu B do punktu C
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lis 2014, o 23:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 wrz 2012
Posty: 65
Pomógł: 0

No to teraz zagadka - gdzie? Może coś w Eclipse?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lis 2014, o 00:27 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

jan mazur 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.


Błąd w 3. argumencie, powinna być maska (czyli WS_PIN) a nie nr pinu.


Autor postu otrzymał pochwałę

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lis 2014, o 08:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 wrz 2012
Posty: 65
Pomógł: 0

No i działa! :) Właśnie takiego oka mi było potrzeba.

Dziękuję Bardzo!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2014, o 14:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 wrz 2012
Posty: 65
Pomógł: 0

Postanowiłem nie zakładać wątku nowego, bo to o co pytam jest z założenia proste i powinno działać ale...

Pobieram z czujnika koloru dane i wrzucam je do trzech zmiennych (niby czterech ale 'clear color' jest nieważny). Później zwracam je w postaci uint32_t jednak z tego co widzę nie "wychodzi" mi kolor czerwony. Zawsze ma wartość 0 i co drugą kompilację Eclipse wyrzuca błąd, że niby przesunięcie jest większe niż typ zwracanej zmiennej left shift count >= width of type.

Kod dla tej funkcji 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.


W konsoli widzę poprawne dane aż do momentu sekcji Common:, oraz także po wywołaniu widać, że Red: jest O

R: 8b
G: 1c
B: 1d
Common: 1c1d
Red: 0
Green: 1c
Blue: 1d


Jak to jest z tym przesunięciem? Wydaje się, że dobrze to jest zrobione, a coś nie gra...

Dziękuję!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2014, o 15:00 
Offline
Moderator
Avatar użytkownika

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

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


widzisz jakbyś poczytał to:

http://atnel.pl/domyslna-promocja-do-typu-int.html

to wiedziałbyś dlaczego masz z tym problem .... i dlaczego trzeba to zrobić tak:

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


przy czym poczytanie o domyślnej promocji do int uratuje ci skórę i włosy na głowie w milionach innych sytuacji podczas programowania w C, więc "do lektury" ;)

jan mazur napisał(a):
i co drugą kompilację Eclipse wyrzuca błąd,

No tu znowu opowiadasz rzeczy które mówią że nie wiesz jak działa kompilacja w C a warto jednak się dowiedzieć bo bez tego znowu - będziesz sobie często rwał włosy z głowy

panie kochany jak masz jakiegoś warninga po kompilacji (czyli po BUILD) ... to jest RZECZĄ NORMALNĄ jak jedzenie chleba ze smalcem, że gdy wykonasz kolejny BUILD to warning czy warningi znikną .... co więcej każda następna kompilacja (BUILD) bez zmiany w kodzie będzie też już bez warningów ze strony kompilatora ale czy to znaczy że ich nie ma ???? NIE nieeee ;) są panie kolego tylko kompilator reaguje tak:

1. po zmianie w kodzie i PIERSZEJ kompilacji kompilator pokaże wszystkie warningi
2. po drugiej i KAŻDEJ następnej kompilacji jeśli nic nie zmienisz w kodzie - kompilator nie pokaże (schowa) warningi bo uzna że nie chcesz ich widzieć bo wiesz co robisz i wg ciebie powinno być dobrze

rozumiesz ?

3. jeśli jednak dokonasz zmiany w kodzie - to kolejna kompilacja będzie uznana znowu za tę pierwszą i sytuacja powtórzy się znowu jak z punktów 1 i 2


4. Jeśli nie chcesz zmieniać kodu a PONOWNIE zobaczyć warningi to wykonaj Pan czyszczenie projektu czyli CLEAN + BUILD i wtedy NAGLE cudownie znowu zobaczysz warningi

wbrew pozorom to bardzo dobrze przemyślana strategia i jeśli się wie jak działa to później bardzo się to przydaje

za to już więcej człowiek nie pisze albo nie opowiada że co drugi raz są warningi albo że czasem są a czasem nie ma ;)


Autor postu otrzymał pochwałę

_________________
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: 19 lis 2014, o 15:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 wrz 2012
Posty: 65
Pomógł: 0

Super! Coś mi świtało z tym rzutowaniem ale próbowałem w inny sposób :) ...a co do Twego artykułu to czytałem jakiś rok temu, no ale widać wypadło z głowy :( Zaraz siadam i czytam od nowa.

Dziękuję Bardzo Mirek!

P.S. Dzięki za informację o Eclipse... cenna!



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

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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO