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



Teraz jest 14 lis 2024, o 03:03


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 
Autor Wiadomość
PostNapisane: 25 lis 2012, o 23:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Witam, mam pytanie czy dobrze rozumiem funkcję do konwersacji na łańcuch tekstowy.
Otóż zakładając że mam do przekonwertowania liczbę -21 <=> (11101011)U2 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.

czyli int_to_str(-21,char *str,3,'0') w definicji funkcji :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Najpierw liczba -21 zostanie zamieniona na 21 , subzero=1, fw=2; (warunek if)
PIERWSZA PĘTLA do while(); wskaźnik *strp++=1 (reszta z dzielenia 21 przez 10) i zwiększony adres o 1 ( cyfra 1 pod adresem 0x01)
wartosć val =2 i fw=1
DRUGI OBIEG PĘTLI do while(); *strp++=2 (reszta z dzielenia 2 przez 10) i zwiększenie adresu o 1 (cyfra 2 pod adresem 0x02)
Wartość val=0 i fw=0
WYJŚCIE Z PĘTLI do while (fw>0);
wskaźnik *strp++ ='-'; ( znak minus do wskaźnika o adresie 0x03)
*strp=0; (zakończenie łańcucha, znak pusty/0 o adresie 0x00 - ?? )
I teraz w *strp mam adresy cyfr (/0,1,2,-) które należy odwrócić aby rezentowały liczbe -21 więc
strrev(str); - >(-,2,1,/0) - I czy teraz już jest łańcuch bo zakończone /0 ?

Kolejne moje pytanie skoro fw=3 to powinno mi się wyświetlić 21 (zamiast -21) bo jest jeszcze znak pusty /0 a skoro zamieniana jest liczba na łańcuch to czy trzeba uwzględniać w parametrze fw miejsce dla znaku pustego ??
Z góry bardzo dziękuję za pomoc



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2012, o 00:28 
Offline
Moderator
Avatar użytkownika

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

No oczywiście, że łańcuch - po to na końcu wpisuję zero ;)

*strp = 0;

donośnie drugiego pytania to musisz pan sobie KONIECZNIE ale to koniecznie otworzyć książkę i jeszcze raz poczytać o C-Stringach. ZERO nie jest żadnym znakiem pustym. Zero oznacz koniec stringa. KONIEC - żadnych więcej znaków.

Weź sobie zajrzyj pan do pierwszej lepsze funkcji z książki/DVD np

lcd_str()

uart_putstr()

i zobacz jak to jest robione - jak wykorzystywane jest to zero - przecież to żaden znak ;) i nigdy nie ma prawa się wyświetlić

_________________
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 lis 2012, o 00:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

No tak - problem w nazewnictwie oczywiście nie 0 ale znak - oznaczający koniec Stringa ale czy trzeba rezerwować dla niego miejsce w buforze ? Czy wyświetli mi się 20 czy -20 ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2012, o 00:40 
Offline
Moderator
Avatar użytkownika

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

kidcowboy napisał(a):
No tak - problem w nazewnictwie oczywiście nie 0 ale znak - oznaczający koniec Stringa ale czy trzeba rezerwować dla niego miejsce w buforze ? Czy wyświetli mi się 20 czy -20 ?


Ale kolega uparty ;) a zajrzeć do książki i od nowa poczytać o C-stringach to się nie chce hmmm ?? niedobrze

więc jeszcze raz

ZERO na końcu to nie żadne ZNAK oznaczający koniec stringa. To nie ZNAK. Więc jak możesz go brać pod uwagę jeśli chodzi o miejsce w wyświetlanym stringu ?

panie kochany, w książce akurat co jak co ale C-stringi są bardzo dobrze opisane a potem są setki przykładów aby je zrozumieć, dla przypomnienia pytanie do ciebie, ile poniższy string będzie liczył bajtów ????

Kod:
char tab[] = "forum";


no powiedz ?

_________________
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 lis 2012, o 00:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

5 przepraszam 6
czyli 5 na forum i 6-ty na koniec stringa.
Ale ok. poczytam "Koniecznie" jeszcze o tym :)
Dzięki Mirku



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2012, o 00:51 
Offline
Moderator
Avatar użytkownika

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

kidcowboy napisał(a):
5 przepraszam 6
czyli 5 na forum i 6-ty na koniec stringa.


hahaha no no dobre: 5 przepraszam 6 ;). I pamiętaj 6-ty jest na znak NULL czyli zero, bo jak piszesz "na koniec stringa" to za chwilę będziesz kojarzył że tam siedzi jakiś kolejny znak stringa ;) ... nie tam jest NULL/ZERO


