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



Teraz jest 4 gru 2024, o 09:13


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
Autor Wiadomość
PostNapisane: 14 paź 2021, o 18:34 
Offline
Użytkownik

Dołączył(a): 25 lip 2021
Posty: 93
Pomógł: 0

Hej, wlasnie jestem przy uart i buforze cyklicznym. Mam kod z książki do odbierania i wysylania danych. Tylko mam problem jak obsłużyć odbieranie danych. Przy wysylaniu korzystam z funkcji uart_putc lub puts, tylko jak z odbiorem? Gdy zdefiniuje sobie zmienna na te dane i zrobie data = uart_getc();
no to żaden warunek nie jest spełniony, nic sie nie dzieje. Gdy robię tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


program dziwnie się zachowuje.Delaya dalem, żeby to lepiej zobaczyć. Gdy kliknę '1' to zapali sie dioda na PB0, gdy klikne '2' to zgasnie PB0, zapali się PB1, ale ona za chwile zgaśnie i zapali się znow PB0. Dopiero gdy drugi raz kliknę '2' to zapali się na stałe PB1, a PB0 zgasnie. Żeby to działało, muszę przytrzymać trochę klawisz na klawiaturze. Pewnie czegoś tu nie do konca zrozumiałem i stąd moje problemy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 paź 2021, o 18:50 
Offline
Użytkownik

Dołączył(a): 05 sty 2015
Posty: 393
Lokalizacja: Mielec
Pomógł: 14

Hej,
Dzieje się tak dlatego że nie zagladnoles do biblioteki i do funkcji odbioru danych,

Gdy bufor jest pusty to funkcja zwraca znak że jest pusty bufor. Zagladnij jaki to znak do funkcji i go wyklucz, a delay'a wyrzuć.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 paź 2021, o 19:04 
Offline
Użytkownik

Dołączył(a): 25 lip 2021
Posty: 93
Pomógł: 0

Do biblioteki zaglądałem, w funkcji odbioru jesli Head == tail to funkcja zwraca 0, zadnego innego znaku nie widze, zeby zwracala inny znak. Nawet gdy zakomentuje tą linijke to jest to samo.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 paź 2021, o 19:05 
Offline
Moderator
Avatar użytkownika

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

W Bluebooku skupiłem się przede wszystkim na wyjaśnieniu tak podstawowych mechanizmów jak buforowanie cykliczne i przerwania uart a także wysyłanie danych. Żeby dobrze organizować odbiór przydają się kolejne i ciut bardziej zaawansowane mechanizmy jak callbacki - a to już szeroko poruszam w drugiej książce czyli w Greenbooku i tam właśnie jest bardzo dokładnie to opisane i nawet biblioteka która pięknie pozwala odbierać stringi w oparciu o callbacki.

_________________
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: 14 paź 2021, o 19:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2019
Posty: 145
Pomógł: 37

Jeśli w użyciu jest bufor cykliczny to nie możesz czytać bezpośrednio z UDR. Dane odczytujesz z uart_getc. Oczywiście gdy wołasz tę funkcję gdy ring buffer jest pusty to zwrotnie otrzymujesz kod braku danych. Wtedy tę "daną" ignorujesz. A więc
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Think for yourself and question authority.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 paź 2021, o 19:10 
Offline
Użytkownik

Dołączył(a): 25 lip 2021
Posty: 93
Pomógł: 0

Eh, szkoda bo samo wysylanie danych to żadna frajda :D Ew to jakiegoś debugowania. Miałem małą wizje, że mogę za pomocą terminala sterować pracą urządzenia wysyłając odpowiednie znaki itp. Cóż, trzeba lecieć z rozdziałami do przodu

------------------------ [ Dodano po: 3 minutach ]

No początkowo tak myślałem właśnie, bo było to dla mnie nielogiczne żeby z UDR0 czytać, jak jest funkcja ale gdy zrobię tak :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

No to brak reakcji ze strony LED. Nie bardzo skumałem fofex o co chodzi z tym brakiem danych



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 paź 2021, o 19:39 
Offline
Moderator
Avatar użytkownika

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

Ale spokojnie i z tym co jest w BB też można zrobić odbiór tylko no siłą rzeczy bez callbacka trzeba więcej pokombinować i za każdym razem za każdym projektem rzeźbić sobie coś na daną potrzebę.

Wystarczy właśnie cały czas badać czy przyleciał ci NIE PUSTY znak ;) i odbierać do własnego buforka znaki które przylecą, reagować na enter na końcu linii itp - w czym problem ? ;)

