Fusing nie działa, dlaczego?

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
Awatar użytkownika
marcing
Użytkownik
Posty: 868
Rejestracja: 14 lut 2006, 14:13
Lokalizacja: z pociągu...
Kontakt:

Post autor: marcing » 15 lut 2010, 14:50

Polecenie FUSING działa dokładnie tak jak to jest wspomniane w HELP'ie
keruseykaryu pisze:Łoj. Jak widzę, to zagadka też jest dla Ciebie kolego Matrix.
Z tego helpa też korzystam choć są w nim błędy i pewne braki.
Dlaczego wypisuje Kolega głupoty oraz przy okazji obraża innych użytkowników?
Za powyższe oraz wprowadzanie w błąd - otrzymuje Kolega "nagrodę"...

keruseykaryu

Post autor: keruseykaryu » 15 lut 2010, 20:51

marcing pisze:Dlaczego wypisuje Kolega głupoty oraz przy okazji obraża innych użytkowników?
Za powyższe oraz wprowadzanie w błąd - otrzymuje Kolega "nagrodę"...
Łoj. Z tym obrażaniem to fakt. Ale spróbuję zmienić swoją naturę Doktora Doma. Posypuje głowę popiołem i o przebaczenie proszę.

Wracając do. Z pisaniem głupot niestety nie ma kolega racji, bo jak odpalimy takie o to arcydzieło programistyczne wszystko się wyjaśni w 3-miga. Mam nadzieję...

Kod: Zaznacz cały

Dim Przecinki As Single
Dim Ciag3 As String * 3
Dim Zmienna As Byte

Przecinki = 1.234567
Ciag3 = "123"
Zmienna = 100

Print "Przedtem:"
Print Przecinki
Print Ciag3
Print Zmienna
Ciag3 = Fusing(przecinki , "#.##")
Print "A teraz:"
Print Przecinki
Print Ciag3
Print Zmienna

End
Kto zgadnie, dlaczego w Zmienna nagle pojawiło się zero, skoro nic nie było jej robione? Oddam 100pkt (Jak je będę już miał :razz: ) kto dokładnie wyjaśni co się tu stało.
Koledzy, którzy uczestniczyli w dyspucie mają oczywiście pierwszeństwo.

Praktyka, praktyka i jeszcze raz praktyka... Ona prawdę ci powie.

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 15 lut 2010, 23:03

keruseykaryu pisze:Kto zgadnie, dlaczego w Zmienna nagle pojawiło się zero, skoro nic nie było jej robione?
przy konfiguracji owej zmiennej jako byte na chwilę obecną nie wiem jakim cudem od niej została odjęta liczba 232. przy wartości tej zmiennej czyli 100, musiało wyjść 0 bo zmienna byte nie może przyjąć wartości ujemnej.

natomiast niczego nie zmieni powiększenie tej zmiennej nawet do max czyli 255. i tak zostanie wpisane do niej 0.
tyle że...
nie wiem jak do końca to wyjaśnić, ale to musi być jakiś błąd softu, bo z tą zmienna tak naprawdę nic się nie dzieje. wystarczy zamiast do byte przypisać ją do single i widać że jak było 100 tak nadal jest 100 i nic się nie zmienia.

keruseykaryu

Post autor: keruseykaryu » 16 lut 2010, 6:44

matrix pisze:nie wiem jak do końca to wyjaśnić, ale to musi być jakiś błąd softu, bo z tą zmienna tak naprawdę nic się nie dzieje.
Łoj. Dzieje się. Niedobrze się dzieje.
matrix pisze:wystarczy zamiast do byte przypisać ją do single i widać że jak było 100 tak nadal jest 100 i nic się nie zmienia.
Nie ma tak łatwo, jedna jaskółka wiosny nie czyni.
Zmienia się. Daj Przecinek = 12.34567. Jaki wynik?

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 16 lut 2010, 9:46

keruseykaryu pisze:Nie ma tak łatwo, jedna jaskółka wiosny nie czyni.
Zmienia się. Daj Przecinek = 12.34567. Jaki wynik?
to może mi kolega wyjaśni zachowanie się tej zmiennej, bo ja raczej ułomny jestem i nie kumam.

Awatar użytkownika
timo66
Moderator
Posty: 1807
Rejestracja: 20 maja 2006, 19:15
Lokalizacja: 66'15" M.a.R.s.
Kontakt:

Post autor: timo66 » 16 lut 2010, 9:52

Witam
Obserwuje ten temat i głowa puchnie, kolego keruseykaryu to jest forum, żadna uczelnia, prelekcja, seminarium, czy inny wymysł. Chcesz się podzielić wiedzą to pisz , a nie nabijasz się z innych że wiesz więcej, przy okazji nabijasz posty i Ciebie mogą...


Ps: Co oznacza te
Łoj
czy to jest jakiś skrót?? W SJP jest tylko ŁÓJ czyżby koledze klawiatura się zacinała?

Awatar użytkownika
Pikczu
Użytkownik
Posty: 754
Rejestracja: 18 lip 2005, 18:33
Lokalizacja: Dublin
Kontakt:

Post autor: Pikczu » 16 lut 2010, 11:47

Witam w związku z tym ze jestem chory i znowu nie poszedłem do pracy miałem czas na test.
Koledze Łoj. keruseykaryu Przyznaje racje.
Do stringa w fusingu też zalicz się kropka. widać to robiąc podgląd zawartości pamięci SRAM.
Kolega Łoj. keruseykaryu zamiast unosić się mógł wytłumaczyć zagadnienie
JA PRZYZNAJE SIĘ DO BŁĘDU
Chciałem zaoszczędzić miejsce w pamięci.

Ten się nie myli, kto nic nie robi.

PS. kolejność zrzutów ekranu od dołu.

[ Dodano: 2010-02-16, 11:39 ]
W programie kolegi Matrix powyższy błąd nie zawiesza programu ale nadpisuje zawartość pierwszej komórki zmiennej LCDCOUNT
Załączniki
1.jpg
Zmienna przecinki zajmuje 4 komórki
2.jpg
String rezerwuje w pamięci zawsze o jedna komórkę więcej czyli tu od 04 do 07
3.jpg
Zmienna jako byte zajmuje jedną komórkę co widać pod numerem 08
4.jpg
Po fusingu kropka tez jest wpisywana do pamięci (hex02E) widać ją w komórce 05.
A tym samym reszta przesuwa sie o jedna stronę w prawo i nad pisuje zawartość następnej komórki w tym wypadku zmienna w komórce 08 i wpisuje tam 00 które jest zawsze na końcu

keruseykaryu

Post autor: keruseykaryu » 16 lut 2010, 20:02

Łoj. I to jest to o co chodziło: pomyślał, przeanalizował, będzie wiedział na przyszłość. 100pkt dla Pikczu.

Awatar użytkownika
marcing
Użytkownik
Posty: 868
Rejestracja: 14 lut 2006, 14:13
Lokalizacja: z pociągu...
Kontakt:

Post autor: marcing » 18 lut 2010, 14:24

keruseykaryu pisze:Łoj. I to jest to o co chodziło: pomyślał, przeanalizował, będzie wiedział na przyszłość. 100pkt dla Pikczu.
Ze swojej strony przepraszam Kolegę keruseykaryu za niezrozumienie sensu jego (ironicznych i złośliwych jednakże) postów.
Z tego też powodu decyzję zmieniłem... pomógł mi w tym przesłany na PW (oraz zamieszczony także i tu) listing.
Wytłumaczenie jest jedno - moderatorzy to też ludzie, poza Forum mają pracę i czasem mogą być zmęczeni :(

ODPOWIEDZ