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



Teraz jest 29 mar 2024, o 14:24


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 15 kwi 2020, o 07:17 
Offline
Nowy

Dołączył(a): 21 paź 2015
Posty: 17
Pomógł: 0

witam, oglądałem poradnik jak zastosować bibliotekę do ładowarki Li_On ( bodajże)
i przeraziłem się wielce - funkcja sgetchar() jest blokująca i możemy "czekać do usranej ... wiadomo czego" jeżeli znak nie przyjdzie
jest co prawda taki myk dla tego urządzenia - w przerwaniu zgłaszanym przez ładowarkę zastosujemy timeout
albo czegoś nie rozumiem albo nieuważnie śledziłem poradnik > moje pytanie brzmi
chciałbym zastosować bibliotekę w dowolnym rozwiązaniu a do tego stworzyć jeszcze bufor cykliczny dla niej >> czy jest to w ogóle możliwe ?
chcę w dowolnym miejscu programu sprawdzać czy coś "przyszło"
pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2020, o 12:07 
Offline
Moderator
Avatar użytkownika

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

zbynio_k napisał(a):
chciałbym zastosować bibliotekę w dowolnym rozwiązaniu a do tego stworzyć jeszcze bufor cykliczny dla niej >> czy jest to w ogóle możliwe ?

Możliwe a kto ci zabroni stworzyć sobie taką bibliotekę ? ;)

zbynio_k napisał(a):
chcę w dowolnym miejscu programu sprawdzać czy coś "przyszło"

Jeśli chodzi o DigiLIONA to właśnie można w dowolnym miejscu i w poradniku pokazywałem jak to zrobić z użyciem przerwania zewnętrznego INT

_________________
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: 15 kwi 2020, o 13:22 
Offline
Nowy

Dołączył(a): 21 paź 2015
Posty: 17
Pomógł: 0

szanowny Mirku,
to chyba jakieś niedomówienie, ponieważ to DIGILion generuje przerwanie, gdzie jest wykorzystywany TimeOut
może jakiś przykład czy choć naprowadzenie jak to zrobić bez DigiLION'a
generować przerwanie / sprawdzanie (programowe) co 10 ms ?
nie mam pomysłu
pozdrawiam

edit - akurat używać będę m644 i obu uart'ów, więc i INT1 i INT0 mam zajęte



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2020, o 13:51 
Offline
Moderator
Avatar użytkownika

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

wiesz ale hmmm coś dziwnie piszesz - bo pisałeś o DigiLIONie to podpowiedziałem grzecznie jak to jest zrobione i był filmik na ten temat.

A to że ty chcesz wykorzystywać programowy UART w takiej najprostszej postaci i to bez użycia chociażby przerwania timera - jako pełny sprzętowy UART - no to już (nie obraź się ale twój problem) ... no trzeba troszkę jednak zrozumienia w to włożyć ... czy tego chcesz czy nie ... Soft Uart który ja przygotowałem jest absolutnie blokujący i nie zmienisz tego w żaden sposób, nie wiem po co w ogóle nawet dyskutować o tym. Jeśli masz tę bibliotekę to zajrzyj w jej kod źródłowy - dwie proste wstawki asemblerowe i to wszystko. Nie ma innej opcji w tym wypadku.

Owszem można zrobić jeszcze pośrednie rozwiązanie SoftUarta - żeby działało nieblokująco ale trzeba wykorzystać JEDEN TIMER sprzętowy do tego celu ... i jedno wejście przerwania zewnętrznego i taką bibliotekę też mam w planach - wtedy będzie nieblokujące ale znowu coś za coś - czyli (strata timera i jednego zewnętrznego INT'a)

a ty mi tu piszesz że używasz m644 i masz zajęte Int0 i Int1 ... ale znowu (nie obraź się) ale co to hmmm nie wiem jak to powiedzieć, żeby cię nie urazić bo nie o to mi chodzi - ale co to jakby mnie interesuje - jeśli ty nie starasz się zrozumieć jakby co to OZNACZA "soft uart" i jakie wynikają z tego ograniczenia. (nie piszę tego że co mnie to interesuje w złym znaczeniu tylko żeby uzmysłowić ci właśnie OGRANICZNIE programowych rozwiązań tego typu jeśli sam się w to nie zagłębiałeś)

Dlatego zamiast pisać że ty chcesz, to czy siamto - a wszystko masz zajęte - to weź że panie kochany sobie procka AVR z 4 UART'ami i będziesz miał po krzyku a na dodatek DUŻO więcej wejść sprzętowych INTx - np ATmega2560 i już ;)

Z drugiej strony nawet jak się ma 2 uarty sprzętowe jak w m644 to jak się dobrze przemyśli to często gdy trzeba tylko coś np wysyłać i krótkie informacje żeby na czas wysyłania np móc wyłączyć przerwania to idzie też to ogarnąć na zwykłym soft uarcie który wydałem do tej pory. Tak samo z odbieraniem - trzeba jakoś kombinować też jak to pokazałem na przykładzie digi liona....

Więc to jest może to niedomówienie o którym mówisz - albo - ... jest też taka możliwość, że ja jednak jakby nie rozumiem może o co tobie chodzi tak na prawdę i piszę to bez żadnej ironii - bo mam KUPĘ pracy na głowie, projekt ORANGEBOOK, setki maili i telefonów jednocześnie teraz ;)

_________________
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: 15 kwi 2020, o 16:45 
Offline
Nowy

Dołączył(a): 21 paź 2015
Posty: 17
Pomógł: 0

dziękuję za bardzo wyczerpującą odpowiedź i może w paru zdaniach wyjaśnię w czym problem
mój projekt potrzebuje 3ch uart'ów
1. DWIN II
2. WiFi
3. czujnik "smogu"

"widzę" dwa rozwiązania tematu - a może ktoś coś ? inne rozwiązanie
1. procek z 4ma uart'ami m2560 czy 1280 (ale ten raster na PCB PRZERAŻA :shock: )
2. wykorzystanie soft uart'a - zamiast INTx można użyć PCINTx, tylko timer'ów jest na "styk" ale
może z czegoś zrezygnuję

temat zakończony
:D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2020, o 17:26 
Offline
Moderator
Avatar użytkownika

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

O i teraz opis problemu i potrzeb to wyjaśniłeś jak na dłoni ...

ale jeśli potrzebujesz 3 pełnosprawnych UARTów to jednak tylko te procki z rastrem który cię przeraża ale z drugiej strony - nie obawiaj się tak bo to daje radę ładnie lutować z dobrym topnikiem to nawet byle lutownicą ;)

Z trzeciej strony jakbyś wziął np ATmega1284P to ona ma więcej np timerów

albo może wystarczyłaby ci ATmega328PB ??? dwa uarty i sporo PCINTów - tylko dużo mniej nóżek i to może mocno limitować jej zastosowanie u ciebie

_________________
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: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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