ATNEL tech-forum https://forum.atnel.pl/ |
|
enkoder + wyświetlacz COG - kłopot z wyświetlaniem https://forum.atnel.pl/topic21524.html |
Strona 1 z 1 |
Autor: | Daro69 [ 4 lis 2018, o 22:11 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
bez wgryzania się w bibliotekę Mirka, bo nie mam. :/ przeanalizował bym na początku kolejność: 1. zapełnianie bufora funkcjami... 2. moment wysłania bufora do wyświetlacza, 3. moment czyszczenia bufora przed ponownym zapełnieniem. domyślam się że funkcje, st7565_fillCircle, pasek_enkodera_ ... itp wypełniają bufor st7565_display(); wysyła, st7565_cls(); czyści bufor. ? przed zapełnieniem nowymi danymi trzeba czyścić. a tego nie widzę. może się tylko nadpisują? takie spostrzeżenia. |
Autor: | wojciechgorzolka [ 4 lis 2018, o 22:12 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
ooo dziękuję Darku. poprawię to w kodzie. i zobaczę czy pomogło ------------------------ [ Dodano po: 15 minutach ] muszę jeszcze doczytać w BB na ten temat |
Autor: | Daro69 [ 4 lis 2018, o 22:43 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
Ale o funkcjach do st7565 nie ma w BB :/ Wysłane z mojego Lenovo K33a42 przy użyciu Tapatalka |
Autor: | wojciechgorzolka [ 4 lis 2018, o 22:48 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
ale jest o SPI |
Autor: | wojciechgorzolka [ 5 lis 2018, o 06:50 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
Naszła mnie taka myśl... W BB jest napisane, aby przerwania były jak najkrótsze. A w moim kodzie, w przerwaniu wykonuję sprawdzenie czujnika temperatury, odczyt z czujnika i wyświetlenie temperatury i trwa to około trzech sekund. Czy ja dobrze rozumuję,że przez tą operację pętla główna jest w "bezruchu" przez ten czas? czyli nic się nie wykona przez trzy sekundy i dlatego mam kłopot z obsługą enkodera? Czy zmiana kodu, aby temperatura była sprawdzana i odczytywana w krótszym czasie i rzadziej- rozwiąże mój problem? |
Autor: | micky [ 5 lis 2018, o 07:16 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
Oczywiście że ma to wpływ. Rób tak by temperaturę odczytywać w pętli głównej. A przerwanie jak będzie to wtedy sie przerwie. Podpatrz jak to Mirek zrobił w projekcie wielozadaniowym. |
Autor: | mirekk36 [ 5 lis 2018, o 07:16 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
wojciechgorzolka napisał(a): A w moim kodzie, w przerwaniu wykonuję sprawdzenie czujnika temperatury, odczyt z czujnika i wyświetlenie temperatury i trwa to około trzech sekund. powiem krótko 'Ooooooooooooh My God' Jeśli ten kod napisałeś sobie, żeby sprawdzić czy w Bluebooku piszą prawdę - no to teraz już chyba sprawdziłeś ... hmmm? Niektóre początkujące osoby umieszczają chociażby samo wyświetlanie na zwykłym alfanumerycznym LCD i to już jest tysiąc razy za długa operacja w przerwaniu (bo przesłanie danych do COG jest o wiele dłuższe) , a to co kolega napeklował tu do przerwania .... to po prostu .... no ale cóż, nie ma to jak sprawdzić na własnej skórze - troszkę może to dłużej potrwa ale człowiek lepiej zapamięta na przyszłość. Pomyśl sobie czym się różni pisanie kodu liniowo od wpeklowania wszystkiego w jedno przerwanie ? ..... odpowiedź krótka - niczym, jest nawet gorzej - bo już nawet w takiej sytuacji nie masz dostępnych innych przerwań ..... No chyba że pójdziesz jeszcze dalej i włączysz sobie atrybut ISR_NO_BLOCK dla przerwania to wtedy zobaczysz zupełny armagedon przy takim podejściu do przerwań. |
Autor: | wojciechgorzolka [ 5 lis 2018, o 07:20 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
po pracy będę poprawiał kodzik |
Autor: | Daro69 [ 5 lis 2018, o 08:35 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
Łojć. W przerwaniu to tylko sprawdzanie nóżek enkodera i wysypanie wartości + lub -, ale nie realizacja funkcji z tym związanych. pozostałe funkcje w chronologii pętli. Wysłane z mojego Lenovo K33a42 przy użyciu Tapatalka |
Autor: | Daro69 [ 5 lis 2018, o 18:03 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
mam jeszcze zapytanko, żeby nie było za łatwo. wiem że fajne są funkcje "st7565_fillCircle(...", ale czy nie wygodniej byłoby narysować jeden kształt kursora i wstawiać go w odpowiedniej wysokości : 3, 13, 23, 33.? nawet jeżeli nie ma gotowej funkcji- (znając Mirka to pewnie jest ), można taką złożyć z - na bank istniejącej jakiejś "set_pixel()". ............................................................... kurczę, może za szybko trajdolę moimi skrótami myślowymi i przez to niechcący Tobie mieszam. |
Autor: | wojciechgorzolka [ 5 lis 2018, o 18:18 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
Darku, ta funkcja , o której piszesz rysuję koło, więc łatwiej ją właśnie użyć ------------------------ [ Dodano po: 9 minutach ] Nie mieszasz, tylko gonisz z programem nauczania hehe. Ale dzięki Tobie zabrałem się w końcu za wskaźniki;) |
Autor: | wojciechgorzolka [ 5 lis 2018, o 23:06 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
Cześć koledzy. Walczę dzisiaj od 19stej z moim kodem. I wyrzuciłem przerwanie z programu. Przerwania zastąpiłem Timerem programowym. Po zmianie przerwań na Timer programowy wyświetla mi ciągle temperaturę 0.0 stopni Celcjusza, enkoder już się nie blokuje i działa płynnie, jednaj niezależnie jak go pokręcę, to zlicza zmienną tylko w jedną stronę, czyli tylko ją dodaje ( nie wiem czemu nie odejmuje- kręcąc w przeciwnym kierunku) Timer programowy działa i togluje mi diodę co jedną sekundę. A poza tym nie poddaję się w walce z tym programem, jednak mózg mi się już dzisiaj lasuje i muszę wyjść z psem na spacer, aby odetchnąć. Przeczytałem też cały rozdział z multipleksowaniem w BB ( tam jest o przerwaniach). Na dzisiaj nie mam już pomysłu, co z tym kodem jest nie tak. Może poratujecie mnie jakąś małą podpowiedzią? Czy w ogóle w tym kodzie mogę zrezygnować z przerwań? Tutaj mam inicjalizację Timera: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Tutaj jest timer programowy: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. A tak wygląda timer wraz z kodem,który znajduje się w Timer1: język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
A tutaj jest kod w całości: |
Autor: | Daro69 [ 6 lis 2018, o 08:42 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
Może źle widzę w tapatalku. :/ W ifie !timer1, widzę: ciągle sek =O oraz sek++. Ciagle pozostawia 1. :/ Wysłane z mojego Lenovo K33a42 przy użyciu Tapatalka |
Autor: | Daro69 [ 6 lis 2018, o 10:13 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
widzę jeszcze, |
Autor: | wojciechgorzolka [ 6 lis 2018, o 18:27 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
dzięki Darku za podpowiedź. Faktycznie zrobiłem błąd i ciągle zerowałem zmienną, zamiast ją zwiększać. Teraz temperatura się wyświetla i działa prawidłowo. Została jeszcze kwestia kręceniem enkoderem, ale zaraz się za to zabieram, może znajdę błąd ------------------------ [ Dodano po: 42 minutach ] Znalazłem błąd w programie. Chodzi o ustawienie pinów enkodera jako wejścia mam podłączone piny do portu A PA0, PA1, a w kodzie mam ustawiony tylko jeden pin enkodera jako wejście. Teraz działa ))))))))))))))))))))))))))) No i teraz mogę pójść spokojnie zrobić sobie kolację |
Autor: | wojciechgorzolka [ 7 lis 2018, o 22:14 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
hej koledzy. Kodzik opanowany i poprawiony przez Daro69. Czyli chodziło o optymalizację kodu. Po szczegółowych konsultacjach z Darkiem , kod działa idealnie. nic się nie blokuje, nic się nie psuje. A ja już zabierałem się za zamianę wyświetlacza z COGa na lcd 4x20. Na szczęście Darek uchronił mnie od tej decyzji. za co jestem mu bardzo wdzięczny. A oto poprawiony kod: |
Autor: | Daro69 [ 7 lis 2018, o 22:31 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
Spoko, Wojtek. Rozumiem radochę z działającego kodu, ale do optymalizacji i poprawek jeszcze sporo by się znalazło. Przede wszystkim usunęliśmy zdublowane wykonywanie funkcji i wielokrotne kopiowanie wartości z jednej zmiennej do drugiej. Ale fajnie że to Cię cieszy, że nie znichecasz się do analizowania kodu i wyciągania wniosków. Wysłane z mojego Lenovo K33a42 przy użyciu Tapatalka |
Autor: | wojciechgorzolka [ 12 lis 2018, o 15:14 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
Dlaczego funkcja print_char() nie chce przesłać znaku? czym to może być spowodowane. Bo jak analizuję zwój kod, ta funkcja powinna wysyłać ciągle znak. |
Autor: | Daro69 [ 12 lis 2018, o 16:04 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
najprościej to sprawdzić wstawiając wywołanie funkcji print_char(coś); w innym miejscu kodu. będziesz wiedział czy wysyła czy nie, bo może problemem są warunki w których jest umiejscowiona ta funkcja, a może sam sposób odczytu tego co dotarło. ? trzeba się pobawić debugger'em. |
Autor: | mirekk36 [ 12 lis 2018, o 16:23 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
wojciechgorzolka napisał(a): SIGNAL(USART_RXC_vect) Przysięgam, naprawdę nie piszę tego złośliwie - no ale nazwy procedur przerwań "SIGNAL" nie stosuje się już praktycznie od 2010 roku a dzisiaj mamy 2018 rok W żadnej książce którą kolega posiada nie ma i być nie może przykładu z użyciem "SIGNAL" ... wręcz odwrotnie z nazwą jaką się należy używać "ISR". Ja rozumiem, gdy ktoś rozpoczynał naukę AVR GCC przed 2010 rokiem to może mieć jakieś naleciałości i wciąż jeszcze omyłkowo używać "SIGNAL" No ale kolega przecież (z tego co wiem) dopiero od niedawna rozpoczął przygodę z językiem C ..... moje pytanie - skąd kolega czepie zatem wiedzę ?, że w swoich kodach używa "SIGNAL" .... tym bardziej, że to wręcz proszenie się o błędy w kodzie że aż strach. Jeśli z jakichś kocich kursów internetowych? to może warto je odstawić ? ...ooo ale teraz po tych fragmentach język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. widzę, że kolega jednak "jedzie" na mega kocim kursie C .... no cóż - będzie bolało troszkę, dłużej będzie schodziło czasu - no ale co tam też się w końcu da coś i z tym zrobić A na koniec: wojciechgorzolka napisał(a): Następnie za mainem napisałem ciało funkcji wysyłania : Nie, mi się wydaje, że umieściłeś tę swoją funkcję wewnątrz funkcji main() a nie poza jej ciałem. |
Autor: | wojciechgorzolka [ 12 lis 2018, o 16:59 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
Dziękuję za podpowiedź. Nie zauważyłem ,że wrzuciłem tą funkcję w maina. Tyle godzin szukania błędu . A uczę się z różnych źródeł. Głównie z Pana książek i poradników. Zresztą mój BB wygląda już jak wyjęty z paszczy diabła tasmańskiego, ale moja żona mówi,że takie poniszczone książki mają duszę;). Uczę się też z książki JĘZYK C SZKOŁA PROGRAMOWANIA S. Prata i trochę z poradników AVR Kwiat. Nie byłem świadomy tego,że SIGNAL , to jakieś przestarzałe nazewnictwo. Wszystkie uwagi biorę do siebie Dodam jeszcze,że ogrom wiedzy przekazuje mi Daro69. TO jest dopiero pomocny gość na forum. Powinien dostać atnelowskiego nobla forumowego |
Autor: | Daro69 [ 12 lis 2018, o 17:06 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
Wojtka trzeba złapać w pułapki lochowe i natrzeć mu uszu. Kiedy już napisze działający kod, to rozsiewa w nim jakieś straszydła-(dla ulepszenia). Trzeba od początku sprawdzać linijkę po linijce. wojciechgorzolka napisał(a): i trochę z poradników AVR Kwiat. to poradnik z chyba 2009r.
|
Autor: | wojciechgorzolka [ 12 lis 2018, o 17:25 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
do lochów, albo na stos i spalić |
Autor: | Daro69 [ 12 lis 2018, o 17:37 ] |
Tytuł: | Re: enkoder + wyświetlacz COG - kłopot z wyświetlaniem |
nie nie... ze stosem nie przejdzie, bo w końcu się przepełni. Lepiej do lochów i natrzeć. |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |