ATNEL tech-forum
https://forum.atnel.pl/

MatrixATB + enkoder w celu ustawiania godziny i daty
https://forum.atnel.pl/topic22104.html
Strona 1 z 1

Autor:  RadekB86 [ 24 mar 2019, o 16:21 ]
Tytuł:  MatrixATB + enkoder w celu ustawiania godziny i daty

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

Autor:  fobos [ 25 mar 2019, o 13:43 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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 ?

Autor:  RadekB86 [ 25 mar 2019, o 16:01 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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ść.

Autor:  fobos [ 25 mar 2019, o 17:43 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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.

Autor:  tonygryps [ 25 mar 2019, o 18:06 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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

Autor:  RadekB86 [ 25 mar 2019, o 19:11 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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

Autor:  tonygryps [ 26 mar 2019, o 09:41 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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.

Autor:  Marhef [ 26 mar 2019, o 10:33 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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.

Autor:  tonygryps [ 26 mar 2019, o 10:57 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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

Autor:  RadekB86 [ 26 mar 2019, o 12:54 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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?

Autor:  tonygryps [ 26 mar 2019, o 13:38 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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.

Autor:  SylwekK [ 26 mar 2019, o 21:24 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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.

Autor:  RadekB86 [ 16 kwi 2019, o 17:32 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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ć ?

Autor:  mirekk36 [ 17 kwi 2019, o 04:59 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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

Autor:  RadekB86 [ 17 kwi 2019, o 14:18 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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.

Autor:  mirekk36 [ 17 kwi 2019, o 14:24 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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

Autor:  Marhef [ 17 kwi 2019, o 14:34 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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:  RadekB86 [ 17 kwi 2019, o 16:32 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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.

Autor:  tonygryps [ 17 kwi 2019, o 19:30 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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 )

Autor:  micky [ 19 kwi 2019, o 13:51 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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

Autor:  RadekB86 [ 19 kwi 2019, o 14:26 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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

Autor:  RadekB86 [ 19 kwi 2019, o 15:36 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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:

Autor:  micky [ 20 kwi 2019, o 16:29 ]
Tytuł:  Re: MatrixATB + enkoder w celu ustawiania godziny i daty

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.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/