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



Teraz jest 28 mar 2024, o 17:23


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: 1146
Lokalizacja: Kraków
Pomógł: 93

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: 1146
Lokalizacja: Kraków
Pomógł: 93

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: 2561
Pomógł: 126

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: 27212
Lokalizacja: Szczecin
Pomógł: 1041

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: 27212
Lokalizacja: Szczecin
Pomógł: 1041

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: 27212
Lokalizacja: Szczecin
Pomógł: 1041

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: 27212
Lokalizacja: Szczecin
Pomógł: 1041

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