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

[BASCOM] - dokładność polecenia wait i waitus

bodd 15 Wrz 2009 07:46 2723 6
  • #1 7019052
    bodd
    Poziom 12  
    Witam.
    Mam takie pytanie.Ile trwa polecenie wait czy waitms (waitus) w Bascom.Rozumiem że w s ,ms i us.Ale jak ma sie do tego ustawienie sygnału taktującego. Czy to możliwe aby przy wewnętrznym oscylatorze te polecenia wykonywały sie dłużej?
  • #2 7019084
    PiotrPitucha
    Poziom 34  
    Witam
    Musisz zadeklarować w programie z jakim zegarem działa procesor a o resztę zadba kompilator, oczywiście stabilność tego czasu zależy od tego czy działasz na zewnętrznym kwarcu czy też używasz wewnętrznego oscylatora, ale ogólnie czasy są bardzo zbliżone do zadeklarowanych.
    Piotr

    Ps. oczywiście częstotliwość zegara wpisujesz w hercach poleceniem :

    $crystal = 8000000 
    tu przykład dla 8MHz
  • #3 7019093
    Wojtek75
    Poziom 24  
    W przypadku wewnętrznego taktowania niekoniecznie. I nie zapominajmy o odpowiednim ustawieniu fuse CKSEL3..0 dodam żeby była jasność.
  • #5 7019453
    Wojtek75
    Poziom 24  
    Niekoniecznie wewnętrzne taktowanie = taktowanie zewnętrznym rezonatorem (pod względem dokładności). Mam nadzieję, że teraz wyraziłem się jaśniej.
  • Pomocny post
    #6 7020417
    mirekk36
    Poziom 42  
    bodd --> daj sobie całkowicie spokój z porównywaniem jakiejś wyimaginowanej dokładności pomiędzy prockiem taktowanym zewn kwarcem a prockiem taktowanym wewn oscylatorem. Z twojego punktu widzenia jest to absolutnie nieistotne - a widzę, że wielu początkujacych po usłyszeniu BAJEK natury ogólej jakoby to -
    Cytat:
    "o wiele lepiej jest użyć kwarca zewnętrznego zamiast oscylatora wewnętrznego dzięki czemu procek będzie dokładniejszy"

    zaczyna na gwałt wyłączać fusebitami wewn.oscylator i dokłada o zgrozo zewn kwarce typu 1MHz, 4MHz czy 8MHz - co jest bzdurą!

    czy będziesz miał kwarc czy oscylator wewn. - to twoje polecenia WAITxx będą działały dla ciebie zawsze tak samo

    .................................

    a widać, że twoje pytanie rodzi się z tego, że nie przestawiłeś prawdopodobnie fusebitów w związku z czym procek taktowany jest fabrycznie (zwykle) częstotliwością 1MHz

    a ty podajesz sobie różne wartości $crystal i ze zdziwieniem obserwujesz że polecenie Wait 1 - raz trwa dokładnie sekundę a innym razem dłużej czy krócej

    ..... ustaw sobie fuskami taktowanie wewn. oscylem, procka na np 8MHz i daj $crystal = 8000000

    ustaw sobie fuskami taktowanie wewn. oscylem procka na np 4MHz i wtedy daj $crystal = 4000000

    rozumiesz teraz jak ma się do siebie ustawienie fusów i $crystal ?????

    bo jeśli np masz fabrycznie taktowanie procka 1MHz (nie ruszałeś fusów) a ty dajesz sobie np $crystal = 4000000 albo $crystal = 8000000 - to nie dziw się później że polecenie Wait 1 nie trwa u ciebie równo 1 sekundę

    teraz jaśniej ?
  • #7 7172093
    bodd
    Poziom 12  
    Witam.
    Faktycznie przekomponowałem z ustawieniami $crystal i fuse.Kombinując dalej wreszcie udało mi sie zablokować procka.Jednak ciesze sie z tego gdyż wreszcie musiałem poważnie podejść do rzeczy i zainteresować sie tymi ustawieniami.Teraz rozumiem że konieczna jest znajomość tych ustawień . Polecam przejrzyście opisane http://elportal.pl/index.php?module=ContentExpress&func=display&ceid=243.

    Dziekuje za pomoc.
REKLAMA