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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 18 cze 2025, o 16:01


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
    Autor Wiadomość
    PostNapisane: 4 kwi 2013, o 17:30 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 maja 2012
    Posty: 758
    Pomógł: 9

    Witam,
    natknąłem się na problem podczas stosowania timera programowego (opartego na Timerze2) w Atmedze32. Otóż projekt ma dołączony wyświetlacz LCD TFT 3.5'' od Atnela wraz z konwerterem (a zatem panelem dotykowym). Jest również ADC - pomiar 8 napięć 0-2.5V.

    W czym rzecz - gdy stosuję przerwanie od timera to mi się wiesza na wyświetlaczu dotyk, nie od razu po uruchomieniu, czasami pół sekundy po a czasami 10 sekund po starcie. Nie wiem, w czym rzecz. Przerwanie uprościłem do minimum, a nawet zostawiłem je puste (!) i problem nadal występował. Gdy ustawiłem tylko rejestry od timera i nie dałem wcale obsługi przerwania (procedury ISR...) to ekran przy starcie cały czas migał (jakby się odświeżał cały czas na biało). Nie wiem, co jest grane.

    Sprzęt ok, lekcja16 działa super (te suwaki).

    Pewnie mam jakiegoś babola w kodzie, proszę o zerknięcie okiem bo mnie już szlag trafia...

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


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


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


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


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

    _________________
    ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 kwi 2013, o 20:29 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    Chętnie pobawię się tym ciekawym kodem, ale na szybko może spróbuj zastąpić w pliku mk_stmpe811.c w funkcji stmpe811_init() inicjalizację przerwań INTx takim kodem:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Autor postu otrzymał pochwałę

    _________________
    Dragonus Cracovus: Biomagia



    Ostatnio edytowano 5 kwi 2013, o 16:31 przez Krauser, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 kwi 2013, o 21:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 maja 2012
    Posty: 758
    Pomógł: 9

    Dzięki za odpowiedź.
    O, nie przypuszczałem nawet że to może być wina konfiguracji STMPE811. Przyjąłem po prostu kod-bibliotekę Mirka za pewnik. ;)
    Nie mam teraz możliwości tego sprawdzić, ale jutro wieczorem albo w sobotę rano napiszę, czy pomogło. :)

    _________________
    ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 kwi 2013, o 21:56 
    Offline
    Moderator
    Avatar użytkownika

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

    no tak - robiłem jakieś Copy&Paste i walnęło mi się coś takiego :(

    Cytuj:
    MCUCR &= (1<<ISC01); // zbocze opadające


    zamiast

    Cytuj:
    MCUCR |= (1<<ISC01); // zbocze opadające


    też tak mam w kodzie u siebie - niestety - muszę to dać do aktualizacji na stronie ;)

    dzięki Krauser za znalezienie BUG'a

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

    chociaż? czy ty już kiedyś o tym gdzieś tu nie pisałeś komuś? a ja zapomniałem to zaktualizować ? ;) eeeeh idę teraz od razu to zrobić ;)

    ------------------------ [ Dodano po: 8 minutach ]

    już jest w aktualizacjach:

    http://atnel.pl/uaktualnienia-programow-do-dvd.html


    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: 6 kwi 2013, o 20:44 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 maja 2012
    Posty: 758
    Pomógł: 9

    Wygląda na to, że teraz działa dobrze. ;]
    Chciałbym Wam gorąco podziękować - w końcu mogę iść do przodu z magisterką. :)

    Nikt nie jest nieomylny, nawet Mirek, ale jesteśmy tylko ludźmi i ja to rozumiem. ;)
    Fajnie, że udało się rozwiązać problem.
    Lekcja na przyszłość: nie traktować czyjegoś kodu (z bibliotek) jako w 100% działający i podchodzić krytycznie do każdej linijki. ;)

    Pozdrawiam. :)

    _________________
    ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 kwi 2013, o 22:08 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    Używanie Ctrl+C, Ctrl+V mnie też nie raz wpuściło w maliny :oops:
    Przy okazji pobawiłem się programem. Coś nie tak jest z czcionką, bo zmienia się z 11 bold na default w trakcie działania w podmenu częstotliwość pomiaru, ale to kosmetyka i teraz pójdzie z górki. Klawiatura ekranowa wymagać będzie więcej pracy.

    _________________
    Dragonus Cracovus: Biomagia



    Ostatnio edytowano 6 kwi 2013, o 22:33 przez Krauser, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 kwi 2013, o 22:13 
    Offline
    Moderator
    Avatar użytkownika

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

    Krauser napisał(a):
    Używanie Ctrl+C, Ctrl+V mnie też nieraz wpuściło w maliny :oops:
    ....


    Ja nawet wiem jak zrobiłem te babole bo najpierw napisałem obsługę na INT2, a później już na szybko chciałem bez sprawdzania w realu dopisać obsługę z kompilacją warunkową na INT0 i INT1, więc szybko CTRL+C, CTRL+V, skasowałem tyldy - ale wzrokiem niestety już nie złapałem znaków & tzn żeby je zamienić na | .... i tak wyszło. Zresztą zdaje się że przy modułach RFM12 identyczna sytuacja była w bibliotece mojej.

    _________________
    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: 6 kwi 2013, o 22:16 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 maja 2012
    Posty: 758
    Pomógł: 9

    @Krauser: wiem, coś z czcionkami jest jeszcze nie halo, ale jak piszesz to już drobnostka. Dodatkowo je odchudziłem je w PixelFactory i zostawiłem tylko używane znaki dzięki czemu znacząco spadła pamięciożerność programu. ;)

    Klawiaturka ekranowa przecież chodzi ładnie, co masz na myśli? Zauważyłem tylko, że nie da się wprowadzić liczby z zakresu (-1,0), ale to już jest drobnostka do poprawienia. :)

    Jak masz jakieś uwagi do programu i obsługi wyświetlacza jaką stosuję (np. menu, przyciski itp) to pisz, będę wdzięczny. Słyszałem, że szalejesz na tych TFT. ;)

    ------------------------ [ Dodano po: 7 minutach ]

    Ehhh chyba za wcześnie chwaliłem dzień przed zachodem słońca. Nadal się dotyk wiesza, tylko dużo rzadziej...

    _________________
    ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 kwi 2013, o 00:09 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    Nie zauważyłem żadnej zwiechy a jeżdżę po ekranie. W funkcji drawButton dodałem na początku linię setCurrentFont(&DefaultFontInfo); Klawiaturka działa zbyt szybko i trudno wprowadzić jeden znak i jak jest ich więcej to przeskakuje na minus i ten znak pojawia się również zaraz za przecinkiem.

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 kwi 2013, o 00:21 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 maja 2012
    Posty: 758
    Pomógł: 9

    Mi się dwa razy zwiesił od pory poprawki, ale może to wina tego, że testowałem na podłączonym USB (i programatorze co za tym idzie). Chociaż raz zawisł chyba też przy odłączonym USB i programatorze w ATB.

    Dzięki za resztę uwag. Klawiaturka nie będzie raczej służyła do wprowadzania dużych liczb (temperatura, nastawy P, I, D), a "przekręca" się bo przekracza zakres inta... Z tym minusem za kropką - nie mogę dojść do tego kiedy i dlaczego się pojawia. Nieco poprawiłem klawiaturkę i teraz już można wprowadzać liczby od -1 do 0. ;)

    A to, że działa zbyt szybko to hmmm nie wiem co na to poradzić. Ma wykrywać co 5 kliknięcie w cyfrę? :) Czy nie wiem kurka...

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


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


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

    _________________
    ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 kwi 2013, o 10:30 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

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

    w końcu trzeba przewidzieć każdą sytuację.
    Czy możesz wprowadzić 0,01 ?

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 kwi 2013, o 21:17 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 maja 2012
    Posty: 758
    Pomógł: 9

    Krauser napisał(a):
    Czy możesz wprowadzić 0,01 ?

    Nie... :/

    Krauser problem dotyczy wprowadzania liczb typu x.0y
    problem w tym, że część ułamkowa jest u mnie intem, a jak wiadomo 03 = 3 więc dlatego nie działają takie liczby. Jak to rozwiązać - nie wiem... Pierwszy raz w życiu implementuję klawiaturę ekranową i nie jest to takie proste jak myślałem, jeszcze gdyby można było używać double/float to by było prościej, ale na samych całkowitych to jest ciężka sprawa dla mnie...

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

    keyNo wynosi 0, numKbdRes.fractPart wynosi 0 na początku.
    Po tej linijce numKbdRes.fractPart = 10*0 + 0 = 0...
    I w funkcji tftPutReal nie jest wyświetlana część ułamkowa...
    Nawet jakby wyświetlać, to i tak niczego nie rozwiązuje. Bo 4.02 => numKbdRes.fractPart = 10*0 + 2 = 2 => mamy 4.2 zamiast 4.02...

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

    Można dodać licznik zer pod rząd po przecinku zwiększający się z każdym naciśnięciem "0" po kropce, jedyne co mi przychodzi do głowy. I wyświetlać te zera między częścią całkowitą i ułamkową. Ale to bardzo komplikuje cofanie (backspace).

    _________________
    ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 kwi 2013, o 20:27 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    To powinien być string. Podczas wprowadzania pilnujesz czy - i . już zostały użyte.
    Jak będziesz miał "-54321,0123" to wtedy należy rozbić to na 2 stringi przy użyciu funkcji strtok. Znając długość 2 stringa (funkcja strlen zwróci powiedzmy fractIntLength) możesz po użyciu funkcji atoi używać tych liczb w taki przykładowy 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.

    Zwracam tu uwagę na to, że fractPart będzie takie samo dla 0,123 i 0,0123 dlatego znajomość długości tego stringa jest kluczowa.
    Nie jest to sprawdzony kod. Dlatego postaram się o działający przykład.

    _________________
    Dragonus Cracovus: Biomagia



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO