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: 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 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? 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... ------------------------ [ Dodano po: 41 minutach ] 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 : 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ę. |
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 ? |
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 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 kurcze pewnie gdyby nie to że za którymś razem mi to zadziałało to bym sam się tego dopatrzył xd ale wstyd... |
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/ |