Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[ATmega8][Bascom] Znikająca zmienna

elektor18 20 Paź 2011 18:03 1163 9
  • #1 20 Paź 2011 18:03
    elektor18
    Poziom 18  

    Witam
    Przy pomiarze dwóch napięć z przetwornika (jeden kanał reprezentuje napięcie, drugi prąd) i późniejszym wymnożeniu tych wielkości jako moc, zmienna ta znika kiedy zakres przekroczy ponad 10W, natomiast wartość prądu i napięcia pokazuje w całym zakresie. O co biega? Przekroczony zakres zmiennej? Teraz jest typu single.[/i][/u]

  • #3 20 Paź 2011 18:39
    M. S.
    Poziom 34  

    Jeśli możesz to unikaj zmiennych single. Przemnóż napięcie i prąd przez 10, 100, 1000 ... aby uzyskać wartość całkowitą, przemnóż, zmień otrzymaną wartość na string i sformatuj z przecinkiem we właściwym miejscu.

    Instrukcje:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

  • #4 21 Paź 2011 09:29
    elektor18
    Poziom 18  

    Kod poniżej:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Po przekroczeniu 10W na LCD pokazuje sie: "Pwej=[W]", brak zmiennej Pwej

  • #5 21 Paź 2011 10:35
    Mundi1970
    Poziom 24  

    Na początek zwiększyłbym stos ;) ($hwstack, $swstack i $framesize).

  • #6 22 Paź 2011 17:47
    elektor18
    Poziom 18  

    Zmieniłem te parametry stosu ale nic to nie dało. Wciąż powyżej danej wartości następuje zanik zmiennej.

  • #7 22 Paź 2011 18:04
    Mundi1970
    Poziom 24  

    Wygląda na to że któraś zmienna String jest za krótka i nadpisuje String Pwej.
    Uruchom w symulatorze ten programik to zrozumiesz o co mi chodzi :).

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

  • #8 22 Paź 2011 19:22
    elektor18
    Poziom 18  

    To nie to. To wygląda na LCD tak:
    - do 10W : "Pwej=10[W]"
    - powyżej 10W: "Pwej=[W]"

  • Pomocny post
    #9 22 Paź 2011 20:01
    Mundi1970
    Poziom 24  

    elektor18 napisał:
    - powyżej 10W: "Pwej=[W]"


    Tak będzie się wyświetlało jeżeli pierwszym bajtem zmiennej String Pwej będzie 0. Zero jest końcem łańcucha (dwie możliwości takiego błędu już podałem stos, albo nadpisanie przez inny łańcuch ;)). Nie piszesz też jaka wersja Bascoma to jest, może w którejś wersji był błąd z funkcją Fusing. Możesz podglądnąć co się dzieje z Pwej i wyświetlić w terminal lub na LCD. Jeżeli zmienna ma długość powiedzmy 5 bajtów to można zrobić to tak:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Przed zastosowaniem Fusing wyświetlić zmienną P1 i sprawdzić czy wynik poprawny.

  • #10 24 Paź 2011 23:08
    elektor18
    Poziom 18  

    Zmienna P1 pokazywana jest poprawnie. Postanowiłem dokonać zmian w programie, przenieść w dalszą część programu funkcję Fusing i pomogło, teraz wyświetla poprawnie. Tak czy siak na dobrą sprawę nie zostało zmienione, to chyba wina Bascom'a. Dziękuję za pomoc i zainteresowanie, nagroda +pomógł :)

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME