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 w 2025? 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 kwi 2025, o 03:26


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
    Autor Wiadomość
    PostNapisane: 22 cze 2014, o 20:23 
    Offline
    Nowy

    Dołączył(a): 20 cze 2014
    Posty: 6
    Pomógł: 0

    Witam


    Mój problem polega na tym, że zawsze miałem problemy z rzutowaniem zmiennych. W każdym razie na ta chwilę mam taki problem, że mam sobie Atmegę 32 i ona coś tam mierzy po ADC.
    Nie będę tutaj wklejał całego kodu z uC bo jego przeanlizowanie i wyciągnięcie najważniejszych rzeczy trochę by wam pewnie zajęło.
    W każdym razie dane z ADC ładuję sobie najpierw do zmiennej typu uint8_t (tylko starszą połówkę z rejestru ADC), a następnie przepakowuję to do tablicy typu char, która ma tam 2000 elementów. Jak zbiorę 2000 elementów to zatrzymuję ADC i uruchamiam USART - wypluwam te 2000 elementów na RS232. Jak odpalę realterm i przełączę terminal na odbieranie danych typu uint to wszystko działa. Dostaję na terminalu liczby z zakresu od 0 do 255, zależy co tam sobie mierzę.
    Chciałem teraz napisać aplikację na komputer, wybór z różnych względów padł na C# i visual studio. Projekt piszę pod net 4.0. W każdym razie odbieram te dane i nic się nie dzieje, z moim wykresem. Podejrzewam, że problem leży w tym, że odbieram pojedynczy bajt i zapisuje go do zmiennej typu int, przez co staje się to nieczytelne.
    przycisk uruchamiający pomiar:
    Składnia: [ Pobierz ] [ Ukryj ]
    język csharp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    metoda wyślij:

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


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


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


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


    oraz cały program jeśli ktoś by chciał zobaczyć:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język csharp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Jeżeli nie ten dział, czy formatowanie danych to proszę powiedzieć, to poprawię.

    Zmieniłem znaczniki syntax-C# na csharp :) - SunRiver



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 cze 2014, o 21:27 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Pomógł: 6

    Zrób konwersje z bajtu na string a później sobie to zamień jeśli potrzebujesz na inta
    o ile masz wartości liczbowe.

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


    Tylko pamiętaj to konwertuje z bajta na ascii.

    _________________
    Inspekcja TV kanalizacji
    Programowanie



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 cze 2014, o 22:14 
    Offline
    Nowy

    Dołączył(a): 20 cze 2014
    Posty: 6
    Pomógł: 0

    dzięki wielkie za pomoc. Twoje rozwiązanie wydaje się dobre, ale wydało mi się też czasochłonne. Przerobiłem więc program w atmedze, tak, że pomiar z ADC trafia do tablicy int i z tej tablicy po jednym elemencie jest wysyłany.
    Jednak problem jest ten sam. To znaczy program jak powyżej nie działa, a w realterm jak się przełącze na uint to pokazuje sensowne wyniki, to samo w HEX, reszta typów danych wywala jakieś śmieci, w tym int.
    Czy może w programie na procesor mam coś nie tak:
    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.


    Ewentualnie może nie rozumiem istoty problemu i popełniam jakis błąd u samych podstaw. Prosiłbym wtedy o wyprowadzenie z blędu (może być brutalne).



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 cze 2014, o 17:29 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Pomógł: 6

    Czemu nie wysyłasz próbek z adc bezpośrednio po uarcie od razu na PC?
    Strasznie motasz sam sobie i problem powstaje. Wysyłaj dane i rysuj wykres z tego i po sprawie.

    _________________
    Inspekcja TV kanalizacji
    Programowanie



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 cze 2014, o 19:35 
    Offline
    Nowy

    Dołączył(a): 20 cze 2014
    Posty: 6
    Pomógł: 0

    Miałem taki pomysł, ale bałem się, że jak puszczę ADC we free run mode i będę realizowal wysyłanie próbek po uarcie w przerwaniu ADC to że procesor nie zdąży wysłać próbki, a już dostanie kolejne przerwanie. Chociaż twój pomysł faktycznie jest prostszy. Nie wiedzieć czemu zawsze mam jakieś skłonności do komplikowania sobie życia. Spróbuję tak zrobić.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 cze 2014, o 22:30 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    Zawsze możesz zrobić uśrednianie wyniku ADC i dopiero takie uśrednione wartości puszczać przez UART ;)
    Plus tego taki że będą rzadziej wysyłane i przy okazji dokładniejsze :)



    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 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:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO