dlaczego wait nie odlicza prawidłowo czasu ?

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

dlaczego wait nie odlicza prawidłowo czasu ?

Post autor: matrix » 15 lis 2009, 7:41

wreszcie dzięki uprzejmości kolegi Pikczu (podziękował) mogłem zaprogramoać pierwszy w swoim życiu procek, ale.... o dziwo nie działa jak się spodziewałem. cały soft jest ok tylko nieprawidłowo działa polecenie wait. nie odlicza czasu w prawidłowy sposób. napisałem coś takiego:

Kod: Zaznacz cały

wait 1
    reset strobol    - lewy stroboskop
    waitms 50
    set strobol
    wait 1
    reset strobol
    waitms 50
    set strobol
    wait 1
    wait 1
    reset strobop    - prawy stroboskop
    waitms 50
    set strobop
    wait 1
    reset strobop
    waitms 50
    set strobop
    wait 1
program ma migać na przemian diodami jak stroboskopy w samochodach rządowych, ale...
polecenie wait nie odlicza czasu jak trzeba. czemu?
między przełączaniem się stroboskopów z lewego na prawy tudzież odwrotnie nie ma tego delarowanego czasu 2sek.

- procek to attiny2313

a fusy są ustawione tak:
Załączniki
fusy.JPG

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 15 lis 2009, 9:09

$crystal 8000000 masz w programie?

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 15 lis 2009, 9:27

snow pisze:$crystal 8000000 masz w programie?
choroba, mam
$crystal = 1000000
juz zmieniam i zapodam co jest grane poz mianie.

EDIT:
po zmianie na
$crystal = 8000000 wszystko okazuje się być ok. czyli zwykła pomyłka a tyle kłopotu. dzienx.

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 15 lis 2009, 9:28

Zazwyczaj to jest powodem złego odmierzania czasu. Program nie wie co masz ustawione w sprzęcie zatem musisz to ustawić tak jak masz w rzeczywistości taktowany procesor.

Awatar użytkownika
RcTomek
Moderator
Posty: 243
Rejestracja: 27 wrz 2007, 21:15
Lokalizacja: Głogów / Wrocław

Post autor: RcTomek » 25 lis 2009, 5:43

Dorzucę jeszcze tylko, że polecenia z grupy wait są mało precyzyjne. Dokładne odmierzanie czasu powinno być zrobione na drodze przerwaniowej i przy okazji nie obciążamy wtedy ALU.

ODPOWIEDZ