kidcowboy napisał(a):
Ale ok. poczytam "Koniecznie" jeszcze o tym :)


oj tak


Autor postu otrzymał pochwałę

_________________
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 lis 2012, o 00:53 
Offline
Użytkownik
Avatar użytkownika

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

[f][o][r][u][m][NULL]

NULL == '\0'

Kiedyś miałem problem i utkwiło mi to w głowie - różnice pomiędzy C-Stringiem a znakiem:

'a' - znak ASCII pojedyńczy cudzysłów / zajętość pamięci [a]
"a" - C-String / zajętość pamięci [a][NULL]

_________________
www.iuvo.it - Automatyka Budynkowa



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2012, o 01:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Dobra , ok bo zaraz mnie tu na forum jak czarownicę spalicie :)
Na dowód że przeczytałem :
Łańcuch znakowy - jest ciągiem składającym się z jednego lub więcej znaków.
"czułem się jak pies na łańcuchu"
Znaki cudzysłowu nie jest częścią łańcucha.Informują one jedynie kompilator że to co się pomiędzy nimi znajduje jest łańcuchem - podobnie jak apostrofy sygnalizują stałą znakową.
Język C nie posiada specjalnego typu łańcuchowego. Zamiast tego łańcuchy są przechowywane w tablicach zbudowanych z elementów typu char.Kolejne znaki z których składa się łańcuch , znajdują się w kolejnych miejscach pamięci a tablica jest właśnie grupą sąsiadujących ze sobą miejsc w pamięci.
Czulem _sie_jak_pies_na_łańcuchu\0
Na ostatnim miejscu tablicy znajduje sie znak \0. jest to tzw. ZNAK ZEROWY(ang. null character)który w C służy do oznaczenia konca łańcucha. ZNAK ZEROWY NIE JEST CYFROĄ ZEROjest znakiem niedrukowalnym w kodzie ASCII równym 0. Oznacza to że tablica musi mieć długość przynajmniej o jedną komórkę większą niż długość zapisanego w niej łańcucha.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2012, o 09:15 
Offline
Moderator
Avatar użytkownika

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

Gwyn ty jak zwykle już widzę ;) nie przeczytasz ze zrozumieniem tego co piszę i mi porad udzielasz ;)

Jak już cytujesz to całe zdanie a nie to co ci wygodne:

mirekk36 napisał(a):
bo jak piszesz "na koniec stringa" to za chwilę będziesz kojarzył że tam siedzi jakiś kolejny znak stringa ;) ... nie tam jest NULL/ZERO



więc nic mi się nie wkradło, uczulałem tylko kolegę, że jak będzie pisał jak wyżej ("na koniec stringa") to później będzie wciąż kojarzył że tam siedzi kolejny znak stringa. Czytaj Gwyn dokładnie, czytaj ok ? ;)

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

kidcowboy --> nikogo nie palimy na forum, co najwyżej strącamy do Lochów, ale ostatnio nawet tam miejsca nie ma ;) Ale widać po tym co napisałeś, że teraz już przeczytałeś o C-Stringach ;) i fajnie. A naciskałem na to, bo to jest jeden z ważniejszych fundamentów języka C. Przy okazji wstęp do wskaźników.

_________________
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 lis 2012, o 09:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

A pro po wskaźników Mirku - gdzie wskaźnikówki ??? :) bo przydałyby się jakieś łamigłówki na początek tygodnia :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2012, o 13:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

A mam jeszcze takie pytanie gdzie można znaleźć informację o algorytmie filtru dolnoprzepustowego
np. takiego zastosowanego w książce ? - truje mnie to od rana
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 lis 2012, o 14:56 
Offline
Moderator
Avatar użytkownika

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

Nie wiem w jakiej książce :( .... nie pamiętam skąd to wiem już niestety :( ... ale na pewno mam w planach zrobić o tym poradnik na bloga ;)

_________________
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: 30 gru 2012, o 21:38 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

Witam!
Dopiero się uczę programowania wiec proszę o wyrozumiałość. Mam pytanie odnoście ustawiania na których nóżkach uP ma być dokonywany pomiar różnicowy. Korzystam z książki pana Mirka i jest tam takowy zapis
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Moje pytanie brzmi w jaki sposób patrząc na notę pdf Autor dokonał takiego zapisu? Pomiar jest na nóżkach ADC0 i ADC1 ze wzmicnieniem 20x



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2012, o 22:18 
Offline
Moderator
Avatar użytkownika

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

KBCH napisał(a):
Witam!
Dopiero się uczę programowania wiec proszę o wyrozumiałość. Mam pytanie odnoście ustawiania na których nóżkach uP ma być dokonywany pomiar różnicowy. Korzystam z książki pana Mirka i jest tam takowy zapis
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Moje pytanie brzmi w jaki sposób patrząc na notę pdf Autor dokonał takiego zapisu? Pomiar jest na nóżkach ADC0 i ADC1 ze wzmicnieniem 20x


Autor czyli niechcący ja dokonałem takiego wyboru na podstawie noty aplikacyjnej tyle że nie w procesorze ATmega32 bo ten ma kiepski ADC do takich celów niestety, ale na podstawie noty procesora ATtiny26 - sam zobacz ;)

