0,5ms w Bascom

To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. 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
djlj24
-
Posty: 60
Rejestracja: 20 lis 2002, 21:15
Lokalizacja: Lublin
Kontakt:

0,5ms w Bascom

Post autor: djlj24 » 13 lip 2006, 11:43

Robię dość ciekawe urządzenie na 51 i stanąłem na pozornie prostym problemem. Jak w elegancki sposób zrobić opóźnienie 0,5ms - coś w rodzaju waitms (ale tu mam minimum 1 sekunda). Nie chciałbym używać pustej pętli a zaprzęganie timera spowoduje problem przy późniejszej próbie przeniesienia programu na AVR? Może ktoś zna elegancki sposób rozwiązania tego problemu. Już nawet myślałem o skorzystaniu z waitms ale zastąpienie kwarca szybszym a kompilowaniu na 2 razy wolniejszym ale to nie jest też zbyt eleganckie. Acha nie musi to wcale być dokładnie 0,5ms może być w pobliżu.

Awatar użytkownika
marcing
Użytkownik
Posty: 868
Rejestracja: 14 lut 2006, 14:13
Lokalizacja: z pociągu...
Kontakt:

Post autor: marcing » 13 lip 2006, 13:58

Proponowałbym jednak wykorzystać licznik(timer) - z przeniesieniem na inny uP nie będzie problemu, zmienisz tylko procedurę odpowiedzialną za obsługę przerwania i sposób konfiguracji timer'a. W zasadzie będzie to kilka linijek do wymiany - a więc żaden problem...

Sam korzystam z AVR-ków, a wiele rozwiązań opartych jest o '51 i PIC - więc trzeba się bawić w przenoszenie algorytmów, co jednak jest dość proste (gorzej z resztą programu ;) )

W przypadku pisania w BASCOM-e sama struktura programu zostanie zachowana - instrukcje są (prawie) takie same... A i tak będziesz musiał na AVR-ku dodać konfigurację portów...

Pozdrawiam!

Marcin

cyber
-
Posty: 12
Rejestracja: 24 lip 2005, 11:14

Post autor: cyber » 14 lip 2006, 8:56

Chyba jedynym sposobem bez użycia Timera jest zastosowanie wstawki asemblerowej. Tylko wtedy możesz sobie policzyć dokładnie (choć pewnie też nie do końca, bo BASCOM zmarnuje trochę czasu na skok do tej wstawki i na wyjście z niej i powrót do właściwego programu) Nie wiem czy w BASCOMIE jest w symulatorze licznik cykli zegara. Jeśli jest to możesz sobie sprawdzić ile cykli zabiorą te dodatkowe instrukcje. Z tego co wiem to w BASCOMIE jest też instrukcja waitus, do której podajesz opóźnienie w mikrosekundach. Jeśli nie zależy Ci na dokładności to zastosuj tą instrukcję.

Awatar użytkownika
marcing
Użytkownik
Posty: 868
Rejestracja: 14 lut 2006, 14:13
Lokalizacja: z pociągu...
Kontakt:

Post autor: marcing » 14 lip 2006, 12:06

cyber też ma dobrą propozycję - w zasadzie po zrobieniu wstawki asemblerowej z wymaganym opóźnieniem na innym uP wymienisz tę wstawkę...

Oczywiście - każde rozwiązanie ma swoje zalety, jak i wady. Jednak bez prób nie będziesz wiedział "co i z czym się je" ;) Warto sprawdzić obie możliwości...

Pozdrawiam!

rdt
-
Posty: 10
Rejestracja: 28 sie 2005, 11:20
Lokalizacja: mazowieckie

Post autor: rdt » 16 lip 2006, 23:40

jedno małe ale - ja bym wstaił licznik a jezeli sie bedziesz przesiadał z programikiem na AVR-ka to tam masz instrukcje waitus

Awatar użytkownika
marcing
Użytkownik
Posty: 868
Rejestracja: 14 lut 2006, 14:13
Lokalizacja: z pociągu...
Kontakt:

Post autor: marcing » 17 lip 2006, 9:41

rdt - w BASCOM-ie 8051 też jest taka instrukcja.
Ale zastosowanie liczników nie będzie przeszkadzało w wykonywaniu reszty programu.

Chociaż i to rozwiązanie też jest skuteczne - do prostych programów się nadaje

djlj24 - czy masz polski help do BASCOM-a? Jest na Elportalu, a autor to ZbeeGin (wykonał bardzo dobrą pracę - warto to docenić i korzystać)

Pozdrawiam!

ODPOWIEDZ