Laikmačiai ir nustoja

I

Impakt

Guest
Norėčiau suprasti laikmačiai ir interupts darbo (nesvarbu MCU).Žinau, kad laiko žymekliai yra registrai, kurių vertė didėja kiekvieną kartą nurodymas bus įvykdytas.Kas atsitinka, kai ji pasiekia didžiausią vertę?Ir kada interrput vyksta?Kas atsitinka po to?

 
Kai laikmatis pasiekia didžiausią vertę (tai FFH (255d) yra 8 bitų, ffffh (65535d) 16 bitų laikmatį) overflow įvyksta ir ji prasideda nuo pradžios (00h). Jei įjungta jos nutraukti, ji šokinėja į pertraukti Vektorius adresas overflow occurs.By Tokiu būdu galima paleisti kai kurių konkrečiu laiku intervals.That "kodą ai pagrindinio paaiškinimas

 
coshkun rašė:

.By that way you can run some code at specific time intervals.
Jei įjungta jos nutraukti, ji peršoka į pertraukimo vektoriaus adresas overflow įvyksta.
Šiuo būdu galima paleisti kai kurių specifinių laiko intervalais kodas.
 
Nežinau, kokia kalba use.In surinkimas (pvz.: 8051), į programų galite pamatyti, kad linijos pradžia:
org 00h
sjmp pradžia
org 0bh
sjmp laikmatis

0bh yra timer0 Pertraukties vektoriaus address.When timer0 perpildymo, PC šokinėja į 0bh adresas automaticly ir paleidžia "sjmp laikmatis" linija.
Turėtumėte studijų pertraukia pirma.

 
Hi Impakt,
Jei atsimenu teisingai, galite naudoti PIC micro, taip?Jei taip yra, jūsų Pertraukties vektorius (po 12Fxx ir 16Fxx įtaisai) yra 0x04.18Fxxx yra daugiau nei viena, nes ji yra mažo ir didelio prioriteto pertraukia.(Manau, 0x04 ir 0x08, bet tai tik iš atminties, duomenų lapą parodys ...)
Turite tada, parašykite savo Pertraukties aptarnavimo kodą ir įdėkite jį į tą vektorių.Jūs taip pat turite įjungti interrups norite naudoti - ty laikmatis perkrautas, kaitos PIN, serRx, TX, ir tt ir kad pasaulinė pertraukia.Duomenų lapą savo konkrečius dalis duos jums, kaip tai padaryti detales.
Aš pamiršti, jei jūs naudojate surinkimas, arba aukštesnio lygio kalba.
Citata:

Ar galite tiksliau prašome?
Kada nutraukti įjungia?
Kas yra Pertraukties vektoriaus adresą?
Ačiū!
 
I'm using CCS C šį projektą ir aš sukurti nedidelį robotą kodas grindžiamas kodas, kurį gamintojas.Turiu kažką panašaus:
Kodas/ / For Tvarkaraštis 0 Laikmatis

setup_timer_0 (RTCC_DIV_4);

set_timer0 (0);

enable_interrupts (INT_TIMER0);

....

# INT_TIMER0

void Scheduler_Interrupt (void) / / Vidaus Task Manager, Interrupt kas 200 mumis

(

....

)

 
Hello Impakt

Atsiprašau už tai, atsakymo į savo klausimą.
i'have patį klausimą, bet MSP430

Kodas

# pragma vector = PORT1_VECTOR / / PORT_1 Interrupt Service Routine (ISR)

__interrupt tuščia PORT1_ISR (tuščia)
 
Hi Impakt,

Gerai, aš bandysime atsakyti ir viskas:
Citata:

Ši funkcija tuščia Scheduler_Interrupt (tuščia) bus vykdomas Everytime laikmatis 0 perpildymo?

 
Kaip minėjau anksčiau, robotas turi 8 infraraudonųjų spindulių jutikliai: 6 kliūčių išvengimo ir 2 eilutės po.Jūs galite pamatyti ne http://www.k-team.com/kteam/index.php?site=1&rub=3&upPage=148&page=16&version=EN robotas.
Nesuprantu algoritmas.Štai kodą sudaro vieną zoną:
Kodas

