18F4520 Afbryder, RTOS rådgivning

G

GrandAlf

Guest
18F4520 4MHz Intern OSC, 300 Baud TX kun vagthund brugt.

Jeg har et program, der skal lede efter en knap lav tryk på A5 ca hver 100ms.Da denne port / pin kan ikke bruge ext afbryder gerne port B, må jeg finde en anden metode.Jeg havde tænkt på at anvende en timer til at køre en check med jævne mellemrum, men er ikke sikker på hvilken der skal bruges, da jeg ikke ønsker at blande med vagthund eller seriel ud, ikke sikker på, hvordan impliment det heller.Jeg havde tænkt på at bruge CCS bygget i RTOS, men som den kaldte funktion kører i ca 5 sekunder jeg har forstået, at tidsplanen tid skulle være længere end den funktion tiden, dette betyder selvfølgelig, at scanning for en knap presse nogensinde 5 sekunder ville være ved siden af ubrugelig.Ikke brugt denne RTOS før, så hvad jeg tænkte var, at hvis jeg løb opgaven hver 100ms og kaldte den funktion, kontrolleres for hoppe og hvis ugyldig, afkast.Hvis det var en gyldig presse, kunne jeg så stoppe opgaven fra i funktion og genoptage det når du er færdig, hvilket giver de største program kører uden hverv skifter, eller kan den kun stoppes fra vigtigste.

Det ville være upraktisk at bruge polling i denne ansøgning, selv om det ikke ville være et stort problem, hvis vigtigste funktion standsede for varigheden af den kaldte funktion.Enhver rådgivning eller alternative forslag ville være meget velkomment.Tilføjet efter 3 timer 27 minutter:Jeg tror, jeg kan have misforstået CCS gennemførelse.Forudsat jeg har en funktion, der er lidt mere end en forsinkelse, og at jeg bruger en Rtos gerne Keil, ville jeg forvente at kunne skifte til det, siger hver 20ms, og det ville udøve sin timing, hvor den slap sidste gang, indtil færdiggørelse.Naturligvis ville der være en vis variation i timing skyldes at skifte.Som jeg forstår det i CCS, behøver du ikke få kontrollen tilbage, indtil funktionen er afsluttet.Dette synes ikke mere hensigtsmæssigt end at bruge en interrupt.Sikkert jeg skal have denne fejl, forklaringer er virkelig ikke klare det hele taget.Kan nogen bekræfte eller afkræfte?

 
Du kan bruge en timer, der er til at afbryde alle 100ms at kontrollere knappen.
Bare preload timeren så det afbryder på interval du skal bruge.Brug MPLAB sim til at kontrollere afbryde frekvens.

Den vagthund bruger sin egen rc timer og den serielle sin egen baudhastighed genetrator.

 
Tak for info.Har besluttet at afbryde ville være en bedre løsning, så er re-design af board til at bruge B0.Din rådgivning meget værdsat.

 

Welcome to EDABoard.com

Sponsor

Back
Top