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 - opóżnienia mikrosekundowe

m0rderca 21 Mar 2007 20:00 963 4
  • #1
    m0rderca
    Level 10  
    Witam
    Piszę oprogramowanie silnika spalinowego z wielopunktowym wtryskiem paliwa do poczciwego fiata 126P posiadam układ AT89C51 więc piszę go w Bascom 8051 a mój problem powstał taki że po przecytaniu pliku pomocy nieznalazłem opuznienia czasu w mikrosekundach w Bascom AVR takie opuznienie jest realizowane poleceniem Waitus a w Bascom 8051 tego polecenia niema a jak wiadomo silniki kręcą się z duzymi prędkościami obrotowymi i czas trwania jednego obrotu wynosi naprzykład 1milisekunda i np.34 mikrosekundy. Jestem jeszcze laikiem w pisaniu dopiero zaczynam wiec proszę o pomoc,i jeszcze jedno pytanie jaka komendą ustawić czas trwania impulsu.
    Pozdrawiam i proszę o pomoc
  • #2
    szymtro
    Level 30  
    Powiem prawdę.
    Masz za małą wiedzę żeby uzyskać jakiekolwiek pozytywne efekty. Może zacznie kichać i prychać podczas próby odpalenia ale na tym się skończy w twoim przypadku.
    Popatrz najpierw tu:
    http://www.kubagert.prv.pl/
    I najpierw spróbuj zrobić dokładnie to samo a potem zrobisz sobie własny.
  • #3
    m0rderca
    Level 10  
    Dzięki za linka ale tam praktycznie nic niema co by mnie interesowało po pierwsze kody zródłowe są napisane w asembleze a mi daleko do asemblera a zresztą tam jest tylko oprogramowanie do silnika z jednopunktowym wtryskiem gaznikowym. No ale cuż zadałem 2 pytania w pierwszym poscie, i zadam kolejne czy znajdzie się ktos kto na te pytania mi odpowie.
  • #4
    john_t
    Level 29  
    Rzeczywiście w bascomie 8051 nie można za pomocą komendy odmierzyć czasu krótszego niż 1ms. Ale to nie tragedia można sobie z tym poradzić programowo. Trzeba tylko dokładnie liczyć cykle zegarowe wykonywanych komend i ich czas. W symulatorze bascoma na dolnym pasku jest taki podgląd. Ponieważ niektóre komendy wykonywane są w jednym cyklu procesora, w zasadzie dysponujemy rozdzielczością czasu (teoretycznie do 1-go cyklu). Należy pamiętać że zależy to od zastosowanego kwarcu a w AT89C... 1 cykl zegarowy powstaje w wyniku 12 cykli kwarcu. Czyli dla kwarcu 12MHz częstotliwość wewnętrznego zegara procka wynosi 1MHz.
    No zakończenie prosty przykład zastępujący oczekiwanie czyli Waitus 98,741 µs

    Dim A As Byte

    $crystal = 11059200

    Do
    Call Waitus
    Loop

    Sub Waitus
    A = 0
    While A < 10
    Incr A
    Wend
    End Sub

    Przejście włącznie z call Waitus, przez sub Waitus na loop (z wyłączeniem loop) skończywszy wynosi dla dokładnie 93 cykle zegara co dla kwarcu 11059200 Hz wynosi 98,741 &micro;s.
  • #5
    starob
    Level 28  
    Znajomość samego Basica (Bascom) nadaje się tylko do pisania programów mrugających ledami, a i tak jest z tym problem, o czym świadczy ilość pytań na forum. Do pomiarów czasów usekundowych można zastosować timery z zasobów sprzętowych 51.

    opóźnienie na dole strony jest przycisk <Pisownia>