resenje zadatka
I ako sam na ispitu rekao kako treba da se uradi zadatak
gotovo niko nije uradio kako treba.
Za buduce rokove (I DOMACE ZADATKE):
Potrebni podaci:
niz flegova - SCHEDULE, takav da svakoj proceduri
odgovara po 1
niz flegova - ACTIVE, takav da svakoj proceduri
odgovara po 1
1. Prekidna rutina koja meri 1ms:
- uvecava jednu globalnu prmenljivu koja se recimo zove
TEK_VREME, a koja nam je neophodna za merenje raznih
intervala vremena
- aktivira SCHEDULE fleg za sledecu proceduru. Ukoliko je
ACTIVE za tekucu jos uvek postavljen, moze prolongirati
aktiviranje za jednu iteraciju (1ms)
2. Svaka procedura kada pocne izvrsavanje postavlja svoj
ACTIVE flag na jedinicu.
- kada zapocne izvrsavanje postavlja svoj ACTIVE fleg na 1
- ukoliko treba da proveri koliko je proteklo vremena od
prethodnog izvrsavanja oduzima od TEK_VREME vrednost
promenjive, recimo MARKICA_VREME.
- MARKICA_VREME se nakon toga azurira MARKICA_VREME <- TEK_VREME
- u zavisnosti od proteklog vremena i dodatnih flegova
procedura zavrsava svoj posao.
- ukoliko procedura ne odmah da zavrsi posao (recimo mora
nesto da ceka) moze da sacuva svoje stanje u nekoj
promenljivoj i to kasnije da upotrebi
- na kraju brise SCHEDULE i ACTIVE fleg.
npr. procedura za startovaranje:
- proverava da li ima nesto u prihvatnom baferu sa
serijskog porta
- ukoliko ima da li je u pitanju komanda za startovanje
- ako nije zavrsava posao
- ako jeste vrsi inicijalizaciju
3. Glavni program se vrti u petlji. proverava SCHEDULE flegove
i u zavisnosti od potrebe aktivira proceduru odgovarajucu
proceduru.
4. Prijem podataka sa seriskog porta obavlja se u prekidnoj
rutini, tako da glavni program ne treba o tome da vodi racuna.
Prekidna rutina prima bajt po bajt. Kada se detektuje kraj
prijema postavlja jedan fleg koji kaze da ima nesto u prijemnom
baferu i eventualno duzinu poruke.
5. Slanje se obavlja tako sto funkcija koja treba nesto da
salje proveri fleg koji kaze da je bafer za slanje prazan.
Zatim upise poruku u za bafer slanje i postavi FLAG da ima
nesto u baferu i eventualno duzinu poruke.
Ovo je jednostavna realizacija. Procedure su atomske, tj.
kada jednom zapocne izvrsavanje TIME SCHEDULER ne moze da je
prekine. Time su izbegnuti problemi sinhronizacije i cuvanja
konteksta.
Pozdrav
Gvozden
gotovo niko nije uradio kako treba.
Za buduce rokove (I DOMACE ZADATKE):
Potrebni podaci:
niz flegova - SCHEDULE, takav da svakoj proceduri
odgovara po 1
niz flegova - ACTIVE, takav da svakoj proceduri
odgovara po 1
1. Prekidna rutina koja meri 1ms:
- uvecava jednu globalnu prmenljivu koja se recimo zove
TEK_VREME, a koja nam je neophodna za merenje raznih
intervala vremena
- aktivira SCHEDULE fleg za sledecu proceduru. Ukoliko je
ACTIVE za tekucu jos uvek postavljen, moze prolongirati
aktiviranje za jednu iteraciju (1ms)
2. Svaka procedura kada pocne izvrsavanje postavlja svoj
ACTIVE flag na jedinicu.
- kada zapocne izvrsavanje postavlja svoj ACTIVE fleg na 1
- ukoliko treba da proveri koliko je proteklo vremena od
prethodnog izvrsavanja oduzima od TEK_VREME vrednost
promenjive, recimo MARKICA_VREME.
- MARKICA_VREME se nakon toga azurira MARKICA_VREME <- TEK_VREME
- u zavisnosti od proteklog vremena i dodatnih flegova
procedura zavrsava svoj posao.
- ukoliko procedura ne odmah da zavrsi posao (recimo mora
nesto da ceka) moze da sacuva svoje stanje u nekoj
promenljivoj i to kasnije da upotrebi
- na kraju brise SCHEDULE i ACTIVE fleg.
npr. procedura za startovaranje:
- proverava da li ima nesto u prihvatnom baferu sa
serijskog porta
- ukoliko ima da li je u pitanju komanda za startovanje
- ako nije zavrsava posao
- ako jeste vrsi inicijalizaciju
3. Glavni program se vrti u petlji. proverava SCHEDULE flegove
i u zavisnosti od potrebe aktivira proceduru odgovarajucu
proceduru.
4. Prijem podataka sa seriskog porta obavlja se u prekidnoj
rutini, tako da glavni program ne treba o tome da vodi racuna.
Prekidna rutina prima bajt po bajt. Kada se detektuje kraj
prijema postavlja jedan fleg koji kaze da ima nesto u prijemnom
baferu i eventualno duzinu poruke.
5. Slanje se obavlja tako sto funkcija koja treba nesto da
salje proveri fleg koji kaze da je bafer za slanje prazan.
Zatim upise poruku u za bafer slanje i postavi FLAG da ima
nesto u baferu i eventualno duzinu poruke.
Ovo je jednostavna realizacija. Procedure su atomske, tj.
kada jednom zapocne izvrsavanje TIME SCHEDULER ne moze da je
prekine. Time su izbegnuti problemi sinhronizacije i cuvanja
konteksta.
Pozdrav
Gvozden
Previous by date: rezultati za dan-dva ..
Next by date: mips- rezultati
Previous by thread: rezultati za dan-dva .. Next by thread: mips- rezultati
Previous by thread: rezultati za dan-dva .. Next by thread: mips- rezultati