0,5ms w Bascom
0,5ms w Bascom
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.
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
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
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ę.
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!
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"
Pozdrawiam!
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!
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!