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
matrix
Użytkownik
Posty: 1805
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Fusing nie działa, dlaczego?

Post autor: matrix » 29 sty 2010, 11:27

napisałem sobie prosty kod do pomiaru napięć dwóch cel w pakiecie lipo.
kod wygląda tak:

Kod: Zaznacz cały


cela1 = 0
cela1 = getadc(0)
calypakiet = 0
calypakiet = getadc(1)
calypakiet = calypakiet + getadc(1)

napiecie1 = cela1 / korekta1
napiecie2 = calypakiet / korekta1
napiecie2 = napiecie2 - napiecie1

x = Fusing(napiecie1 , "#.##")
y = Fusing(napiecie2 , "#.##")


cela2 = calypakiet - cela1
cela1 = cela1 / korekta
cela2 = cela2 / korekta

  home
  lcd "cela1=" ; cela1
  lcd "cela2=" ; cela2

  locate 2 , 1
  lcd "UC1=" ; x
  locate 2 , 9
  lcd "UC2=" ; y

loop
i moje pytanie, dlaczego fusing nie działa? wyświetla mi wartość napięć 0V dla obu cel.

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

Post autor: Pikczu » 29 sty 2010, 21:21

dim napiecie1 as Single
dim napiecie2 as Single
dim x as string * 3
dim y as string * 3

musisz zadeklarować odpowiednio zmienne:
czyli zmienna z której robisz fusing musi być jako single

A zmienna która będzie przechowywać już prze konwertowane dane musi być zadeklarowana jako string.

keruseykaryu

Post autor: keruseykaryu » 13 lut 2010, 20:31

Pikczu pisze:dim x as string * 3
dim y as string * 3

musisz zadeklarować odpowiednio zmienne:
czyli zmienna z której robisz fusing musi być jako single
Łoj. Jak kolega ustawi x i y jako 3 znakowe to Fusing ładnie mu zawiesi program.

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

Post autor: matrix » 13 lut 2010, 20:34

keruseykaryu pisze:Łoj. Jak kolega ustawi x i y jako 3 znakowe to Fusing ładnie mu zawiesi program.
raczej nie. zrobiłem jak napisał Pikczu i ndziała ok.

keruseykaryu

Post autor: keruseykaryu » 13 lut 2010, 20:42

Łoj. Wiedz, że się to zemści. Gwarantuję.

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

Post autor: Pikczu » 13 lut 2010, 21:16

To podziel się wiedzą powiedz dla czego ma się zemścić, chętnie się dowiem i Matrix też.

keruseykaryu

Post autor: keruseykaryu » 13 lut 2010, 23:50

Łoj. Czemu od razu ta ironia?

"Dla czego?" Z doświadczenia to wiem. Dasz za mały ciąg to ci ta funkcja nadpisze RAM poza ciągiem. Jakie będą skutki? To się domyśl kolego.

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

Post autor: Pikczu » 14 lut 2010, 13:59

Przepraszam jeśli zabrzmiało ironicznie, nie miałem takie zamiaru.
Wybrałem string*3 bo używamy tylko 3 znaków, wiec sensownym (według mnie) było użycie miejsca tylko na 3 znaki.

keruseykaryu

Post autor: keruseykaryu » 14 lut 2010, 17:07

Łoj. To chyba kolega liczyć nie umie. A kropka?

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

Post autor: matrix » 14 lut 2010, 17:08

keruseykaryu pisze:To chyba kolega liczyć nie umie. A kropka?
w każdym razie działa dobrze.

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

Post autor: Pikczu » 14 lut 2010, 18:00

kropka jet tam kropką i nie wchodzi w skład liczą się tylko te hash-e # więc są tylko 3 znaki.

keruseykaryu

Post autor: keruseykaryu » 14 lut 2010, 18:50

Łoj. Pikczu jeszcze musisz się dużo naucyć. Najpierw logicznego myślenia.

Usunąłem dalszą część postu, ponieważ nie wnosi nic do dyskusji.

Lutownik
Ostatnio zmieniony 01 maja 2010, 23:00 przez keruseykaryu, łącznie zmieniany 1 raz.

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

Post autor: Pikczu » 14 lut 2010, 23:02

Ja się co dzień czegoś uczę.

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

Post autor: matrix » 14 lut 2010, 23:02

keruseykaryu pisze:Łoj. Pikczu jeszcze musisz się dużo naucyć. Najpierw logicznego myślenia.
nie chcę za nikim obstawać, bo jestem wdzięczny za wsszelkie podpowiedzi, ale chyba kolego keruseykaryu mylisz się. oto cytat z polskiego helpa:
Składnia:
rezultat = FUSING( zmienna , "maska" )
Maska jest ciągiem znaków, który musi zaczynać się od znaku # (hash). Po kropce należy umieścić tyle znaków #, ile ma pojawić się znaków po przecinku. Na przykład podanie maski jako "#.###" sformatuje liczbę do postaci 123.456
(c) Zbigniew Gibek, 2002-2005 (c) MCS Electronics, 1999-2005
więc jasno widać że przecinek nie wlicza się. tym bardziej że jest pomiędzy znakami #.

keruseykaryu

Post autor: keruseykaryu » 15 lut 2010, 6:43

Ł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.

Obaj nie potraficie rozróżnić: maska a rezultat. Może teraz Was oświeci... :idea:

ODPOWIEDZ