logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Optymalizacja kodu BASCOM dla DS18B20 na 90s2313 w 2 kB z wyświetlaniem LCD

marslod 22 Cze 2006 11:04 2004 6
REKLAMA
  • #1 2752755
    marslod
    Poziom 15  
    Posty: 203
    Ocena: 1
    WItajcie

    Czy jest szansa, by w 2 kB 90s2313 zmieścić obsługę DS18B20 wraz z obliczeniami by uzyskać na LCD temperaturę z wartościami po przecinku. Walczę z optymaliacją programu i wszystko łacznie z LCD i komunikacją sie mieści, ale gdy dodam operacje obliczania temperatury to zawsze wychodzi mi ponad 2 kB.

    Jak do procedury DS18B20 i na jakich zmiennych najlepiej zrobić obliczenia by mieć wynik x.xx C i zmieścić kod


    1wreset 'podprogram 1wr
    1wwrite &HCC 'komenda skip ROM
    1wwrite &H44
    'komenda convert T
    Waitms 500

    1wreset 'podprogram 1wr
    1wwrite &HCC 'komenda skip ROM
    1wwrite &HBE 'komenda read

    B1 = 1wread()
    'odczyt z termometru
    B2 = 1wread()

    dzieki
    Marcin
  • REKLAMA
  • Pomocny post
    #2 2754753
    1004kw
    Poziom 15  
    Posty: 142
    Pomógł: 6
    Ocena: 11
    Witam... Jesli moge w czyms pomoc... Dorzucam programik z wlasnego termometru. Wprawdzie wykorzystuje DS1820, ale latwo przerobic go na DS18B20 - przykladowe procedury i kody mozna znalezc na www.mcselec.com - bylo to na pewno. Mam nadzieje, ze przyda Ci sie...
    Pozdrawiam.
    Załączniki:
    • termometr.rar (1.19 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #3 2965418
    kundzios
    Poziom 19  
    Posty: 401
    Pomógł: 20
    Ocena: 42
    Najnowsza wersja Bascom AVR Demo ma 4kB, sciągnij sobie.
  • REKLAMA
  • #4 2971130
    marslod
    Poziom 15  
    Posty: 203
    Ocena: 1
    ale procesor 90s2313 ma 2 kB i nic na to nowy bascom nie poradzi :)

    Marcin
  • Pomocny post
    #5 2971990
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 51
    marslod napisał:
    WItajcie
    Czy jest szansa, by w 2 kB 90s2313 zmieścić obsługę DS18B20 wraz z obliczeniami by uzyskać na LCD temperaturę z wartościami po przecinku.


    
    $regfile = "2313def.dat"
    $crystal = 16000000
    Config 1wire = Portb.0
    Dim T As Integer , Stt As String * 6
    Cls
    Do
       1wreset
       1wwrite &HCC
       1wwrite &H44
       Waitms 800
       1wreset
       1wwrite &HCC
       1wwrite &HBE
       T = 1wread(2)
       T = T * 10
       T = T / 16
       Stt = Str(t)
       Stt = Format(stt , " 0.0")
       Home
       Lcd Stt;"   ";
    Loop
    

    Zajętość flash'a <1360 B
  • REKLAMA
  • #6 2972137
    kundzios
    Poziom 19  
    Posty: 401
    Pomógł: 20
    Ocena: 42
    Tez prawda:) nie pomyślałem o tym:).

    Spróboj usunąć podprogram 1wr może to pomoże w zmniejszeniu objętości.
    I tak ten podprogram to tylko 1wreset to po co z tego robić podprogram? Lepiej od razu wpisać 1wreset moze z podprogramem mniej miejsca zajmuje ale nie sądze.

    Maksymalny czas odczytu temperatury to 750ms, a nie jak napisaleś w swoim listingu.

    Kolega Zumek wpisał poprawne opóźnienie
  • #7 2984569
    marslod
    Poziom 15  
    Posty: 203
    Ocena: 1
    zumek dzięki bardzo, twoje rozwiązanie jest najbardziej ekonomiczne z tych wszystkich które próbowałem, zmieściłem się z wszystkim w 2016B super

    Marcin

Podsumowanie tematu

✨ Dyskusja dotyczy optymalizacji kodu w BASCOM dla mikrokontrolera AT90S2313 o pamięci 2 kB, mającego obsługiwać czujnik temperatury DS18B20 z wyświetlaniem wyniku na LCD z dokładnością do dwóch miejsc po przecinku. Autor zmaga się z ograniczeniami pamięci, gdy dołącza obliczenia temperatury. Zaproponowano wykorzystanie prostych i oszczędnych procedur komunikacji 1-wire, eliminację zbędnych podprogramów oraz stosowanie zmiennych całkowitych do obliczeń temperatury w formacie x.xx °C. Przykładowy kod pokazuje odczyt temperatury, przeliczenie jej na wartość dziesiętną i formatowanie do wyświetlenia na LCD, zajmując mniej niż 1360 bajtów pamięci flash. Zwrócono uwagę na poprawny czas konwersji temperatury (maksymalnie 750 ms). Ostatecznie autor potwierdza, że dzięki optymalizacji udało się zmieścić cały program w 2016 bajtach pamięci, co jest zgodne z ograniczeniami AT90S2313.
Wygenerowane przez model językowy.
REKLAMA