Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Waitus w BascomAVR

Awatar użytkownika
ScauT
-
-
Posty: 62
Rejestracja: 3 maja 2003, o 17:14
Lokalizacja: Legnica
Kontaktowanie:

Waitus w BascomAVR

Postautor: ScauT » 19 gru 2004, o 11:25

witajcie,
moze portaficie mi pomoc.
piszac instrukcje np.Waitus 6000 (lub inna wartosc) w rzeczywistosci uzyskuje opoznienie duzo wieksze dla (6000 - ok.3,5sek).
uzywam AtMega8 z 8MHz kwarcem.
program jest napisany prawidlowo (tzn. usuniete instrukcje $sim, zadeklarowany odpowiedni kwarc i plik rejestrow itd..
pzd.

Arrek
-
-
Posty: 117
Rejestracja: 18 wrz 2003, o 20:41
Lokalizacja: wawa

Postautor: Arrek » 19 gru 2004, o 11:42

Dla wartosci mniejszych od 256 tez jest zle?
Rzuc fragment kodu.

Awatar użytkownika
ScauT
-
-
Posty: 62
Rejestracja: 3 maja 2003, o 17:14
Lokalizacja: Legnica
Kontaktowanie:

re

Postautor: ScauT » 19 gru 2004, o 11:54

tak tez,
w bascomie pisze nie od dzis i wszystkie mozliwosci sprawdzilem.
fragment kodu to heheh,
Set D1
Waitus 6000
Reset D1

po zachowaniu sie programu stwierdzam ze zle sa przeliczane wartosci w instrukcji opoznienia, bo Waitms i Wait tez zle dziala...
timerow nie moge wykorzystac bo juz maja swoja funkcje...
pzd

Arrek
-
-
Posty: 117
Rejestracja: 18 wrz 2003, o 20:41
Lokalizacja: wawa

Postautor: Arrek » 19 gru 2004, o 11:58

Uzywasz jakichs przerwan, np. od tych timerow?
Jesli tak to tu moze byc przyczyna. Myslalem, ze tak dzieje sie z wylaczonymi wszystkimi przerwaniami. Choc nawet z nimi wydluzenie o 3 rzedy wielkosci jest dziwne - musialyby sie wywolywac czesciej nic co 6ms i trwac odpowiednio dlugo aby zrobic opoznienie 3,5s (ale to moze byc - zalezy od tego co jest w przerwaniu)

Awatar użytkownika
ScauT
-
-
Posty: 62
Rejestracja: 3 maja 2003, o 17:14
Lokalizacja: Legnica
Kontaktowanie:

re

Postautor: ScauT » 19 gru 2004, o 12:13

timery i przerwania w tym czasie nie pracuja,
ale sprawdzilem teraz inaczej, wycialem caly program i pozostalo tylko
'$sim
$regfile = "m8def.dat"
$crystal = 8000000
Config Watchdog = 1024
Stop Watchdog

'konfiguracje i aliasy

Do
Set D3
Waitms 100
Reset D3
Waitms 100
Loop
dioda powinna intensywnie mrugac, natomiast mruga ok 7-8 razy wolniej, czyli okres przynajmiej 1,5sek.

radzio
Moderator
Moderator
Posty: 965
Rejestracja: 13 maja 2003, o 10:33
Lokalizacja: Sosnowiec
Kontaktowanie:

Postautor: radzio » 19 gru 2004, o 15:01

a czy masz właściwie Fuse Bity ustawione? Bo domyślnie mega8 pracuje chyba z wewnętrznym generatorem 1MHz.

Awatar użytkownika
ScauT
-
-
Posty: 62
Rejestracja: 3 maja 2003, o 17:14
Lokalizacja: Legnica
Kontaktowanie:

re

Postautor: ScauT » 19 gru 2004, o 15:09

he, a widzisz...
i tutaj jest chyba rozwiazanie mojego problemu.
z avrami nie mialem jeszcze blizszego kontaktu i dlatego tak wyszlo..
dzieki
pozdrawiam

sablik
-
-
Posty: 101
Rejestracja: 7 lip 2004, o 06:18
Lokalizacja: Czaniec
Kontaktowanie:

Postautor: sablik » 20 gru 2004, o 06:46

Wydaje się mi że ta instrukcja nie jest ściśle odliczana, dla dokładnych instrukcji lepiej użyć timera.

Awatar użytkownika
ScauT
-
-
Posty: 62
Rejestracja: 3 maja 2003, o 17:14
Lokalizacja: Legnica
Kontaktowanie:

re

Postautor: ScauT » 20 gru 2004, o 16:33

zgadza sie..., nie chodzilo mi o dokladne odliczanie (nie czytales postu chyba)
PROBLEM ROZWIĄZANY!!!
dzieks
pzd.

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 37 gości