Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

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

bodd 15 Sep 2009 07:46 2630 6
  • #1
    bodd
    Level 11  
    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
    PiotrPitucha
    Level 33  
    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 :

    Code:
    $crystal = 8000000 
    tu przykład dla 8MHz
  • #3
    Wojtek75
    Level 24  
    W przypadku wewnętrznego taktowania niekoniecznie. I nie zapominajmy o odpowiednim ustawieniu fuse CKSEL3..0 dodam żeby była jasność.
  • #5
    Wojtek75
    Level 24  
    Niekoniecznie wewnętrzne taktowanie = taktowanie zewnętrznym rezonatorem (pod względem dokładności). Mam nadzieję, że teraz wyraziłem się jaśniej.
  • Helpful post
    #6
    mirekk36
    Level 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 -
    Quote:
    "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
    bodd
    Level 11  
    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.