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 22 lip 2025, o 19:10


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 45 ]  Przejdź na stronę Poprzednia strona  1, 2
    Autor Wiadomość
    PostNapisane: 26 wrz 2018, o 13:37 
    Offline
    Nowy

    Dołączył(a): 20 wrz 2018
    Posty: 17
    Pomógł: 0

    Dobre, dobre. :D
    Ale gdyby tym wątkiem pójść to pewnie teraz Asemblera bym się uczył. :shock:

    Wdzięczny jestem, że pokazujesz na wielu stronach i w kilku poradnikach zagadnienie programu nie blokującego się. :!:
    Kompletnie ten i powyższy post nie negują sztuki poprawnego pisania kodu i tego że uczysz więcej niż przeciętnie inni nauczyciele w tym zakresie.
    Lecz czasy sa takie, że usprawiedliwiają kolejne ułatwienia.

    Pamiętam swoje zdziwienie jak poraz pierwszy dowiedziałem się że _delay_ms () wstrzymuje działanie procesora, przecież to takie nieintuicyjne.
    W dzisiejszych czasach - jak sam napisałeś w BB - łatwiej kupić silniejszy procesorek niż nauczyć się bardziej zaawansowanych technik programowania.
    Bardziej zaawansowanych bo w standardowych (innych) publikacjach o tym się nie pisze.

    No i właśnie dzisiaj sobie uświadomiłem jaka nowa funkcjonalność by się przydała w nowym C/C++ 2x. :D
    Przecież nie takie ułatwienia wnosiły kolejne "wcielania" C/C++.

    _no_bloking_delay_ms ();

    lub jakoś podobnie.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 wrz 2018, o 13:54 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Waldi_06 napisał(a):
    No i właśnie dzisiaj sobie uświadomiłem jaka nowa funkcjonalność by się przydała w nowym C/C++ 2x. :D
    Przecież nie takie ułatwienia wnosiły kolejne "wcielania" C/C++.

    _no_bloking_delay_ms ();

    lub jakoś podobnie.
    Tylko że _delay_ms() to tak naprawdę funkcja (albo makro), która wstawia odpowiednią ilość instrukcji assemlerowych "nop". A funkcja nieblokująca jak powinna działać? Po odmierzeniu czasu bezwzględnie przerwać to, co się wykonuje? Czy zadziałać jako przerwanie? Ale może o wyższym priorytecie niż inne przerwania? Albo o niższym?

    Widzisz, wprowadzenie nowej funkcjonalności wymaga dobrego przemyślenia. Mirek pokazał, jak zrobić pseudo-wielowątkowy projekt. Z 8-bitowego procka nie da się dużo więcej wyciągnąć. A to, co (wydaje mi się, że) chcesz osiągnąć można w miarę łatwo na timerze zrobić. Nie blokujesz działania programu, a przerwa trwa tyle, ile potrzebujesz.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 wrz 2018, o 14:14 
    Offline
    Nowy

    Dołączył(a): 20 wrz 2018
    Posty: 17
    Pomógł: 0

    >Marhef
    To nie sa problemy (to o czym piszesz) a jedynie możliwe tryby pracy.
    Moim celem nie było umniejszanie komukolwiek a proste wskazanie możliwych obszarów rozwoju języka przedstawione w formie marzenia.
    To pomysł, to idea.

    No dobrze koniec oftopu i koniec marzeń.
    A teraz powrót na ziemię do wiecznego nie da się, bo tak jak jest to dobrze jest.

    Chciałem pogadać luźno, pogdybać, podzielić się odczuciami pracując nad projektem Mirka z BB a nie dostać z buta pt "A to, co (wydaje mi się, że) chcesz osiągnąć można w miarę łatwo na timerze zrobić".



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 wrz 2018, o 14:36 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Waldi_06 napisał(a):
    To nie sa problemy (to o czym piszesz) a jedynie możliwe tryby pracy.
    Ale jeden z nich musisz wybrać. Chyba, że dać możliwość wyboru użytkownikowi. Ale wtedy funkcja się mocno rozbudowuje (i potrzebuje więcej zasobów).
    Waldi_06 napisał(a):
    a nie dostać z buta pt "A to, co (wydaje mi się, że) chcesz osiągnąć można w miarę łatwo na timerze zrobić".
    Szkoda, że tak to odebrałeś. O ile dobrze Cię zrozumiałem, chcesz wykonać jakiś fragment programu co określony czas. Więc zamykasz ten fragment w funkcji obsługi przerwania (jeśli krótkie). Albo w przerwaniu ustawiasz flagę a w funkcji main sprawdzasz tą flagę i stąd wywołujesz odpowiednią funkcję. Możesz też tak ustawić timer, żeby odliczanie czasu uruchamiać wtedy, kiedy Ty chcesz.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 wrz 2018, o 16:10 
    Offline
    Nowy

    Dołączył(a): 20 wrz 2018
    Posty: 17
    Pomógł: 0

    Marhef napisał(a):
    Szkoda, że tak to odebrałeś. O ile dobrze Cię zrozumiałem, chcesz wykonać jakiś fragment programu co określony czas. Więc zamykasz ten fragment w funkcji obsługi przerwania (jeśli krótkie). Albo w przerwaniu ustawiasz flagę a w funkcji main sprawdzasz tą flagę i stąd wywołujesz odpowiednią funkcję. Możesz też tak ustawić timer, żeby odliczanie czasu uruchamiać wtedy, kiedy Ty chcesz.


    Wiesz co to - w sumie wiem.
    Pisząc w konwencji luźno dyskusyjnej - nie widzę nic złego w ciągłym poszerzaniu standardu, bo to się dzieje bez naszego udziału, ale każda nowa edycja zawiera nowe oficjalne rozwiązania w kompilatorach. To dlaczego nie - taki ułatwiający pisanie kodu na małe procki a i jeszcze wyciskający siódme poty z tego sprzęciku. :!:

    Naprawdę uważam, że zmniejszyłoby to pierwszy stopień trudności z językiem C i poszerzyło grono jego użytkowników.
    Wyobraź sobie - jedna funkcja z dosłownie "kilkoma przełącznikami" - jakiez to szczęście i ile roboty mniej.
    Ponoć każdy koder lubi ułatwiać sobie życie (ułatwień pełno w BB i GB).
    Rozumiem, też że niektórzy musieliby nauczyć się czegoś nowego !

    No dobra mamy więc po 1:1 - tak całkiem na luźno bez spinki. ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 paź 2018, o 12:03 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2596
    Pomógł: 129

    Zainteresuj sie timerami programowymi z np. YB



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 paź 2018, o 20:43 
    Offline
    Nowy

    Dołączył(a): 20 wrz 2018
    Posty: 17
    Pomógł: 0

    micky napisał(a):
    Zainteresuj sie timerami programowymi z np. YB

    Tak. Wiem.
    Już kupiłem większość zabawek do YB.
    Ostatni zakup przedemną. Potem polutować to wszystko.
    Teraz na tapecie mam sprawy prywatne ale też nadrabiam zaległości z poradnikami. Tam jest masa wiedzy. Zajmuje to dużo czasu.
    Nie chcę przegapić, mam zamiar "nabrać pamięci mięśniowej" w pisaniu i oswoić się z wieloma aspektami.

    No i dzięki za podpowiedź. Mniej tu jestem , ale C jest dalej bardzo dużo.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 maja 2019, o 21:33 
    Offline
    Użytkownik

    Dołączył(a): 22 lis 2014
    Posty: 29
    Pomógł: 0

    Cześć

    Pozwólcie koledzy, że zadam pytanie w tym wątku:)

    Zestaw 1.04 i wgrany projekt wielozadaniowy zewnętrzny kwarc 11...
    Czy zdarza się u was że zegarek się zatrzyma ?? tzn zawiesi się tak że nie reaguje na przycisk i kody z pilota :(
    Czasami zawiesza się po kilkunastu sekundach a czasami po paru minutach.

    Żeby znowu ruszyło to trzeba kilkukrotnie wcisnąć reset - minimum dwa razy << czy to jest normalne?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 maja 2019, o 21:57 
    Offline
    Moderator
    Avatar użytkownika

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

    A może zamiast pytać czy coś się zdarza - bo takie pytanie czy odpowiedź mało ci pomoże - to może jednak lepiej zastanów się jak problem rozwiązać ...

    czyli po pierwsze opisz co i jak dokładnie robisz. Fakt że w tym projekcie zabrakło omyłkowo wywołania funkcji

    i2cSetBitrate( 100 );

    czyli ustawienia prędkości na magistrali I2C, więc sobie to dodaj

    po drugie nie wiadomo jak masz ustawione fusebity, bo piszesz o kwarcu ale już niejeden początkujący się przejechał na tym, że gdzieś przedtem zmienił fusebity np na wew. oscylator 8MHz, zapomniał i później się dziwił że jakiś projekt działa niezgodnie z oczekiwaniem.

    kolejna rzecz sprawdź dokładnie czy w zestawie ATB siedzi poza RTC pamięć EEPROM konkretnie 24c04 czy może przez przypadek jakaś inna bo to już może tworzyć konflikty na i2c

    _________________
    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: 20 maja 2019, o 08:38 
    Offline
    Użytkownik

    Dołączył(a): 22 lis 2014
    Posty: 29
    Pomógł: 0

    i2cSetBitrate( 100 ); oczywiście jest w kodzie :)

    fusebity sprawdzę wieczorem , podejrzewam że są ustawione prawidłowo bo uart działa prawidłowo i po wyjęciu kwarca wszystko się zatrzymuje ;]

    Robiłem wczoraj jeszcze taki mały test z samym wyświetlaczem LCD, jedna pętla na delayu w kółko wysyłanie dwóch słów i też się zawiesi po jakimś czasie :( zakłócenia z zewnątrz ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 20 maja 2019, o 09:23 
    Offline
    Moderator
    Avatar użytkownika

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

    Grandes napisał(a):
    zakłócenia z zewnątrz ?

    Zestawy są na rynku od 2011 roku i sądzisz, że po prawie 10 latach jesteś pierwszą osobą u której działają jakieś zakłócenia zewnętrzne ?

    Pokaż lepiej ten swój kod testowy o którym napisałeś wyżej z tym LCD, i pokaż jakąś fotkę jak to wszystko podłączyłeś przewodami połączeniowymi - wtedy będzie można coś podpowiedzieć

    _________________
    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: 21 maja 2019, o 08:20 
    Offline
    Użytkownik

    Dołączył(a): 22 lis 2014
    Posty: 29
    Pomógł: 0

    Obrazek

    Siedziałem wczoraj wieczorem i męczyłem temat... usunąłem przewody i zapakowałem prosty program na 3 godziny w pętli dwa zdania i się nic nie zacięło- ( już się Pan Mirek śmieje :P )

    Zapakowałem Wielozadaniowca i pomału podłączałem przewody, Projekt zawiesił się w sumie 5 razy, Pierwszy raz po około 12 minutach, Przy każdym zawieszeniu odłączałem elementy:
    -odłączyłem kwarc - podłączyłem - brak poprawy
    -pilot nie reaguje wiec diodę odłączyłem - brak poprawy
    - piny RX tX - brak poprawy
    - przewody od przycisków i diod czy od przerwania - zero poprawy
    - wyciągnąłem LCD - brak poprawy
    - odpinam Pin PB0 - WSZYSTKO WRACA DO DZIAŁANIA :)

    Oczywiście na LCD krzaczki, ale poza tym wszystko działa :)

    Przez noc 8 godzin bez podłączonego pinu i wszystko działa :D

    Jak to wytłumaczyć ?

    //-------------------------------------------------------------------------------Edycja postu-----------------------------------------------------------------------------------------------------------
    Podłączyłem LCD pod port B bo mi zworki ładnie pasowały na porcie A :P



    Ostatnio edytowano 21 maja 2019, o 11:07 przez Grandes, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 maja 2019, o 09:41 
    Offline
    Moderator
    Avatar użytkownika

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

    A coś ty podłączył do całego PORTU B ???? czyżby wyświetlacz LCD ? ;) Ło matko - no toś sobie sam ZONK'a zrobił


    obejrzyj sobie to:



    i zapamiętaj na przyszłość - co i jak ;)

    Już nie wspomnę o tym, że w przykładzie w książce masz to inaczej podłączone - no ale tak to jest - zamiast sprawdzić tak jak w książce najpierw ;) to nie - "PO SWOJEMU" i nie działa i nie działa ....

    no trzeba wrócić wtedy do książki i porównać - samemu zacząłbyś dochodzić w czym rzecz

    _________________
    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: 27 maja 2019, o 16:32 
    Offline
    Użytkownik

    Dołączył(a): 22 lis 2014
    Posty: 29
    Pomógł: 0

    Zamieniłem port B z portem A tak jak szef kazał i robiłem testy. Niestety projekt zawieszał się co jakiś czas i pomagało odłączenie pinu PA0.
    Zmieniłem trochę kod:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Niestety nie pomogło :( Więc wyłączyłem dany kawałek zupełnie z kodu i projekt chodził dwa dni:)
    Trochę poczytałem o wyświetlaczu LCD w BB i okazało się że można Pin RW połączyć z masą i tak też zrobiłem;] Jak dotąd druga doba leci bez zawieszania :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 maja 2019, o 16:34 
    Offline
    Moderator
    Avatar użytkownika

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

    Panie to rozwiąż pierwszy problem - bo jazda z pinem RW podłączonym do GND to prośba o kłopoty na własne życzenie

    _________________
    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  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 45 ]  Przejdź na stronę Poprzednia strona  1, 2

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


    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