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



Teraz jest 28 mar 2024, o 11:00


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 23 ] 
Autor Wiadomość
PostNapisane: 24 mar 2019, o 16:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2013
Posty: 485
Lokalizacja: Siedlce
Pomógł: 9

Witam. Na wstępie powiem że zastosowałem bibliotekę Mirka
już wiem że napewno enkoder jest wykrywany ponieważ gdy 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.


To matrix po wciśnięciu przycisku reaguje i wyświetla mi string który się przesuwa przez chwilę jest czysty ekran(no właśnie dlaczego tylko dak długo?) i godzina faktycznie zmienia się na 21

Natomiast sam obrót czyli funkcja ja sobie ją nazwałem enkoderek
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Obrót w prawo zmienia mi godzinę na 15 i odwrotnie na 20stą tylko teraz do sedna

Pokręcenie w prawo powoduje mi że wyświetla mi się "G-1"
....i następnie gdy dalej kręcę enkoderem(przeskakują zapadki) to ta wartość 1(jeden) nie zmienia się jak było to na wyświetlaczu lcd w poradniku Mirka tylko ta wartość stoji w miejscu. Gdy zaś przestanę kręcić ,a matrix dalej kontynuuje sekwencję wyświetlania warstw czyli godzina/data/cisnienie/temperatura/itd. i znowu pokręce o jedną zapadkę to do porzedniej cyfy dodaje się tylko 1 czyli mam 2. itd.itd. Mi chodzi o to aby ta cyfra odświeżała się na żywo wraz z pokręcaniem

_________________
Ucz się ucz ,bo po to tutaj jesteś...



Ostatnio edytowano 25 mar 2019, o 20:33 przez RadekB86, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2019, o 13:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 gru 2014
Posty: 88
Pomógł: 2

Nie mam 100% pewności, gdybym mógł sprawdzić praktycznie ale obecnie nie mogę , domyślam się że:
Cytuj:
wyświetla mi string który się przesuwa przez chwilę jest czysty ekran(no właśnie dlaczego tylko dak długo?)

wynika z długości (szerokości) napisu jaki określiłeś (ekran wirtualny) wpisując wartość x=290.
O ile się nie mylę to długość tekstu w pikselach "Ustawianie czasu" wynosi:
- litery 15 --> 15x5 (4 pixele litera + 1 pixel spacja) łącznie długość tylko znaki 75 pixeli,
- 1 spacja 3 pixele,
cały napis 75+3=78 pixeli.

Tekst ma się wysuwać z prawej --> w lewo trzeba uwzględnić długość bufora ekranu +32pixele, łącznie 78+32=110.
Wpisałeś aż 290 pikseli szerokość i taki duży utworzyłeś "wirtualny ekran" który jest przewijany pixel za pixelem w momencie gdy znaki schowają się po lewej stronie matrycy nadal przewijany jest pusty ekran aż x=290, przesuwanie pustych znaków zajmuje trochę czasu stąd efekt "przez chwilę jest czysty ekran(no właśnie dlaczego tylko tak długo?).
Zmniejsz x np. do 120 i zobacz.

/------------------------------------------------------------------------------------------------

Oczywiście to co wyżej obliczałem jest ściśle powiązane z setCurrentFont( &font5x8FontInfo ); dla innej czcionki obliczenia będą inne .

/------------------------------------------------------------------------------------------------

Czy wcześniej praktycznie i teoretycznie zajmowałeś się obsługą enekodera ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2019, o 16:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2013
Posty: 485
Lokalizacja: Siedlce
Pomógł: 9

W sumie nie o to pytam ale jak najbardziej mój błąd z ilością z tym warunkiem ;x>-290;

Bardziej chodzi mi o to co opisałem na samym dole

Cytuj:
Czy wcześniej praktycznie i teoretycznie zajmowałeś się obsługą enekodera ?


Co masz na myśli? Jedyne co robiłem to próby z obsługą na lcd-ku 2x16 jak w mirkowym poradniku. tam działa to tak jak oczekuję czyli zmienna cały czas z każdym "tryknięciem zapadki" zmienia swoją wartość.

_________________
Ucz się ucz ,bo po to tutaj jesteś...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2019, o 17:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 gru 2014
Posty: 88
Pomógł: 2

Chodził mi o to czy od razu wskoczyłeś do oceanu czy najpierw zapoznałeś się z obsługą enkdera, skoro znasz podstawy nie będę podpowiadał jak go uruchomić w większym projekcie bo zakładam, że to wiesz.
Spróbuję wieczorem więcej pomóc, podpowiem (nie wiem czy dobrze) starałbym się ograniczyć działanie kodu do fragmentu, który nie działa i dojść dlaczego, a następnie stopniowo włączać to co wyłączyłem.
Użyj debugera dioda led, podłącz RS232 dane na terminal, pułapki programowe.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2019, o 18:06 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 544
Pomógł: 27

napisz czy używasz przerwań do obsługi enkodera czy w pollingu?



Ostatnio edytowano 26 mar 2019, o 10:59 przez tonygryps, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2019, o 19:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2013
Posty: 485
Lokalizacja: Siedlce
Pomógł: 9

tonygryps napisał(a):
napisz czy używasz przerwań do obsługi enkodera czy w pulingu?

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

Tylko co ma to do rzeczy? przecież napisałem że moment wykrywania czy w lewo czy w prawo pokręcanie jest wykrywany po zapisaniu odpowiedniej godziny no nie wiem... :roll:

------------------------ [ Dodano po: 41 minutach ]

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


Coś dziwnego się stało nagle zaczęło działać tak jak oczekiwałem ;) Kurcze okazało się że to wszystko przez ohydnego delaya xD

_________________
Ucz się ucz ,bo po to tutaj jesteś...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 mar 2019, o 09:41 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 544
Pomógł: 27

widzisz a ma to do rzeczy i to bardzo dużo bo jeśli działa w pollingu to kod wykonuje się w pętli while i jak są opóźnienia w w pętli to masz taki efekt jak miałeś a jak działa w przerwaniu to każde pokręcenie wywołuje przerwanie i wykonanie kodu przerwania. Polecam Ci obejrzeć poradnik Mirka o przerwaniach gdzie to świetnie tłumaczy.



Ostatnio edytowano 26 mar 2019, o 10:59 przez tonygryps, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 mar 2019, o 10:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1146
Lokalizacja: Kraków
Pomógł: 93

tonygryps napisał(a):
napisz czy używasz przerwań do obsługi enkodera czy w pulingu?
Przepraszam za czepianie się i nie wnoszenie niczego do tematu, ale sprawdzanie stanu w pętli głównej nosi nazwę pollingu, nie pulingu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 mar 2019, o 10:57 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 544
Pomógł: 27

masz rację przepraszam za moją literówkę już poprawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 mar 2019, o 12:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2013
Posty: 485
Lokalizacja: Siedlce
Pomógł: 9

A co jest według was lepszym rozwiązaniem na przerwaniach cz w poolingu? Dodam że jeden pin z przerwania zewnętrznego mam wykorzystany na rtc ds3231(atmega328p PD2) i czy to by się wiązało z ustawieniem jakichś priorytetów dla przerwania z enkodera?

_________________
Ucz się ucz ,bo po to tutaj jesteś...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 mar 2019, o 13:38 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 544
Pomógł: 27

w rodzinie Atmega nie ma priorytetów przerwań naprawdę polecam ci ten poradnik .
https://www.youtube.com/watch?v=J82_Zop9cjE

------------------------ [ Dodano po: 6 minutach ]

z resztą na m328p masz przerwania od pcint i to prawie na każdym pinie więc ich nie brakuje.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 mar 2019, o 21:24 
Offline
Użytkownik
Avatar użytkownika

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

Cytuj:
A co jest według was lepszym rozwiązaniem na przerwaniach cz w poolingu?

Wszystko zależy od sytuacji chociaż ja wszelkie enkodery wolę badać cyklicznie w przerwaniach od timera i to czasem po kilka tys. imp/s na dowolnym pinie procka. Robię tak z prostej przyczyny - restrykcje czasowe... Mam dzięki temu pełną kontrolę nad pozostałymi blokami w przerwaniach gdzie wywołanie przerwania zewnętrznego (które ma wyższy priorytet) mogło by mi narobić szumu.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 kwi 2019, o 17:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2013
Posty: 485
Lokalizacja: Siedlce
Pomógł: 9

po dodaniu biblioteki mirkowej do enkodera mam mały warning :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jak kliknę ponownie kompilację (czasami za kolejnym ...i kolejnym razem) to komplilacja przechodzi i program działa zgodnie z oczekiwaniami jak temu zaradzić ?

_________________
Ucz się ucz ,bo po to tutaj jesteś...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2019, o 04:59 
Offline
Moderator
Avatar użytkownika

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

to zajrzyj do pliku nagłówkowego biblioteki i zobacz jakie argumenty powinna zawierać twoja funkcja wywoływana przez callback i takie do niej dodaj

_________________
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: 17 kwi 2019, o 14:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2013
Posty: 485
Lokalizacja: Siedlce
Pomógł: 9

Nie bardzo rozumiem to dlaczego udaje się to skompilować za jednym razem ,a za innym nie?

Może wkleję całą consolę.

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

_________________
Ucz się ucz ,bo po to tutaj jesteś...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2019, o 14:24 
Offline
Moderator
Avatar użytkownika

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

ciężko ci pomóc bo skaczesz z tematu na temat a każdy jakby bez związku ze sobą - więc sorki ale ja dalej nie dam rady

_________________
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: 17 kwi 2019, o 14:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1146
Lokalizacja: Kraków
Pomógł: 93

W konsoli masz odpowiedź na swoje pytanie. Funkcje spodziewają się argumentów innych niż w deklarowanej funkcji. Masz to w linijkach 94 i 101.
A dlaczego raz się kompiluje a innym razem nie? Obstawiam, że kompilator dokonuje niejawnego rzutowania typów. Ale to tylko moje przypuszczenie, nie jestem na 100% pewien.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2019, o 16:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2013
Posty: 485
Lokalizacja: Siedlce
Pomógł: 9

Miałeś rację ale jeszcze mam jakieś inne warningi :( ?

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

_________________
Ucz się ucz ,bo po to tutaj jesteś...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2019, o 19:30 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 544
Pomógł: 27

poczytaj konsolę linia 64 i 68 masz nie zadeklarowane funkcje (najpewniej używasz te funkcje w jakiś folderze projektu i nie masz inkluda do folderu gdzie jest kod źródłowy )



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 kwi 2019, o 13:51 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

Zrób takie doświadczenie - po pierwszej nieudanej kompilacji zrób clean projectu i ponownie skompiluj. Pójdzie czy nie pójdzie? :)))



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 kwi 2019, o 14:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2013
Posty: 485
Lokalizacja: Siedlce
Pomógł: 9

micky napisał(a):
Zrób takie doświadczenie - po pierwszej nieudanej kompilacji zrób clean projectu i ponownie skompiluj. Pójdzie czy nie pójdzie? :)))

Obrazek
NIE IDZIE

_________________
Ucz się ucz ,bo po to tutaj jesteś...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 kwi 2019, o 15:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2013
Posty: 485
Lokalizacja: Siedlce
Pomógł: 9

zubik napisał(a):
Masz niezadklerowaną funkcje mdelay

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

W folderze bmp180


Kurcze okazało się że nie dodałem pliku nagłówkowego w bmp180 :oops: kurcze pewnie gdyby nie to że za którymś razem mi to zadziałało to bym sam się tego dopatrzył xd ale wstyd... :lol: :oops: :oops: :oops: :oops: :oops: :oops: :oops:

_________________
Ucz się ucz ,bo po to tutaj jesteś...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 kwi 2019, o 16:29 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

I zapamiętaj, że tylko przy pierwszej kompilacji są pokazywane warningi (chyba, że zrobisz clean - po to zasugerowałem, żebyś zrobił clean i kompilację). Jest to o tyle ważne, że potem błędnie zakładasz, że jest ok, skoro po drugiej kompilacji warningów już nie ma.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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