atveju FrontZone:

set_adc_channel (FrontLeft);

delay_us (12);

__IR_Light [FrontLeft] = read_adc ();

set_adc_channel (FrontRight);

delay_us (12);

__IR_Light [FrontRight] = read_adc ();

set_adc_channel (priekyje);

delay_us (12);

__IR_Light [Priekinės] = read_adc ();

output_high (PIN_B2);

delay_us (300);

__IR_Proximity [Front] = __IR_Light [Priekinės] - read_adc ();

set_adc_channel (FrontLeft);

delay_us (12);

__IR_Proximity [FrontLeft] = __IR_Light [FrontLeft] - read_adc ();

set_adc_channel (FrontRight);

delay_us (12);

__IR_Proximity [FrontRight] = __IR_Light [FrontRight] - read_adc ();

output_low (PIN_B2);

break;

 
Labas,
Na išvaizda tai iš jungiklis pareiškimą, kažkas panašaus įjungti davikliu rodmenis, ir šiuo atveju, FrontZone, atrodo, kad jis prasideda AD konvertavimo telefonu funkcija set_adc_channel (whichSensor)
kuris parenka tinkamą jutiklis skaityti.
Tada parduotuvėse masyve __IR_Light literatūra [n] vėlavimą dėl rašybos,
ten rašoma Kitas jutiklį.
Jis tris davikliai priekyje, o už vėlavimą (300 mumis,), tada nustatyti PIN B2 aukštas.Kas šis PIN?I'm guessing tai IR kolektorius?Tada ji lygina Ankstesnis svarstymas saugomi __IR_Light [n] su nauja matavimo ir parduotuvėmis, todėl skirtumas masyvas __IR_Proximity [N]
Tada jis pereina į kitą jutiklis pateikti kitą palyginimą.

Tikiuosi, kad tai daro prasme, tai taip vėlai, ir man tikrai reikia uždaryti ją.Aš grįšiu ryte daugiau.

Oi, aš paėmė į puslapį galite nurodė, bet nesu tikras, kuris produktas / šaltinio kodas dirbate su pažvelgti.Galvoju turite savo kodą čia?Jei taip, tai aš į ją pažvelgti.Jei aš žinojau, kuri BOT, galbūt galėtų paaiškinti jo daug geriau.

Linkėjimai,
Robertas

 
Hai

Vektorius nieko, bet iš anksto apibrėžtos programos atminties (paprastai prasideda vietą), kuri yra nurodyta iki lusto gamintoją.kuris cannnot būti pakeista programuotojas
pirmiausia ir svarbiausia yra reset vektorius, kai sistema bus skaityti, pirmą kartą įjungus, arba reset.we negali išlaikyti šią vietą blank.next laikas interruprvector.the nutraukti nieko, bet kažko informuoti purticular situation.when sistema Yra Nr interrupt.the sistema bus atlikti įprastines operacijas, ir kai atsiranda nutraukti sistemų controllwill Peršokti į currusponding reset vektorius, kai turime programa šiuo purticular interrupt.this programa tirpalas vadinamas nutraukti paslaugų įprastinių (ISR). po complition nuo isr, sistema bus grįžti prie ankstesnės vietos ir toliau, ką jis darė

tikiuosi, kad tai bus aišku UR doubts.if ne PLS Feelfree paštu dar kartą, mes R here to help upadėkotisunish

 
Nesuprantu šią eilutę:
Kodas

__IR_Proximity [Front] = __IR_Light [Priekinės] - read_adc ();
 
Labas,
Citata:

Kodas

__IR_Proximity [Front] = __IR_Light [Priekinės] - read_adc ();Jei __IR_Light [Priekinės] yra vertė raudona nuo ADC kanalo read_adc (), kad tai bus ne rezultatas yra 0 (nulis)?
Tada nebus vertė ant HyperTerminal būti 0?

 

Welcome to EDABoard.com

Sponsor

Back
Top