Mérési az impulzus időtartamának keresztül tmr0 - fórum mikro-chip
Mérési az impulzus időtartam keresztül TMR0
Uram, lefogadom egy hét alatt a kódot, azt nem lehet mérni.
Controller 16F648A 20MHz
Probléma, hogy az impulzushosszat megmérni (felfutó élei közötti) alkalmazásával TMR0. TMR0 töltése a belső oszcillátor.
A következő INT az élvonalban.
előosztóval 01:16
Vizsgálati impulzus időtartama 400 ezredmásodperc (azaz 3,2 ms-os lépést számlák 400 ezredmásodperc, és az időzítő 125 kell számolni (7D)).
Tervezett algoritmus:
1. kapni csapdák a INT, győződjön meg az INT és nullázza TMR0 túlcsordulás zászló TMR0 bit változó megjegyzi, hogy szakítsa meg az „első” kilépés megszakítás, hogy a következő, és terhelik a TMR0 megszakítja a következő felfutó éle.
2. Kap egy „második” a INT megszakítás, győződjön meg az INT, TMR0 értéket ír a tömb, távolítsa el a jelölést az „első megszakítás, a kimenet nem engedi tovább megszakítás.
3. A kimenő értékét TMR0 tömb LCD elemek
4. időzítő lejár, visszaállítja a túlcsordulás zászló időzítő lehetővé teszi az INT és menj a P1.
és 8-szor, amíg a tömb elemei nem kell tölteni a TMR0.
A probléma az, hogy a kapott érték TMR0 rendkívül különböznek egymástól, állandó impulzus időtartamát.
Vagy TMR0 túlcsordul egy bizonyos ponton, de nem lehet, vagy a vezérlő „proschelkivaet” második front, és megy a megszakítás a 3., 4. és. front, és az időzítő számít.
Annak ellenére, hogy nem kell, megszakítást teljesül 24 ms.
Ha egy darab kód van törve megszakítás:
ő szakítsa felvezető:
Bit műveletek nem szeretem megszakítása, de nem tudom, hogyan mást fogni két egymást követő első széle.
Prompt rázta meg a problémát, a művelet egyszerűnek tűnik.