Obrazek

teraz jaśniej ?

_________________
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: 30 gru 2012, o 22:29 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

Tak to jest jasne ale nie rozumiem skąd zapis
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

widzę że w pdfie jest 01011



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2012, o 22:36 
Offline
Moderator
Avatar użytkownika

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

KBCH napisał(a):
widzę że w pdfie jest 01011


A gdzie tam widzisz - właśnie widać że nie widzisz ;) .... przecież masz WYRAŹNIE jak BYK napisane że mowa o 4 najmłodszych bitach rejestru ADMUX - a 2 pozostałe to co AMBA ci zjadła ? ;) - weź że obejrzyj cały rejestr ADMUX w PDF'ie 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  
PostNapisane: 30 gru 2012, o 22:46 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

Teraz wiedzę że służą do 'podciągnięcia' wew. źródła odniesienia z zewnętrznym kondensatorem tzn w tym przypadku. Dzięki za podpowiedź



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2012, o 22:51 
Offline
Moderator
Avatar użytkownika

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

KBCH napisał(a):
Teraz wiedzę że służą do 'podciągnięcia' wew. źródła odniesienia z zewnętrznym kondensatorem tzn w tym przypadku. Dzięki za podpowiedź


Dokładnie - zawsze trzeba patrzeć na cały REJESTR - a w nocie pokazali oddzielnie opis tych 4 bitów żeby łatwiej było zobaczyć opcje za jakie one odpowiadają. Ale taki opis bitów poszczególnych czy grup bitów jest w całej nocie prawie do każdego rejestru ;)

_________________
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: 31 gru 2012, o 11:50 
Offline
Moderator
Avatar użytkownika

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

Antystatyczny napisał(a):
Odnośnie filtrów low pass, o które pytał kidcowboy:

Steven W. Smith - Cyfrowe przetwarzanie sygnałów. Praktyczny poradnik dla inżynierów i naukowców.

W książce tej opisany jest low pass i nie tylko. Generalnie świetna pozycja.:)


Mogę potwierdzić, wprawdzie mam mało czasu ostatnio na czytanie ale jak tylko się dorwę do niej na jakąś chwilę, to jak to się mówi "liżę jak pies chudy boczek" ;) hyhyhyhy

_________________
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: 31 gru 2012, o 14:51 
Offline
Moderator
Avatar użytkownika

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

GwynBleidD napisał(a):
Chciałem sobie dodać do zakładek link do tej książki w jakiejś e-księgarni, co by nie zapomnieć o niej. Googluję i pierwszy link: chomikuj.pl... No co z tym internetem się porobiło...


No niestety - ale ja też jestem książkofilem pod tym względem i dla mnie podstawa to prawdziwa książka w ręku a najlepiej jeszcze taki świeży zapach z drukarni ;) hyhyhy

_________________
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: 31 gru 2012, o 18:26 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

Panowie, zadam może dosyć dziwne pytanie. Jeżeli chciałbym dokonywać pomiaru różnicowego ze wzmocnieniem na adc0 i adc1 a zwykłego pomiaru napięcia na adc2 w tym samym czasie (miernik panelowy) w jaki sposób mogę ustawić bity ADMUX?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 gru 2012, o 18:29 
Offline
Moderator
Avatar użytkownika

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

KBCH napisał(a):
Panowie, zadam może dosyć dziwne pytanie. Jeżeli chciałbym dokonywać pomiaru różnicowego ze wzmocnieniem na adc0 i adc1 a zwykłego pomiaru napięcia na adc2 w tym samym czasie (miernik panelowy) w jaki sposób mogę ustawić bity ADMUX?


No musisz sobie przed każdym pomiarem przełączać ;) po to są te bity i kanały. Pomiar wielokanałowy sprowadza się właśnie do zmiany kanału przed pomiarem za pomocą ADMUX. Masz w książce przykład takiej małej funkcji aczkolwiek tam jest drobny błąd dla pomiarów wielokanałowych - dlatego spójrz do poprawki do kodu tutaj:

http://atnel.pl/uaktualnienia-programow-do-dvd.html

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: SylwekK 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