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



Teraz jest 30 sty 2025, o 21:35


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
Autor Wiadomość
PostNapisane: 1 sty 2014, o 20:05 
Offline
Użytkownik

Dołączył(a): 14 gru 2013
Posty: 41
Pomógł: 0

Cześć, mam problem z wysyłaniem wartości pomiaru do komputera. Chciałbym, aby po każdym pomiarze, wyświetlała się wartość pomiaru np. w terminalu putty, niestety za każdym razem pojawiają mi się litery W oraz S zamiast wartości. Wiecie w czym jest problem?

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: 1 sty 2014, o 20:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

Funkcja transmit(unsigned char data) wysyła Ci znak, jeden znak char. Ty przekazujesz do funkcji zmienną uint16_t adc.

------------------------ [ Dodano po: 14 minutach ]

Aby wysłać liczbę, możesz ją najpierw zamienić na C-string, tu możesz skorzystać z funkcji itoa. Jak będziesz już miał tablicę C-string to wysyłasz, komórka po komórce...

Na podstawie funkcji którą masz możesz napisać funkcję transmit_string(char *string)

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2014, o 20:53 
Offline
Użytkownik

Dołączył(a): 14 gru 2013
Posty: 41
Pomógł: 0

dodałem funkcję itoa, niestety znów zamiast pomiarów mam literki 'W'
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: 1 sty 2014, o 21:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 lut 2013
Posty: 600
Pomógł: 47

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


a cały kod znajdziesz w poradniku o adc
http://mirekk36.blogspot.com/2013/07/pr ... sc-05.html

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

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

_________________
https://www.instagram.com/myfirstquadcopter/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2014, o 21:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

Idea jest taka:
1. Masz np liczbę
a=9634

2. Zamieniasz ja na C-String.
a_string=[9][6][3][4][/0]

3. Wysyłasz
transmit( a_string[0]); // wysyłąsz znak '9'
transmit( a_string[1]); // wysyłasz znak '6'
transmit( a_string[2]); // wysyłasz znak '3'
transmit( a_string[3]); // wysyłąsz znak '4'

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2014, o 21:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 24 mar 2012
Posty: 72
Pomógł: 5

http://cpp0x.pl/dokumentacja/standard-C/itoa/316

Odwołując się do linku powyżej, gdzie jest zmienna "wynik" ? i to chyba ona powinna zostać wysłana. A do tego zwróć uwagę na to, że do funkcji void transmit(unsigned char data) przekazywać powinno się zmienna jednobajtową, a Ty co tam przekazujesz?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2014, o 21:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

Do funkcji void transmit(unsigned char data) jest przekazywany znak char. Wynikiem funkcji itoa jest łańcuch C-string czyli tablica char. Czyli do funkcji void transmit(unsigned char data) mają być przekazane kolejne komórki tablicy.

Funkcje podane przez kolegę kurnachatka właśnie w taki sposób działają.

------------------------ [ Dodano po: 2 minutach ]

Odwołując się do linku, który podałeś to zobacz co jest wynikiem funkcji itoa -> char b[ 32 ];

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2014, o 21:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 24 mar 2012
Posty: 72
Pomógł: 5

Chciałem, żeby zwrócił uwagę na to co on przekazuje do funkcji transmit(). Po wykorzystaniu funkcji itoa wciąż przekazuje zmiena "adc" która jest 16 bitowa. To, że powstaje tablica znaków to już kolejna sprawa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2014, o 21:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

Zakłądając, że wynikiem pomiaru byłą by zawsze liczba 3 cyfrowa to można by to było zrobić w taki sposób;
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Chodziło mi aby krok po kroku wytłumaczyć :D

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

Ale jak już kolega kurnachatka podał gotowe funkcje wysłania zmiennej typu int na UART, więc chyba problem rozwiązany :)

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2014, o 21:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Witam

Nawet teraz jak poprawnie prześlesz zmienną adc to
i tak wynikiem będzie zero :)
Ponieważ nigdzie do niej nie
podstawiasz wartości rejestru ADC lub (ADCW)
i nie zapomnij o przeliczeniu ADC wartość pomiaru



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2014, o 21:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

W pętli while() podstawia???

adc = ADC*VREF/1024;

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2014, o 22:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

O sorry nie zauważyłem
Chyba po tym Sylwku jestem jeszcze zamroczony :D :D

Edit:

ale zobacz po zastosowaniu itoa w listingu z postu niżej
już nie podstawia :)



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

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

No faktycznie w linku niżej zjadło mu się ADC :D

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2014, o 22:47 
Offline
Użytkownik

Dołączył(a): 14 gru 2013
Posty: 41
Pomógł: 0

dobra, dzięki panowie



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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