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

Bascom 8051: Dlaczego 1-Wire DS1820 nie działa przy 24MHz?

pch 02 Lis 2004 21:02 1668 11
REKLAMA
  • #1 956329
    pch
    Poziom 16  
    Posty: 213
    Pomógł: 5
    Ocena: 168
    Jeżeli było to poruszane to przepraszam. Szukałem w archiwum ale nie znalazłem. Gdzieś obiło mi się o uszy, że instrukcje w Bascomie dla 8051 są napisane dla częstotliwości procesora zbliżonych do 12MHz. Czy to prawda? Jeżeli nie to dlaczego ta sama procedura na 12MHz działa a na 24MHz nie. Mam wrażenie, że w ogóle nie ma komunikacji z termometrami ds1820.

    Pozdrawiam
    PC
  • REKLAMA
  • #2 956351
    mzielin
    Poziom 22  
    Posty: 483
    Pomógł: 31
    Ocena: 16
    Prawdopodobnie właśnie dlatego nie działa....
    Ktoś tu kiedyś napisał, że wróżek nie ma, bo je wcześniej spalili na stosie. Ale jakbyś poanalizował zależności czasowe, to ko wie ...
  • REKLAMA
  • #3 956462
    lopr_pol
    Poziom 32  
    Posty: 1717
    Pomógł: 163
    Ocena: 489
    Moze nie podajesz parametru czestotl. kwarca w zrodle ? Mi ds'y dzialaja na 4, 10 jak i 20 MHz kwarcach.
  • REKLAMA
  • #4 956506
    Walderama
    Poziom 12  
    Posty: 84
    Ocena: 5
    Bascom 8051 ma ten blad pisalem juz kiedys o tym do Marka Albertsa. Wie o tym problemie jak kiedys wyjdzie nowszy bascom to powienien miec to poprawione. 1wire dziala dobrze do kwarcu 22MHz przy 24 nie dzila nie wiem jak z wiekszymi nie probowalem. Ale sadze ze to problem od 24 wzwyz
  • #5 958641
    Kwiatek X
    Poziom 12  
    Posty: 61
    Pomógł: 1
    Ocena: 2
    instrukcja $crystal=........ zmienia ustawienia kompilatora tak, by chodziło z podaną przez ciebie częstotliwością . Na 24MHz nie próbowałem ale na 16 było bez problemu
  • #6 958699
    pch
    Poziom 16  
    Posty: 213
    Pomógł: 5
    Ocena: 168
    Oczywiście mam 24MHz ustawione ale to niczego nie zmienia. 1wire nie działa z takim rezonatorem.

    Pozdrawiam
    PC
  • #7 961968
    mzielin
    Poziom 22  
    Posty: 483
    Pomógł: 31
    Ocena: 16
    Pewnie licznik odliczający opóżnienia jest np: 1-bajtowy i procedura za szybko się kończy.
    A żaden z Was nie próbował zanalizować tego na symulatorze, lub podejrzeć asm'a ?.
  • #8 961998
    pch
    Poziom 16  
    Posty: 213
    Pomógł: 5
    Ocena: 168
    ja robiłem disasemblację ale nie znam na tyle asemblera, żeby dopatrzyć się przyczyny. porównywałem kod dla różnych wartości $crystal ale do żadnych wniosków nie doszedłem.

    PC
  • REKLAMA
  • #9 962325
    DosinskY
    Poziom 19  
    Posty: 332
    Pomógł: 24
    Ocena: 9
    Jeden z odpwiadajacych powyzej napisal Wam przeciez ze jest to blad w Bascomie, wiec po co sie dalej glowicie ;) Jezeli koniecznie chcesz obsluzyc 1-wire na 24Mhz, to sproboj w asm. Jest to o wiele wiele prostsze niz by sie wydawalo i daje o wiele wiecej satysfakcji :) Polecam "'mikrokontrolery 8051 w praktyce" z wydawnictwa Helion, wszystko jest bardzo dokladnie i przystepnie wyjasnione. Jezeli nie masz dostepu a jestes zainteresowany, to napisz. wysle Ci procedurki albo najlepiej skan z ksiazki (w miare mozliwosci). Opis 1wire wraz z przykladowymi procedurkami zajmuje 3str A4, wiec nie bedzie z tym problemu. Do procedurek z ksiazki w Twoim przypadku wystarczy dolozyc dluzsze petle opozniajace(co nie powinno byc problemem, gdyz 1wire "nie narzuca bardzo silnych uwarunkowan czasowych"), pozmieniac troche rejestry tak, zeby Ci pasowalo i bedzie dzialac.

    Pozdrawiam

    --->dopisalem
    o jasny gwint..tak mi sie pomieszaly tytuly ksiazek ze nie jestem pewny tego co napisalem...sprawdze i poprawie sie wieczorem :sm11:
  • #10 962725
    pch
    Poziom 16  
    Posty: 213
    Pomógł: 5
    Ocena: 168
    jak juz wcześniej pisałem jestem z asemblerem na bakier ale sie uczę. problemem z 1wire przyznam się jestem trochę zaskoczony. więc gdybyś był tak miły to chętnie skorzystam z Twojej oferty. mój adres: pch"bez tego"@poczta.onet.pl

    pozdrawiam
    PC
  • #11 963092
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    pch napisał:
    ja robiłem disasemblację ale nie znam na tyle asemblera, żeby dopatrzyć się przyczyny. porównywałem kod dla różnych wartości $crystal ale do żadnych wniosków nie doszedłem.

    PC


    A to szkoda ,bo gdybyś dokładniej się przyjrzał(porównał pliki HEX) ,to zauważyłbyś niechybnie, że dla różnych wartości "crystal" kod wynikowy jest zawsze IDENTYCZNY.

    Pzdr.
    Piotrek Sz.
  • #12 963127
    pch
    Poziom 16  
    Posty: 213
    Pomógł: 5
    Ocena: 168
    zrobiłem błąd bo ogladałem kod całego programu. ma on ponad 10kB. nie przyszło mi do głowy, żeby skompilować tylko procedury 1wire.

    PC

Podsumowanie tematu

✨ Problem z komunikacją 1-Wire DS1820 przy częstotliwości procesora 24 MHz w Bascom 8051 wynika z błędu w kompilatorze Bascom, który jest zoptymalizowany pod kątem częstotliwości około 12 MHz. Procedury 1-Wire działają poprawnie przy 12 MHz i do około 22 MHz, ale przy 24 MHz i wyższych pojawiają się problemy z czasowaniem, co skutkuje brakiem komunikacji z termometrami DS1820. Ustawienie dyrektywy $crystal w Bascom nie rozwiązuje problemu, ponieważ kod wynikowy dla różnych wartości częstotliwości jest identyczny, co wskazuje na brak adaptacji opóźnień w procedurach 1-Wire. Przyczyną może być ograniczenie w liczniku opóźnień (np. 1-bajtowy licznik), który powoduje zbyt szybkie zakończenie procedury. Rozwiązaniem jest napisanie procedur 1-Wire w asemblerze, co pozwala na precyzyjne dostosowanie pętli opóźniających i poprawną obsługę protokołu przy wyższych częstotliwościach. Polecana literatura to „Mikrokontrolery 8051 w praktyce” z wydawnictwa Helion, zawierająca szczegółowe opisy i przykładowe procedury 1-Wire.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA