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 29 maja 2025, o 04:04


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
    Autor Wiadomość
    PostNapisane: 25 cze 2022, o 10:50 
    Offline
    Użytkownik

    Dołączył(a): 09 sty 2021
    Posty: 66
    Pomógł: 0

    Nie mogę odebrać całego stringa. Stworzyłem funkcje która ma zwrócić wskaźnik do początku tablicy a następnie ten wskaźnik przekazywany jest do funkcji wysyłającej cały string do komputera. Używam do tego 2 atmeg328P jedna wysyła string "hello\n\r" a druga go odbiera i przesyła do komputera. Na terminalu znaki wyświetlą się czasami poprawnie a czasami występuje np. podwojona litear 'l' albo 'o', innym razem string jest cały pocięty i do komputera dochodzą pierwsze 3 litery. Gdzie mam błąd mojej tej funkcji, bo funkcje nadającą string i odbierającą jeden znak brałem z blue booka.

    Kod atmegi nadajacej do komputera:
    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.


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


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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 cze 2022, o 10:58 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    Jakie taktowanie i czym, jaka prędkość transmisji?



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

    Dołączył(a): 09 sty 2021
    Posty: 66
    Pomógł: 0

    micky napisał(a):
    Jakie taktowanie i czym, jaka prędkość transmisji?

    16MHz zewnętrzny kwarc, prędkość 9600, ale tutaj raczej wszystko mam dobrze bo odbieranie i nadawanie pojedynczych znaków i nadawanie stringów działa idealnie.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 cze 2022, o 12:48 
    Offline
    Moderator
    Avatar użytkownika

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

    skoro masz w funkcji

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


    to jak myślisz co się stanie po ponownym wejściu do funkcji ? i znowu będzie =0

    więc co ci da w pętli while()

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


    że zwiększysz zmienną i ?

    _________________
    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: 25 cze 2022, o 23:09 
    Offline
    Użytkownik

    Dołączył(a): 09 sty 2021
    Posty: 66
    Pomógł: 0

    mirekk36 napisał(a):
    że zwiększysz zmienną i ?


    Mi właśnie o to chodzi, że jak wyjdę z funkcji to zmienna i = 0 tak że za każdym jej wywołaniem nie trzeba jej resetować. Operacja i++ ma zapisywać kolejny odebrany znak do tablicy result pod odpowiednim indeksem. Na końcu ta tablica ma być zwrócona.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 cze 2022, o 06:12 
    Offline
    Moderator
    Avatar użytkownika

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

    dobrze, sorki nie zauważyłem tego uart_getc(); w pętli

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

    a sprawdzałeś co zwraca uart_getc(); ? czy tam nie ma tak że jeśli nie dotrze żaden znak to zwraca zero ?

    _________________
    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: 26 cze 2022, o 09:20 
    Offline
    Użytkownik

    Dołączył(a): 09 sty 2021
    Posty: 66
    Pomógł: 0

    mirekk36 napisał(a):
    dobrze, sorki nie zauważyłem tego uart_getc(); w pętli

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

    a sprawdzałeś co zwraca uart_getc(); ? czy tam nie ma tak że jeśli nie dotrze żaden znak to zwraca zero ?


    Faktycznie nie zwróciłem uwagi. Kod lekko zmodyfikowałem i teraz działa prawie dobrze tylko program gubi mi pierwszą literkę. Co mogę z tym zrobić?

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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 cze 2022, o 23:05 
    Offline
    Moderator
    Avatar użytkownika

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

    antosV10 napisał(a):
    _delay_ms(1000);

    Nie ma co się dziwić że coś gubi skoro używasz TAK PASKUDNEGO DELAYA, wywal go w diabły.

    _________________
    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: 28 cze 2022, o 07:23 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 25 sty 2014
    Posty: 178
    Pomógł: 24

    Sprawdź czy po tej modyfikacji przy każdym wywołaniu funkcjia uart_get_string nie zwraca '\r'. Może wtedy dochodzić do nadpisywania wcześniej odebranych i wyświetlonych danych w terminalu.



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 10 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