_________________
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: 14 paź 2021, o 19:42 
Offline
Użytkownik

Dołączył(a): 25 lip 2021
Posty: 93
Pomógł: 0

Problem w tym że nie bardzo wiem jak to zorganizować w kodzie. Ok spróbuję sobie coś wykombinować



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 paź 2021, o 21:05 
Offline
Moderator
Avatar użytkownika

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

podpowiem, że już w dawnych czasach tu na forum pojawiały się dokładnie wręcz identyczne problemy ale też ludzie pokazywali po kilku postach jak doszli do rozwiązania. Tylko trzeba byłoby spróbować poszukać na forum. Mi na szybko nie udaje się teraz odszukać tych co najmniej kilku wątków - wręcz identycznych. Ale jakbym wpadł to dam znać.

_________________
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: 9 sty 2022, o 18:20 
Offline
Użytkownik

Dołączył(a): 25 lip 2021
Posty: 93
Pomógł: 0

Witam, chciałbym odświeżyć wątek ponieważ walczę z rozdziałami w BB, które mi sprawiały problemy, żeby przejść już do GB. Jeszcze raz wałkuje bufor cykliczny i myślę, że zasadę, jak te indeksy się przesuwają, maskowanie, mechanizm zapętlenia rozumiem. Próbuje ponownie podejść do tematu odbioru w najprostszej postaci tj pojedynczego znaku i ustawić w programie jakąś reakcje na to np: wyświetlenie tego na LCD. Analizowałem posty powyżej, próbowałem zareagować na to, kiedy funkcja zwraca 0, w momencie gdy oba indeksy są równe. Męczę się z tym już kilka godz i nie wiem gdzie popełniam błąd.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Samo przerwanie się wykonuje, chociaż na początku zapomniałem go włączyć. Używam atm328p.
Kod,który próbuje wykorzystać ponizej:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Nie mam niestety żadnej reakcji na LCD. Prosiłbym o naprowadzenie troszkę. Wiem, że kilka osób wcześniej się wypowiadało, jednak no dalej nie mogę tego ogarnąć.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2022, o 18:30 
Offline
Moderator
Avatar użytkownika

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

a kod bufora cyklicznego i przerwania - sam sobie pisałeś? czy działasz na przykładzie z książki - bo tak to nie wiadomo co tam masz

_________________
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: 9 sty 2022, o 18:31 
Offline
Użytkownik

Dołączył(a): 25 lip 2021
Posty: 93
Pomógł: 0

Oczywiście kod mam z bluebooka, jeśli Pan chcę, mogę podesłać na priv oba pliki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2022, o 18:32 
Offline
Moderator
Avatar użytkownika

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

nie nie - nic proszę nie przesyłać - przecież kto jak kto ale ja mam te kody ;) tylko ty nie napisałeś z której lekcji

_________________
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: 9 sty 2022, o 18:40 
Offline
Użytkownik

Dołączył(a): 25 lip 2021
Posty: 93
Pomógł: 0

Chodzi o lekcje buforowanie cykliczne, prosty odbiór danych.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2022, o 20:17 
Offline
Moderator
Avatar użytkownika

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

Panie kochany do książki są kody źródłowe - lekcje ponumerowane to o to pytam a nie czy np coś przepisałeś z książki.

_________________
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: 9 sty 2022, o 20:24 
Offline
Użytkownik

Dołączył(a): 25 lip 2021
Posty: 93
Pomógł: 0

No dobrze, czy ma Pan już wszystkie informacje, by ew udzielić jakieś porady? Bo już sam nie wiem co mam jeszcze napisać. Kod dosłownie skopiowałem z plików do BB. Dodatkowo musiałem w inicjalizacje dorzucić włączenie przerwania RX. I nic więcej nie robiłem. Jedyny problem to podejscie jak odebrać znak z terminala. Wrzuciłem kod kilka postów wyżej, który nie działa i zachodzę w głowę czemu. Chciałbym, aby ktoś naprowadzil dlaczego, gdzie mój błąd w rozumowaniu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2022, o 11:13 
Offline
Użytkownik

Dołączył(a): 25 lip 2021
Posty: 93
Pomógł: 0

Podbijam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2022, o 14:14 
Offline
Użytkownik

Dołączył(a): 25 lip 2021
Posty: 93
Pomógł: 0

Poradziłem sobie także temat do zamknięcia. Tak w roli ścisłości chodziło o lekcje nr 7 UART z Bluebooka. Nie ogarnąłem z początku o jaki numer lekcji chodzi.



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

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