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 9 lip 2025, o 19:12


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
    Autor Wiadomość
     Tytuł: ADC i UART
    PostNapisane: 14 lis 2012, o 20:39 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 25 maja 2012
    Posty: 296
    Lokalizacja: Chebzie Dolne
    Zbananowany użytkownik

    Pomógł: 6

    Witam!
    Chciałem w ramach ćwiczeń wykonać pomiar napięcia na jednym zestawie ATB i wysłać wartość pomiaru na drugi w postaci stringa przez UART. Zmierzyć napięcie się udało i wyświetlam wartość 8 bitową na lcd.
    Problem polega na tym, że nie bardzo wiem jak przekonwertować wartość którą zwraca funkcja pomiar() z ćwiczenia o ADC i wysłać ją na uart w postaci stringa.
    Kodu nie będę przedstawiał do ADC bo każdy go ma.

    _________________
    Inspekcja TV kanalizacji
    Programowanie



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: ADC i UART
    PostNapisane: 14 lis 2012, o 20:48 
    Offline
    Moderator
    Avatar użytkownika

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

    taaaaaaak no bardzo ciekawe - a nie przeglądałeś rozumiem pliku nagłówkowego ueart.h żeby sobie zobaczyć jakie masz do dyspozycji funkcje ????

    po drugie w pierwszej książce - nawet w rozdziale o LCD z którego korzystasz nie masz opisanej metody zamiany liczb na stringi?

    po trzecie w pierwszej książce w rozdziale o ADC i kodach na DVD nie ma ANI SŁOWA o zamianie liczb na stringi ?

    no to ciekawe w ogóle jak wysłałeś stringa na LCD ???? może warto jednak się tym zainteresować hmmmm ;)

    bo inaczej to załóż wątek w dziale "RYBNYM", tylko trochę może wstyd jeśli aż tyle przykładów masz i to pod ręką i to z nich korzystasz ;)

    więc popatrz jeszcze raz, rozejrzyj się - i wtedy zapytaj o jakieś szczegóły ok?

    _________________
    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  
     Tytuł: Re: ADC i UART
    PostNapisane: 14 lis 2012, o 21:16 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 25 maja 2012
    Posty: 296
    Lokalizacja: Chebzie Dolne
    Zbananowany użytkownik

    Pomógł: 6

    Dobrze już wiem:)
    Ale jak teraz na podstawie komend AT rozpoznać to co wysyłam czyli wartość którą zwraca funkcja pomiar().

    wysyłam coś takiego:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    To w odbiorniku jeśli odbiorę komendę AT+LED2=1 to włączam diodę. A co zrobić z:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    ??

    _________________
    Inspekcja TV kanalizacji
    Programowanie



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: ADC i UART
    PostNapisane: 14 lis 2012, o 21:42 
    Offline
    Moderator
    Avatar użytkownika

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

    A co nie możesz sobie zrobić polecenia

    AT+ADC=x

    i zamiast tego x wysłać wartość ASCII pomiaru ? a po drugiej stronie rozpoznać AT+ADC i odczytać wartość x ?

    ------------------------ [ Dodano po: 1 minucie ]

    tylko nie mów że nie wiesz jak to połączyć ? ;)

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    i proszę poszło ładnie do terminala

    AT+ADC=1023

    i na końcu znaki CR LF

    _________________
    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  
     Tytuł: Re: ADC i UART
    PostNapisane: 15 lis 2012, o 20:40 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 25 maja 2012
    Posty: 296
    Lokalizacja: Chebzie Dolne
    Zbananowany użytkownik

    Pomógł: 6

    Wysłałem ładnie komendę AT+ADC oraz wartość pomiaru i wyświetliłem na LCD. Przekonwertowałem również tą wartość do postaci dziesiętnej i zapisałem w zmiennej g.
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Teraz mam pytanie, ponieważ wartość tą chcę wpisać do rejestru OCR0 i ustawiać pwm. Jak mam zwrócić tą wartość?
    Funkcja zwraca wartość uint8_t.

    _________________
    Inspekcja TV kanalizacji
    Programowanie



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: ADC i UART
    PostNapisane: 15 lis 2012, o 21:33 
    Offline
    Moderator
    Avatar użytkownika

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

    ja nie rozumiem twojego pytania :(

    _________________
    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  
     Tytuł: Re: ADC i UART
    PostNapisane: 15 lis 2012, o 21:36 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 25 maja 2012
    Posty: 296
    Lokalizacja: Chebzie Dolne
    Zbananowany użytkownik

    Pomógł: 6

    No odebrałem wartość 8-bitową z ADC, którą wcześniej wysłałem jak podpowiedziałeś. Teraz chciałbym ta wartość wpisać do rejestru OCR żeby zmieniać PWM.

    _________________
    Inspekcja TV kanalizacji
    Programowanie



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: ADC i UART
    PostNapisane: 15 lis 2012, o 21:47 
    Offline
    Moderator
    Avatar użytkownika

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

    :KONSTERNACJA:

    No napisałeś że odebrałeś wartość do zmiennej g, i teraz co to dla ciebie kłopot wpisać wartość g do OCR ???

    OCR = g;

    sorki ale albo nadal nie rozumiem albo ...... no troszkę skonsternowany jestem bo może kolega musi jednak poczytać jeszcze raz o całkowitych podstawach - pierwszą książkę - np rozdział na temat PWM ????

    _________________
    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  
     Tytuł: Re: ADC i UART
    PostNapisane: 15 lis 2012, o 22:16 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 25 maja 2012
    Posty: 296
    Lokalizacja: Chebzie Dolne
    Zbananowany użytkownik

    Pomógł: 6

    W taki sposób odebrałem i zapisałem.
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    g - dałem jako zmienna globalna.
    Teraz w main mam inicjalizację PWM i tam chciałem przypisać tą wartość z g, ale jak ją wyświetliłem na LCD to wywaliło 0 bo to zmienna globalna.
    Dlatego pytałem jak ją zwrócić i zapisać do OCR.

    _________________
    Inspekcja TV kanalizacji
    Programowanie



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: ADC i UART
    PostNapisane: 15 lis 2012, o 22:38 
    Offline
    Moderator
    Avatar użytkownika

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

    ależ ty kręcisz - matko :( .... czy nie możesz od samego początku raz a porządnie napisać o co chodzi ?? eeeeeh

    to po choinkę robisz zmienną globalną a jeszcze w funkcji zwracasz tą zmienną ?

    return g;

    :(

    toż wystarczyłoby

    return atoi(params);

    poza tym nadal w ogóle nie rozumiem do czego dążysz ??? no przecież ta funkcja nawet nie musi zwracać żadnego rezultatu - od razu możesz w niej zapisać do OCR

    OCR = atoi(params);

    .........aaaa w ogóle gorzej - teraz dopiero widzę, że ty próbujesz stosować mechanizm z 2-giej książki, z tymi funkcjami typu _service .... bo tak mi nie pasował coś typ rezultatu int8_t a ty zwracałeś przecież OCR typ uint8_t

    innymi słowy mówiąc nie doczytałeś na jakiej zasadzie ja akurat napisałem te funkcje i co dają nam rezultaty przez nie zwracane - one nie mają nic wspólnego przecież z tym co otrzymujemy jako string eeeeh no to namieszałeś teraz ;)

    powiem inaczej - wróć do tego rozdziału, spróbuj DOKŁADNIE przeanalizować te funkcje co one robią i jak działają a jak będziesz miał pytania to dopytaj - bo widzę, że próbujesz całkowicie po omacku coś w nich zmienić, ale bez wiedzy jak to działa - jak sam widzisz nie udaje się.

    _________________
    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  
     Tytuł: Re: ADC i UART
    PostNapisane: 22 lis 2012, o 20:15 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 25 maja 2012
    Posty: 296
    Lokalizacja: Chebzie Dolne
    Zbananowany użytkownik

    Pomógł: 6

    Witam!
    Poczytałem rozdział według zaleceń.
    Generalnie temat trudny dla mnie za to idea komend AT świetna.
    Więc do rzeczy.
    Zrobiłem funkcję at_adc_service() według schematu. Pobiera ona wartości od 0 do 255, żeby być pewnym to wewnątrz funkcji
    wyświetlam wartość na LCD.
    Do funkcji przekazywane są argumenty 0,1,2 tak pisze w książce.
    A ja nie mam pojęcia jak zwrócić sobie wartość argumentu komendy AT+ADC = x i zapisać ją do rejestru OCR.

    _________________
    Inspekcja TV kanalizacji
    Programowanie



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: ADC i UART
    PostNapisane: 22 lis 2012, o 20:38 
    Offline
    Moderator
    Avatar użytkownika

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

    No ale już wyżej pisałem jeśli wczytasz odebrany x do zmiennej albo nawet po co do zmiennej to w tej funkcji obsługi komendy AT - wpisujesz sobie

    OCRA = x;

    w czym problem ? oczywiście uprzednio zamieniając ciąg znaków ASCII na liczbę za pomocą wbudowanej funkcji itoa(). Możesz zajrzeć np do funkcji lcd_int() z pierwszej książki w rozdziale o LCD

    albo do funkcji uart_putint() z rozdziału o UART ???

    _________________
    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  
     Tytuł: Re: ADC i UART
    PostNapisane: 22 lis 2012, o 20:43 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 25 maja 2012
    Posty: 296
    Lokalizacja: Chebzie Dolne
    Zbananowany użytkownik

    Pomógł: 6

    Czyli mam inicjalizację PWM-a zrobić w tej funkcji at_adc_service()?????? - jak to tak zrozumiałem!

    _________________
    Inspekcja TV kanalizacji
    Programowanie



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: ADC i UART
    PostNapisane: 22 lis 2012, o 20:49 
    Offline
    Moderator
    Avatar użytkownika

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

    No a co chcesz innego zrobić - bo już kompletnie cię nie rozumiem ? :(

    Najpierw piszesz że chcesz odebrać wartość PWM i ustawić zgodnie z nią PWM w procku - podaję ci jak - a ty teraz pytasz jeszcze raz czy w ten sposób ? ... a może tobie o jeszcze coś innego chodzi ?

    _________________
    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  
     Tytuł: Re: ADC i UART
    PostNapisane: 22 lis 2012, o 20:55 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 25 maja 2012
    Posty: 296
    Lokalizacja: Chebzie Dolne
    Zbananowany użytkownik

    Pomógł: 6

    Nie nie - generalnie myślałem na początku całkiem inaczej. Po prostu traktowałem tę funkcję jak "zwykłą" zwrócę sobie wartość tą np: x i zapisze do do rejestru OCR. A inicjalizacje zrobię w pliku main.c. I tutaj zgłupiałem całkowicie w tedy.
    Czyli robię tak.
    Odbieram komendę AT i argument tej komendy zapisuję do zmiennej x. Wartość tej zmiennej zamieniam na wartość dziesiętną bo taką potrzebuję i w tej samej funkcji inicjalizuje PWM i zapisuje do OCR=x.

    _________________
    Inspekcja TV kanalizacji
    Programowanie



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: ADC i UART
    PostNapisane: 22 lis 2012, o 21:18 
    Offline
    Moderator
    Avatar użytkownika

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

    No dokładnie tak - i weź sobie przeanalizuj co po co jest rezultat tej funkcji ??? przecież wg opisanej koncepcji on NIGDY nie mógłby posłużyć do zwrotu tego co zostało odebrane :(

    ------------------------ [ Dodano po: kilkunastu sekundach ]

    zresztą masz przecież przykłady tych różnych funkcji i przecież jak na dłoni widać w nich, że odbierane parametry są od razu ustawiane właśnie w środku tychże funkcji.

    _________________
    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  
     Tytuł: Re: ADC i UART
    PostNapisane: 22 lis 2012, o 21:26 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 25 maja 2012
    Posty: 296
    Lokalizacja: Chebzie Dolne
    Zbananowany użytkownik

    Pomógł: 6

    Jeszcze długo będe siedział nad tym rozdziałem zanim go rozkminie całkowicie.
    Ale narazie wszystko super działa. Pozostaje mi jeszcze zrobić wysyłanie danych z płytki slave ATB i będe miał w pełni zrobioną komunikacje w obie strony za pomoca komend AT:)

    Dzięki Mirku za pomoc!

    _________________
    Inspekcja TV kanalizacji
    Programowanie



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: ADC i UART
    PostNapisane: 25 lis 2012, o 16:24 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 25 maja 2012
    Posty: 296
    Lokalizacja: Chebzie Dolne
    Zbananowany użytkownik

    Pomógł: 6

    Witam!
    Ciąg dalszy zmagania się z komendami AT:)
    Napisałem program, który wysyła komendy AT(po wbiciu przycisku) z jednego zestawu ATB do innego. Generalnie na razie jak pisałem we wcześniejszym wątku wysyłam wartość z przetwornika adc i komendę obrotu silnikiem w prawo i w lewo, a jeśli przycisk nie wciśnięty to komendę stop.
    Problem polega na tym, że w lewo kręci się fajnie a w prawo przerywa w takt odebranej komendy (widać to na wyświetlaczu lcd, gdzie komendy sa wyświetlane).
    Problem jest gdzieś w instrukcjach warunkowych sprawdzających przycisk.

    Funkcje sprawdzające stan przycisku i wysyłające komendy:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Funkcje wywoływane dla konkretnej komendy AT w drugim zestawie:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    ------------------------ [ Dodano po: 29 minutach ]

    Ok już sobie poradziłem. Przerobiłem ify na switch case i jakoś się odnalazłem:)

    _________________
    Inspekcja TV kanalizacji
    Programowanie



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